bitGateLab Digital · Aprende Abrir el simulador

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

S1S0Y
00I0
01I1
10I2
11I3

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).

  1. Agrupa la tabla de verdad por pares con el mismo valor de A B y mira cómo depende F de C.
  2. AB = 00: m0 = 0 (C = 0), m1 = 1 (C = 1). F = C, así que I0 = C.
  3. AB = 01: m2 = 1 (C = 0), m3 = 0 (C = 1). F = C, así que I1 = C.
  4. AB = 10: m4 = 0, m5 = 0. I2 = 0.
  5. 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 decodificador 3 a 8 típico de la familia 74HC tiene salidas activas en bajo: la salida elegida va a 0 y las demás a 1. En ese caso la OR de minitérminos se convierte en una NAND de las mismas salidas, por la ley de De Morgan.

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

a b c d e f g
Nombre de los segmentos de un display de 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ígitoABCDabcdefg
000001111110
100010110000
200101101101
300111111001
401000110011
501011011011
601101011111
701111110000
810001111111
910011111011

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

Pruébalo en el simulador

Compara la tabla de verdad de la función con la versión hecha con multiplexor.

  1. Crea una tabla de verdad de tres entradas A, B, C y marca F = 1 en las filas 1, 2, 6 y 7.
  2. 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.
  3. Conecta C, la negación de C, un 0 fijo y un 1 fijo a las entradas de datos, en ese orden.
  4. Cambia las entradas recorriendo las ocho combinaciones y observa que la salida coincide con la tabla.
  5. 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

  1. 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.

  2. ¿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.

  3. 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).

  4. 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.