Multiplexor de 3 a 1 Cuádruple con una GAL Se ilustra el diseño de un multiplexor de tres entradas a una sola salida. La multiplexión significa transmitir un número grande de entradas con información digital sobre un número menor de líneas. Se tiene que un multiplexor digital recibe señales booleanas y elige un subconjunto de ellas para enviarlas hacia la salida. El multiplexor es un circuito lógico combinatorio. El multiplexor es en esencia un selector de datos. En nuestro caso recibimos tres grupos de señales de cuatro bits cada uno de ellos. La salida es un grupo de cuatro bits. Dos entradas selectoras eligen a cual de los grupos conducir hacia la salida. La siguiente figura muestra el diagrama simplificado del diseño. Especificación del Diseño Figura 1. Diagrama a bloques del mux 12 a 4. De acuerdo con el diagrama se reciben tres entradas a, b y c, de cuatro bits cada una de ellas, las señales de selección S1 y S0 se emplean para elegir a una de ellas, según la siguiente tabla. La salida y se genera de acuerdo a la tabla: S1 S0 y 0 0 a 0 1 b 1 0 c 1 1 a XOR b Para mostrar la flexibilidad que brinda la GAL para la última combinación se envía una operación booleana que se realiza sobre el primer grupo y el segundo grupo, esto es hace la operación lógica sobre cuatro parejas de bits. En total son catorce líneas de entrada y cuatro líneas de salida. La siguiente figura exhibe al programa fuente de ABEL que implementa al diseño. Prof.. S. Saucedo 1 ICE/2007
MODULE mux3_1 TITLE 'Multiplexor 3 a 1 cuadruple' "entradas a0..a3 pin 1..4; b0..b3 pin 5..8; c0..c3 pin ; s1,s0 pin 13,14; selectoras " SALIDAS y0..y3 pin 17..20; H = [1,1,1,1]; L = [0,0,0,0]; X =.x.; elige = [s1,s0]; y = [y3..y0]; a = [a3..a0]; b = [b3..b0]; c = [c3..c0]; Z = [.z.,.z.,.z.]; equations when (elige == 0) then y = a; when (elige == 1) then y = b; when (elige == 2) then y = c; when (elige == 3) then y = a$b; test_vectors ([elige, a, b, c] -> y) [ 0, 1, X, X] -> 1;"elige = 0, conduce lineas a hacia la salida [ 0, 7, H, L] -> 7; [ 0, 5, H, L] -> 5; [ 1, H, 3, H] -> 3;"elige = 1, conduce lineas b hacia la salida [ 1, 4, 9, H] -> 9; [ 1, L, 6, L] -> X; [ 2, L, L, 3] -> 3;"elige = 2, conduce lineas c hacia la salida [ 2, H, H, 6] -> X; [ 2, L, L, 11] -> 11; [ 3, H, H, 0] -> L;"elige = 3, conduce a XOR b hacia la salida [ 3, 3, 6, L] -> 5; [ 3, H, L, 0] -> H; END Figura 2 Listado del módulo que implementa el diseño. Método del Diseño La figura 3 exhibe un nuevo diagrama a bloques para el mismo multiplexor tras que los conjuntos han sido usados para agrupar a las señales. Doce de las entradas se han agrupado en los conjuntos a, b, y c. Las salidas y las líneas selectoras sea agrupan en los conjuntos, y y elige, respectivamente. Tal agrupamiento de señales en conjuntos toma lugar en la sección de declaraciones del file fuente, listado en la figura 2. Cuando los Prof.. S. Saucedo 2 ICE/2007
conjuntos han sido ya declarados, la especificación del diseño se hace con las siguientes cuatro ecuaciones que usan postulados WHEN-THEN. when (elige == 0) then y = a; when (elige == 1) then y = b; when (elige == 2) then y = c; when (elige == 3) then y = a$b; La expresión relacional (==) dentro del paréntesis produce una expresión que se evalúa como verdadera o falsa, dependiendo en los valores de s0 y s1. Vectores de Prueba Figura 3. Diagrama a bloques más desglosado del MUX. Los vectores de prueba para este diseño se especificaron en términos de los conjuntos de entrada, salida, y de selección. Notar que los valores para un conjunto se pueden especificar mediante números decimales y mediante otros conjuntos. Las constantes H y L, usadas en los vectores de simulación, fueron declaradas como conjuntos de cuatro bits conteniendo sólo unos o sólo ceros. La figura 4 ilustra la distribución de patitas que hace de la GAL usada el software de desarrollo, el isplevel starter de Lattice. Prof.. S. Saucedo 3 ICE/2007
Figura 4 Asignación de pines para la GAL. Finalmente, se ofrece la simulación de los vectores de prueba, en la figura 5. Prof.. S. Saucedo 4 ICE/2007
Figura 5 Diagrama en el tiempo de la operación simulada del MUX. El multiplexaje permite ahorrar energía, pines y cableado en muchas aplicaciones. En algunos casos dos o más multiplexores se encapsulan en un paquete IC, en cuyo caso las señales selectoras son independientes entre sí, no como en nuestro caso. Problema: La GAL ya grabada con el diseño se alambra como se muestra a continuación: Figura 6 Conexionado del multiplexor. Cuál es la tabla de verdad para la salida Z en función de las variables de entrada S1, S0, D y E Prof.. S. Saucedo 5 ICE/2007