Aprende › Tema 8
Multiplexores, decodificadores y codificadores explicados
Lectura de 8 min · Equipo bitGateLab
Los bloques combinacionales medianos son las piezas con las que se arma casi cualquier sistema digital: el multiplexor elige un dato entre varios, el demultiplexor reparte un dato hacia un destino, el decodificador activa una sola línea según un número binario y el codificador hace lo contrario. Aquí vas a ver sus ecuaciones, sus tablas de verdad y dos aplicaciones que aparecen en todos los exámenes: implementar una función lógica con un multiplexor y diseñar un decodificador para display de 7 segmentos.
El multiplexor (MUX)
Un multiplexor de 2n entradas de datos tiene n entradas de selección y una salida. El número binario en las líneas de selección indica cuál entrada de datos pasa a la salida. El más sencillo es el MUX 2 a 1:
Y = S·I0 + S·I1
Con S = 0 la salida copia I0; con S = 1 copia I1. El MUX 4 a 1 usa dos líneas de selección S1 S0 y cada entrada de datos se multiplica por el minitérmino de selección que le corresponde:
Y = S1·S0·I0 + S1·S0·I1 + S1·S0·I2 + S1·S0·I3
| S1 | S0 | Y |
|---|---|---|
| 0 | 0 | I0 |
| 0 | 1 | I1 |
| 1 | 0 | I2 |
| 1 | 1 | I3 |
Cada término es una AND de la entrada de datos con las líneas de selección (directas o negadas), y todas se juntan en una OR.
Implementar una función con un MUX
Como el MUX ya contiene todos los minitérminos de sus variables de selección, sirve como "función programable". Con un MUX de 2n entradas puedes realizar cualquier función de n variables poniendo 0 o 1 en cada entrada de datos. Aún mejor: con el mismo MUX puedes hacer una función de n + 1 variables si conectas la variable sobrante (o su negación) a las entradas de datos.
Ejemplo: realiza F(A, B, C) = Σm(1, 2, 6, 7) con un MUX 4 a 1, usando A y B como selección (A = S1, B = S0).
- Agrupa la tabla de verdad por pares con el mismo valor de A B y mira cómo depende F de C.
- AB = 00: m0 = 0 (C = 0), m1 = 1 (C = 1). F = C, así que I0 = C.
- AB = 01: m2 = 1 (C = 0), m3 = 0 (C = 1). F = C, así que I1 = C.
- AB = 10: m4 = 0, m5 = 0. I2 = 0.
- AB = 11: m6 = 1, m7 = 1. I3 = 1.
Comprobación con A = 0, B = 1, C = 0 (minitérmino 2): la selección 01 elige I1 = C = 1. Correcto, m2 pertenece a la función.
El demultiplexor y el decodificador
El demultiplexor (DEMUX) 1 a 4 toma un dato D y lo envía a una de cuatro salidas según S1 S0; las demás quedan en 0: Y0 = D·S1·S0, Y1 = D·S1·S0, Y2 = D·S1·S0, Y3 = D·S1·S0.
Si en el DEMUX fijas D = 1 y lo llamas "habilitación", obtienes un decodificador: n entradas y 2n salidas, de las cuales solo una está activa, la que corresponde al número de entrada. Un decodificador 3 a 8 genera los 8 minitérminos de tres variables. Por eso cualquier función de tres variables se arma con un decodificador y una compuerta OR que junte las salidas de sus minitérminos.
Ejemplo: sumador completo con un decodificador 3 a 8. Entradas A, B y Cin.
- Suma S = Σm(1, 2, 4, 7): OR de 4 entradas con las salidas Y1, Y2, Y4, Y7.
- Acarreo Cout = Σm(3, 5, 6, 7): OR de 4 entradas con Y3, Y5, Y6, Y7.
Revisa un caso: A = 1, B = 1, Cin = 0 es el número 110 = 6. Solo Y6 se activa; Y6 no está en la OR de S (S = 0) pero sí en la de Cout (Cout = 1). Efectivamente 1 + 1 + 0 = 10 en binario.
El codificador con prioridad
El codificador hace la operación inversa: de 2n líneas entrega el número binario de n bits de la línea activa. El problema es qué hacer si se activan dos a la vez; la solución práctica es el codificador con prioridad, que entrega el número de la línea activa más alta. Para 4 entradas D3 (la de mayor prioridad) a D0:
Y1 = D3 + D2, Y0 = D3 + D2·D1, V = D3 + D2 + D1 + D0
La salida V ("válido") indica que hay al menos una entrada activa; sin ella no podrías distinguir "D0 activa" de "ninguna activa", porque ambas dan Y1 Y0 = 00. Prueba con D2 = D1 = 1: Y1 = 1 y Y0 = 0 + 0·1 = 0, o sea 10 = 2. Gana D2, como debe ser.
Decodificador BCD a 7 segmentos
Un display de 7 segmentos tiene un LED por segmento. El decodificador recibe un dígito BCD (A B C D, con A como bit más significativo) y enciende los segmentos que dibujan ese dígito. Para un display de cátodo común, 1 significa segmento encendido:
| Dígito | ABCD | a | b | c | d | e | f | g |
|---|---|---|---|---|---|---|---|---|
| 0 | 0000 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0001 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 2 | 0010 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 3 | 0011 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 4 | 0100 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 5 | 0101 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
| 6 | 0110 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 7 | 0111 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 8 | 1000 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 9 | 1001 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
Los códigos 1010 a 1111 no son BCD válidos, así que se tratan como condiciones "no importa" (X) en el mapa de Karnaugh. Esto simplifica mucho cada segmento.
Segmento a: vale 0 solo en los dígitos 1 y 4. En el mapa de 4 variables, con X en 10 a 15, los grupos más grandes son: A (8 celdas con las X), C (8 celdas), B·D (minitérminos 5, 7, 13, 15) y B·D (las cuatro esquinas: 0, 2, 8, 10).
a = A + C + B·D + B·D
Comprueba el 4 (0100): A = 0, C = 0, B·D = 1·0 = 0, B·D = 0·1 = 0. Resultado 0: el segmento a queda apagado, correcto.
Si el display es de ánodo común, cada segmento se enciende con 0, así que todas las salidas se invierten.
Errores comunes
- Invertir el orden de las líneas de selección: si S1 y S0 se cruzan, la entrada I1 se intercambia con I2 y la función queda mal.
- Olvidar que muchos decodificadores tienen salidas activas en bajo y usar una OR donde va una NAND.
- Diseñar un codificador sin prioridad y sin salida de válido, que entrega 00 tanto para "D0 activa" como para "nada activo".
- Mezclar la tabla de cátodo común con un display de ánodo común: se encienden justo los segmentos contrarios.
- No aprovechar las combinaciones 1010 a 1111 como "no importa" y terminar con ecuaciones del doble de grandes.
Pruébalo en el simulador
Compara la tabla de verdad de la función con la versión hecha con multiplexor.
- Crea una tabla de verdad de tres entradas A, B, C y marca F = 1 en las filas 1, 2, 6 y 7.
- Coloca en el editor un multiplexor de 4 a 1 (o ármalo con cuatro AND, dos NOT y una OR de cuatro entradas) y conecta A y B a la selección.
- Conecta C, la negación de C, un 0 fijo y un 1 fijo a las entradas de datos, en ese orden.
- Cambia las entradas recorriendo las ocho combinaciones y observa que la salida coincide con la tabla.
- Repite con el segmento a del display: captura su columna en una tabla de 4 variables, marca las filas 10 a 15 como X y revisa los grupos que propone el mapa de Karnaugh.
Ejercicios
- Realiza F(A, B, C) = Σm(0, 3, 5, 6) con un MUX 4 a 1 usando A y B como selección.
Respuesta
AB = 00: m0 = 1, m1 = 0, I0 = C. AB = 01: m2 = 0, m3 = 1, I1 = C. AB = 10: m4 = 0, m5 = 1, I2 = C. AB = 11: m6 = 1, m7 = 0, I3 = C. Es la función de paridad par (vale 1 cuando hay un número par de unos): F = A ⊕ B ⊕ C.
- ¿Cuántas líneas de selección necesita un MUX de 16 entradas y cuántas variables puede tener como máximo la función que implemente?
Respuesta
4 líneas de selección (24 = 16). Conectando la variable sobrante a los datos puede implementar cualquier función de hasta 5 variables.
- Obtén la ecuación del segmento e usando las combinaciones 10 a 15 como "no importa".
Respuesta
e = 1 en 0, 2, 6 y 8. Grupos: B·D (0, 2, 8, 10) y C·D (2, 6, 10, 14). Resultado: e = B·D + C·D = D·(B + C).
- En el codificador con prioridad de 4 entradas, ¿qué salida da D3 = 0, D2 = 0, D1 = 1, D0 = 1?
Respuesta
Y1 = 0 + 0 = 0, Y0 = 0 + 1·1 = 1, V = 1. Salida 01: gana D1 sobre D0.