01 · Punto de partida
Una alarma, cuatro zonas
Un sistema de seguridad tiene una sola señal de alarma y cuatro sirenas, una por zona. Cuando salta la alarma, debe sonar solo la sirena de la zona afectada; las demás, calladas. Hay un dato (la alarma) y un selector (la zona), y de las cuatro salidas debe responder exactamente una. Eso es un demultiplexor (DEMUX): una entrada, N salidas, el selector abre una sola «puerta».
Una escena típica. Un microcontrolador tiene tres pines libres y debe manejar ocho dispositivos, cada uno con su señal de «habilitación» (chip select). O un módulo de ocho LED donde solo uno debe encenderse a la vez. O un reloj que hay que repartir a una de varias zonas del circuito. En los tres casos, dos o tres bits de dirección eligen cuál de las líneas de salida se activa.
En software es una tabla de manejadores: handlers[i](evento), donde solo el elegido se ejecuta. El demultiplexor es esa tabla, hecha de puertas.
- ¿Qué vale cada salida de un DEMUX, y cómo se relaciona con un MUX?
- ¿Por qué el 74HC139 y el 74HC138 «hablan al revés» (salidas activas en bajo)?
- ¿En qué se diferencia un DEMUX de un decodificador?
- ¿Cómo se agranda de 1:4 a 1:8 y 1:16?
- ¿Cuándo un demultiplexor no es seguro de usar?
02 · DEMUX 1:N
Una puerta abierta
En su forma más simple (lógica positiva, la que se usa para entender), un DEMUX 1:4 tiene un dato D, dos selectores S1 y S0 y cuatro salidas. La salida elegida copia al dato; las demás valen 0:
| S1 S0 | Y0 | Y1 | Y2 | Y3 |
|---|---|---|---|---|
| 00 | D | 0 | 0 | 0 |
| 01 | 0 | D | 0 | 0 |
| 10 | 0 | 0 | D | 0 |
| 11 | 0 | 0 | 0 | D |
Cada salida es un AND del dato con el minterm del selector que le corresponde: un DEMUX 1:4 son cuatro AND de tres entradas y dos inversores. Los símbolos son un trapecio al revés del MUX: angosto del lado de la entrada y ancho del lado de las salidas.
- Una salida activa por vez
- En todo momento hay a lo sumo una salida distinta de 0. Si el dato vale 0, ninguna. Esa propiedad (a veces llamada «uno entre N» o one-hot) es lo que hace útil al DEMUX para habilitar un dispositivo a la vez.
- El inverso del MUX
- Si un MUX junta N entradas en una salida usando un índice, el DEMUX hace el camino inverso con el mismo índice. Si ponés los dos en serie con el mismo selector, la señal de una entrada llega a la salida correspondiente a través de un solo cable: es la base de la transmisión por división de tiempo (sección 06).
- El dato puede ser una señal
- Si el dato cambia en el tiempo (un reloj, un pulso, un nivel), cada salida copia al dato mientras está seleccionada y vale 0 el resto del tiempo. El DEMUX es un reparto instantáneo, sin memoria.
03 · Chips
74HC139 y 74HC138: el que habla al revés
Los demultiplexores comerciales de la serie 74HC son en realidad decodificadores/demultiplexores, y todos tienen las salidas activas en bajo: la salida seleccionada da 0 y las demás 1. También la habilitación es activa en bajo. Es una herencia de la lógica TTL, y se mantiene por compatibilidad; además, es muy práctica para controlar señales de selección de chips (~CS), que son activas en bajo.
| ~E | A1 A0 | ~Y0 | ~Y1 | ~Y2 | ~Y3 |
|---|---|---|---|---|---|
| 0 | 00 | 0 | 1 | 1 | 1 |
| 0 | 01 | 1 | 0 | 1 | 1 |
| 0 | 10 | 1 | 1 | 0 | 1 |
| 0 | 11 | 1 | 1 | 1 | 0 |
| 1 | ×× | 1 | 1 | 1 | 1 |
- ¿Dónde entra el dato?
- En la entrada de habilitación ~E. Con ~E = 0 la salida elegida baja a 0; con ~E = 1 todas están en 1. Por lo tanto la salida elegida copia el nivel de ~E (sin invertirlo) y las demás quedan en 1. Es un DEMUX en lógica negativa: dato «activo» = nivel bajo.
- Salidas en bajo y LED
- Para ver una salida activa en bajo se conecta el LED entre VCC y la salida, con su resistencia: cuando la salida baja a 0 circula corriente y el LED enciende. Las salidas HC son simétricas (dan y reciben unos 4 mA), así que sirve cualquiera de los dos montajes; el de VCC es la convención histórica.
- 74HC138: el 3 a 8
- Tres entradas de selección (A, B, C, con C la más significativa), ocho salidas ~Y0 a ~Y7 y tres entradas de habilitación: G1 (activa en alto), ~G2A y ~G2B (activas en bajo). Para que el chip esté habilitado hace falta G1 = 1 y las otras dos en 0. Esa combinación de polaridades permite armar decodificadores grandes sin compuertas extra.
- Variantes
- El 74HC238 es el 3 a 8 con salidas activas en alto; el 74HC154 es un 4 a 16; el 74HC4051 es un multiplexor/demultiplexor analógico de 8 canales (Tema 18).
| Pin | 74HC139 | 74HC138 | Pin | 74HC139 | 74HC138 |
|---|---|---|---|---|---|
| 1 | 1~E | A | 16 | VCC | VCC |
| 2 | 1A0 | B | 15 | 2~E | ~Y0 |
| 3 | 1A1 | C | 14 | 2A0 | ~Y1 |
| 4 | 1~Y0 | ~G2A | 13 | 2A1 | ~Y2 |
| 5 | 1~Y1 | ~G2B | 12 | 2~Y0 | ~Y3 |
| 6 | 1~Y2 | G1 | 11 | 2~Y1 | ~Y4 |
| 7 | 1~Y3 | ~Y7 | 10 | 2~Y2 | ~Y5 |
| 8 | GND | GND | 9 | 2~Y3 | ~Y6 |
04 · DEMUX y decodificador
Gemelos con distinto trabajo
Como DEMUX
Reparte un dato
La entrada de dato (el enable) varía en el tiempo: es una señal. La salida elegida la copia y las demás quedan quietas. Una centralita.
Como decodificador
Marca una línea
El enable está fijo en «habilitado». Los bits de selección son un número y exactamente una salida se activa: la que corresponde a ese número. Es el Tema 20.
| Uso | Entrada de habilitación | Qué hacen las salidas | Ejemplo |
|---|---|---|---|
| Demultiplexor | Recibe una señal (dato) | La elegida copia esa señal | Repartir un reloj a una zona |
| Decodificador | Fija en «habilitado» | La elegida pasa a su nivel activo | Elegir un chip por su dirección |
| Decodificador con control | Una señal de permiso | Se activan solo si hay permiso | Chip select con habilitación de lectura |
- Entrada «uno entre N»
- Un decodificador convierte un número binario (log2 N bits) en N líneas, de las cuales exactamente una está activa. Se llama codificación uno entre N (one-hot) y es la más cómoda para habilitar dispositivos.
- El enable no es un reloj
- Un reloj tiene flancos que significan «ahora»; el enable de un decodificador es un nivel que significa «mientras». No hay memoria ni sincronismo acá: los flip-flops y los relojes llegan en el curso siguiente.
05 · Crecer
De 1:4 a 1:16
Los demultiplexores grandes se arman con otros más chicos. La clave son las entradas de habilitación: se usan para decidir qué chip responde, mientras que las entradas de selección eligen qué salida dentro de ese chip.
| Tamaño | Chips | Conexión |
|---|---|---|
| 1:4 | ½ × 74HC139 | Selectores en A0 y A1, dato en ~E |
| 1:8 | 1 × 74HC138 | Selectores en A, B, C. Dato en ~G2A (con G1 = 1 y ~G2B = 0): la salida elegida copia el dato |
| 1:8 (otra forma) | 1 × 74HC138 | Dato en G1 (con ~G2A y ~G2B a masa): la salida elegida da el dato invertido |
| 1:16 | 2 × 74HC138 | A, B, C en paralelo. S3 en G1 del segundo y en ~G2A del primero. Dato en ~G2B de los dos |
| 1:16 (directo) | 1 × 74HC154 | 4 selectores y dos habilitaciones; chip de 24 pines |
| 1:32 | 4 × 74HC138 + 1 × 74HC139 | El 139 elige cuál de los cuatro 138 se habilita |
1:16 con dos 74HC138
Las tres entradas bajas de dirección (A, B, C) van a los dos chips en paralelo. La cuarta (S3) decide cuál chip se habilita: el primero con S3 = 0, el segundo con S3 = 1. Para eso se aprovechan las polaridades de las habilitaciones: S3 va a ~G2A del primero (habilitado con S3 = 0) y a G1 del segundo (habilitado con S3 = 1), y no hace falta ningún inversor.
| Pin | Primer 74HC138 (salidas 0 a 7) | Segundo 74HC138 (salidas 8 a 15) |
|---|---|---|
| G1 | VCC (siempre 1) | S3 |
| ~G2A | S3 | GND (siempre 0) |
| ~G2B | Dato (~E) | Dato (~E) |
| Habilitado cuando… | S3 = 0 y dato = 0 | S3 = 1 y dato = 0 |
06 · Aplicaciones
Para qué se usa un demultiplexor
- Decodificación de direcciones
- En un sistema con microprocesador, los bits altos de la dirección eligen el chip: memoria, periféricos, puertos. Con un 74HC138 y tres bits (A15, A14, A13) se divide el espacio de 64 KiB en ocho regiones de 8 KiB, cada una con su propia señal ~CS. Es el uso más extendido del decodificador/demultiplexor.
- Controlar muchos dispositivos con pocos pines
- Tres pines de un microcontrolador y un 138 habilitan ocho dispositivos, uno por vez. Con un 154 serían dieciséis con cuatro pines.
- Multiplexado de displays
- Para mostrar cuatro dígitos con un solo decodificador de 7 segmentos, un DEMUX activa el dígito correspondiente mientras un MUX (o el micro) pone los segmentos de ese dígito. Se recorren a gran velocidad y el ojo ve todos encendidos (Tema 21).
- Distribuir un dato o un pulso
- Enviar un pulso a una de varias zonas: una señal de disparo, un reloj de prueba, un comando. Cada salida solo ve el pulso cuando está seleccionada.
- Enlace por división de tiempo (TDM)
- Un MUX en un extremo, un DEMUX en el otro y un contador sincronizado que maneja los dos selectores: un solo cable transporta N canales, uno por vez, cada uno en su «ranura» de tiempo. Es la idea detrás de buses serie, telefonía digital y muchos instrumentos.
| Canales (N) | Ancho de banda de cada canal | Reloj mínimo (2·N·B) |
|---|---|---|
| 4 | 500 Hz | 4 kHz |
| 8 | 500 Hz | 8 kHz |
| 8 | 20 kHz (audio) | 320 kHz |
| 32 | 4 kHz (voz) | 256 kHz |
07 · Simulador
Laboratorio: repartir y compartir
El simulador tiene dos modos. En Reparto manejás un demultiplexor de 4 u 8 salidas, en lógica positiva (didáctica) o en la del 74HC139/138 (salidas activas en bajo, dato en la habilitación), y mirás los LED. En Enlace por tiempo conectás un MUX, un cable único y un DEMUX con un contador compartido y mirás cómo cuatro canales viajan por un solo cable, cada uno en su turno.
- Reparto: el trapecio reparte el dato; la salida seleccionada se resalta. Un LED circular muestra cuáles salidas están «activas» según la polaridad elegida.
- Enlace por tiempo: cada «Paso de reloj» avanza el contador. La salida seleccionada copia el cable, y su registro retiene el valor hasta la próxima vuelta.
- Resultados: las tarjetas cambian de contenido con el modo.
Reparto y división de tiempo
Reparto 1:4 · activo en alto
Reparto 1:4.
Recorrido guiado (8 minutos)
- 1Empezá en Reparto 1:4, activo en alto.
Con E = 1 y S = 01 se enciende solo Y1; las otras tres valen 0. Recorré los selectores con los botones: el 1 «viaja» de salida en salida. Poné E = 0: todo apagado, el enable es el interruptor maestro.
- 2Pasá a «74HC139/138 (activo en bajo)».
Ahora los LED encienden con un 0. El botón de dato pasa a llamarse «dato en ~E»: con ~E = 0 la salida elegida baja a 0 y su LED enciende; con ~E = 1 todas valen 1 y ninguno enciende. Fijate que la salida elegida copia el nivel de ~E.
- 3Cambiá a 1:8.
Tres selectores y ocho salidas: es el 74HC138. El selector más significativo (S2) separa las salidas 0 a 3 de las 4 a 7. Con «Siguiente salida» recorrés las ocho.
- 4Dejá el dato fijo habilitado y usá los selectores como un número.
Eso es un decodificador: el número binario S2 S1 S0 enciende exactamente un LED. Es el tema siguiente.
- 5Pasá a «Enlace por tiempo».
Hay cuatro canales de un bit (D0 a D3), un MUX, un cable y un DEMUX con el mismo contador. Apretá «Paso de reloj» cuatro veces: cada salida recibe el canal que le toca y lo retiene. En total viajaron cuatro datos por un solo cable.
- 6Cambiá un canal después de que ya fue entregado.
El receptor sigue mostrando el valor viejo hasta que el contador vuelva a esa ranura. En un enlace por división de tiempo, la información llega con un retraso de hasta una vuelta completa.
- 7Contá los cables.
En lugar de cuatro cables de datos, hay uno, más los dos de selección compartidos entre los dos extremos. Es una ganancia, siempre que los dos contadores estén sincronizados.
- 8Apretá «Ciclo completo» varias veces.
Los registros se actualizan en orden 0, 1, 2, 3 una y otra vez. La frecuencia del cable es cuatro veces la de cada canal: esa es la regla de la tabla de la sección 06.
Preguntas para pensar
- En el modo activo en alto, apagá E. ¿Qué valen las salidas? ¿Qué papel cumple E?
- Con el 74HC139 (activo en bajo), ¿qué valor tiene la salida elegida si ~E = 1? ¿Y si ~E = 0?
- En el enlace por tiempo, ¿cuántas veces por segundo se actualiza cada canal si el reloj corre a 8 kHz y hay 4 canales?
- Si un canal cambia 100 veces por segundo, ¿alcanza con un reloj de 4 kHz con 4 canales?
Ver respuestas sugeridas
- Todas valen 0: sin enable no hay reparto. E es el interruptor maestro: el dato solo atraviesa mientras E está activo.
- Con ~E = 0 baja a 0 (activa); con ~E = 1 queda en 1 (inactiva), igual que las demás. La salida elegida copia el nivel de ~E.
- 8 kHz / 4 = 2 kHz: cada canal se muestrea 2000 veces por segundo.
- Sí de sobra: cada canal se muestrea a 4 kHz / 4 = 1 kHz, y para representar una señal de hasta 100 Hz alcanza con más de 200 muestras por segundo (teorema de muestreo).
08 · Reparto en código
Demultiplexores, decodificadores y glitches
Los bloques verifican las propiedades del DEMUX, modelan el 74HC138 con sus tres habilitaciones, arman 16 salidas con dos chips, simulan un enlace por división de tiempo, decodifican un mapa de memoria y reproducen los glitches de un decodificador cuando cambian varias líneas de dirección.
Python en tu navegador. Los bloques son editables: cambiá los selectores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
Paso 1: el DEMUX, su propiedad «una entre N» y su relación con el MUX
def demux(d, s, n):
ys = [0] * n
ys[s] = d
return ys
def mux(ds, s):
return ds[s]
for n in (2, 4, 8):
una = all(sum(demux(1, s, n)) == 1 and demux(1, s, n)[s] == 1 for s in range(n))
apagado = all(sum(demux(0, s, n)) == 0 for s in range(n))
print(f"1:{n}: con dato=1 hay una sola salida activa: {una}; con dato=0 todo apagado: {apagado}")
print("mux(demux(d, s), s) == d:", all(mux(demux(d, s, 4), s) == d for d in (0, 1) for s in range(4)))
print("decodificador = demux con dato fijo en 1:")
for s in range(4):
print(f" S={s:02b} -> {demux(1, s, 4)}")
Con el dato en 1 solo la salida elegida vale 1; con el dato en 0, ninguna. Y un MUX puesto a continuación de un DEMUX con el mismo selector devuelve el dato original. Con el dato fijo en 1 se obtiene la tabla de un decodificador.
Paso 2: el 74HC138 y la cascada a 16 salidas
def hc138(a, b, c, g1=1, g2a_n=0, g2b_n=0):
ys = [1] * 8 # salidas activas en bajo: reposo = 1
if g1 == 1 and g2a_n == 0 and g2b_n == 0:
ys[4 * c + 2 * b + a] = 0 # C es el bit más significativo
return ys
def bits(s):
return s & 1, (s >> 1) & 1, (s >> 2) & 1
# dato en ~G2A: la salida elegida COPIA el dato
ok_copia = all(hc138(*bits(s), g1=1, g2a_n=d, g2b_n=0) == [d if i == s else 1 for i in range(8)]
for s in range(8) for d in (0, 1))
# dato en G1: la salida elegida da el dato INVERTIDO
ok_inv = all(hc138(*bits(s), g1=d, g2a_n=0, g2b_n=0) == [1 - d if i == s else 1 for i in range(8)]
for s in range(8) for d in (0, 1))
print("dato en ~G2A (copia):", ok_copia, " dato en G1 (invierte):", ok_inv)
def demux16(s, d):
s3, bajo = s >> 3, s & 7
a, b, c = bits(bajo)
primero = hc138(a, b, c, g1=1, g2a_n=s3, g2b_n=d) # habilitado con S3 = 0
segundo = hc138(a, b, c, g1=s3, g2a_n=0, g2b_n=d) # habilitado con S3 = 1
return primero + segundo
ok16 = all(demux16(s, d) == [d if i == s else 1 for i in range(16)] for s in range(16) for d in (0, 1))
print("1:16 con dos 74HC138, sin compuertas extra:", ok16)
print("ejemplo S=1010 dato=0 :", demux16(0b1010, 0))
Con el dato en ~G2A la salida elegida copia el dato; con el dato en G1 lo invierte. Las polaridades distintas de las habilitaciones (G1 activa en alto, las otras en bajo) permiten armar 16 salidas con dos chips y sin compuertas. En el ejemplo, S = 1010 pone un 0 en la salida 10.
Paso 3: un enlace por división de tiempo
def tdm(canales, vueltas, n=4):
retenido = [None] * n
for t in range(vueltas * n):
s = t % n # un contador compartido maneja MUX y DEMUX
cable = canales(t)[s] # el MUX pone en el único cable el canal s
retenido[s] = cable # el DEMUX lo entrega a la salida s, que lo retiene
print(f"t={t:>2} ranura={s} cable={cable} recibido={['-' if x is None else x for x in retenido]}")
# los canales cambian con el tiempo
canales = lambda t: [(t // 4) % 2, 1, (t // 8) % 2, 0]
tdm(canales, 3)
print()
print(" N ancho de banda reloj mínimo (2·N·B)")
for n, B in ((4, 500), (8, 500), (8, 20_000), (32, 4_000)):
print(f"{n:>4} {B:>10} Hz {2 * n * B:>10,} Hz")
Cada salida recibe su canal una vez por vuelta y lo retiene. El canal 0, que cambia en cada vuelta, se ve actualizado con hasta cuatro pasos de retraso; los canales constantes ya no cambian. El reloj debe ser al menos 2·N·B para no perder información.
Paso 4: decodificar un mapa de memoria con un 74HC138
def hc138(a, b, c, g1=1, g2a_n=0, g2b_n=0):
ys = [1] * 8
if g1 == 1 and g2a_n == 0 and g2b_n == 0:
ys[4 * c + 2 * b + a] = 0
return ys
def region(addr):
c, b, a = (addr >> 15) & 1, (addr >> 14) & 1, (addr >> 13) & 1 # A15 A14 A13
ys = hc138(a, b, c)
return ys.index(0)
for addr in (0x0000, 0x1FFF, 0x2000, 0x7FFF, 0xA123, 0xE000, 0xFFFF):
y = region(addr)
print(f"0x{addr:04X} A15..A13 = {addr >> 13:03b} -> ~Y{y} activa (región 0x{y * 0x2000:04X}..0x{(y + 1) * 0x2000 - 1:04X})")
Tres bits de dirección dividen los 64 KiB en ocho regiones de 8 KiB. 0xA123 cae en la región 5 (0xA000 a 0xBFFF): su ~Y5 baja y habilita el chip conectado a esa salida. Es el mapa de memoria de casi cualquier computadora simple.
Paso 5: glitches de un decodificador y cómo evitarlos
from itertools import permutations
def transitorios(desde, hasta, n=3):
cambia = [i for i in range(n) if ((desde >> i) & 1) != ((hasta >> i) & 1)]
res = {}
for orden in permutations(cambia):
estado, pasos = desde, []
for i in orden[:-1]:
estado ^= (1 << i)
pasos.append(estado)
res[orden] = pasos
return res
for d, h in ((0b011, 0b100), (0b011, 0b010)):
print(f"cambio {d:03b} -> {h:03b}")
for orden, pasos in transitorios(d, h).items():
print(f" si cambian los bits en orden {orden}: pasa por {[format(p, '03b') for p in pasos]} "
f"-> salidas activadas por error: {[f'Y{p}' for p in pasos]}")
def gray(i):
return i ^ (i >> 1)
print()
print("bits que cambian por paso, contador binario:", [bin(i ^ ((i + 1) % 8)).count("1") for i in range(8)])
print("bits que cambian por paso, contador Gray: ", [bin(gray(i) ^ gray((i + 1) % 8)).count("1") for i in range(8)])
Al pasar de 011 a 100 cambian los tres bits: según el orden en que lleguen, el decodificador activa por unos nanosegundos dos salidas equivocadas. De 011 a 010 cambia un solo bit y no hay transitorios. Con un contador Gray cada paso cambia exactamente un bit, incluida la vuelta, y la decodificación queda limpia.
09 · Analogía de programador
Dispatch, ruteo y mapa de memoria
| En software | En el demultiplexor |
|---|---|
handlers[i](evento): un evento al manejador elegido | Un DEMUX: el dato llega solo a la salida seleccionada |
| Un enrutador web (router) que despacha según la URL | El decodificador de direcciones: el prefijo elige el destino |
| Un conmutador de red (switch) que envía la trama por un puerto | Un DEMUX con la dirección como selector |
| Un código de error donde 0 significa «ok» (lógica negativa) | Las salidas activas en bajo: 0 es «seleccionado» |
| Un feature flag que apaga todo hasta habilitar | La entrada de habilitación: sin ella, ninguna salida actúa |
| E/S mapeada en memoria: un rango de direcciones por dispositivo | Decodificar A15..A13 para generar ~CS por región |
| Planificador round-robin que da un turno a cada tarea | El contador compartido de un enlace por división de tiempo |
| Un pub/sub con un único suscriptor por tema | Una salida activa por vez (uno entre N) |
| Una condición de carrera: dos manejadores se activan a la vez por error | El glitch del decodificador: dos salidas activas un instante |
- 1DEMUX = dispatch.
Un evento a un manejador según un índice. Los demás ni se enteran, igual que en un arreglo de funciones.
- 2Activo en bajo = lógica negativa.
Como los códigos de retorno donde 0 es éxito: se lee con cuidado y se documenta. La bolita en el esquema equivale al nombre claro de una variable.
- 3Enable = feature flag.
Todo apagado hasta habilitar: un despliegue por etapas, hecho en silicio.
Una diferencia con el software: un despachador de software atiende un evento, cambia de estado y recién entonces atiende el siguiente; el hardware cambia de «índice» con transiciones físicas que pueden ser imperfectas. El glitch del decodificador no tiene equivalente exacto en código: es como si una variable pasara brevemente por un valor intermedio que nadie escribió.
10 · Comprensión
Confusiones frecuentes
«El 74HC139 prende en 1»
La salida elegida baja a 0 y las demás quedan en 1. Un LED entre VCC y la salida (con resistencia) enciende con el 0. Esperar un 1 es cablear al revés.
«Las salidas sin usar flotan»
Las salidas de un chip lógico valen siempre 0 o 1 y se pueden dejar sin conectar. Lo que flota son las entradas sin atar, incluidas las de selección y habilitación.
«El enable es un reloj»
El enable es un nivel («mientras»); un reloj es un flanco («ahora»). El decodificador no tiene memoria: si el enable baja, la salida vuelve a reposo.
«En el 139 el dato entra por un pin de datos»
No hay pin de datos: el dato entra por la habilitación (~E). Es un decodificador usado como demultiplexor. En el 138 hay tres habilitaciones y cualquiera puede llevar el dato.
«DEMUX y decodificador compiten»
Son el mismo silicio con la habilitación usada de dos maneras: como señal (reparto) o fija (decodificación). Aprender uno es aprender los dos.
«Dos salidas pueden quedar activas»
En régimen estable, nunca: es la propiedad «uno entre N». Si dos se activan, es un transitorio (glitch) o un error de conexión, no el funcionamiento normal.
«La salida de un decodificador sirve como pulso de escritura»
Con cambios de dirección casi simultáneos, la salida puede mostrar pulsos falsos que escribirían donde no se debe. Se sincroniza con un reloj, se cuida el orden de los cambios o se usan códigos Gray.
11 · Práctica guiada
Ejercicios de reparto
Ejercicio 1: alarma por zonas
La alarma E (activa en bajo) debe encender el LED de la zona S1S0. Conectá un 74HC139 y calculá la resistencia de los LED para unos 4 mA a 5 V (LED con 2 V de caída).
Ver solución razonada
La alarma entra por ~E; S1 y S0 a A1 y A0. Cada LED va de VCC, a través de su resistencia, a la salida ~Y correspondiente: al bajar la salida elegida, circula corriente y enciende. R = (5 − 2) V / 4 mA = 750 Ω → 820 Ω (unos 3,7 mA). Si la alarma no está activa (~E = 1) todas las salidas están en 1 y ninguno enciende.
Ejercicio 2: 1:8 con un 74HC138
Conectá el 138 como DEMUX 1:8 no inversor con el dato en ~G2A. ¿Qué valen las ocho salidas con S = 101 y dato = 0? ¿Y con dato = 1?
Ver solución razonada
G1 = 1 y ~G2B = 0 fijos; el dato va a ~G2A. Con S = 101 (C = 1, B = 0, A = 1: salida 5): con dato = 0 el chip está habilitado y ~Y5 = 0 (las otras siete en 1); con dato = 1 está deshabilitado y las ocho valen 1. La salida elegida copia el dato; las demás permanecen en 1.
Ejercicio 3: 16 salidas con dos chips
Indicá cómo se conectan G1, ~G2A y ~G2B en cada uno de los dos 74HC138 para que S3 elija el chip, y qué salida baja con S3S2S1S0 = 1101 y dato = 0.
Ver solución razonada
Primer chip: G1 = VCC, ~G2A = S3, ~G2B = dato. Segundo chip: G1 = S3, ~G2A = GND, ~G2B = dato. A, B, C en paralelo. Con 1101 (decimal 13) y dato = 0: S3 = 1, el primero queda deshabilitado y el segundo habilitado, y dentro de él la dirección 101 (5) baja su salida: la salida global 13 (8 + 5).
Ejercicio 4: mapa de memoria
Un 74HC138 recibe A15, A14, A13. ¿Qué salida baja con la dirección 0xA123? ¿Qué rango de direcciones habilita cada salida y de qué tamaño es?
Ver solución razonada
0xA123 = 1010 0001 0010 0011: A15 A14 A13 = 101 → ~Y5. Cada salida habilita 213 = 8192 direcciones (8 KiB): ~Y0 de 0x0000 a 0x1FFF, ~Y1 de 0x2000 a 0x3FFF… ~Y5 de 0xA000 a 0xBFFF… ~Y7 de 0xE000 a 0xFFFF.
Ejercicio 5: división de tiempo
Cuatro canales de 1 kHz de ancho de banda cada uno viajan por un solo cable con MUX y DEMUX. ¿Qué frecuencia mínima debe tener el reloj? ¿Cuántos cables hay frente a la versión sin multiplexar?
Ver solución razonada
Cada canal debe muestrearse al menos al doble de su ancho de banda: 2 kHz por canal; con 4 canales, el reloj debe ser de al menos 8 kHz (2·N·B). Sin multiplexar harían falta 4 cables de datos; con multiplexado, 1 de datos más 2 de selección que comparten los dos extremos (o una señal de sincronismo, si el contador está en cada punta).
Ejercicio 6: el glitch de 011 a 100
Un contador pasa de 011 a 100 y maneja un decodificador. Enumerá las salidas que pueden activarse por error según el orden en que cambien los bits, y proponé dos soluciones.
Ver solución razonada
Cambian los tres bits; los órdenes posibles pasan por: S2 primero → 111 (Y7), luego 101 (Y5) o 110 (Y6); S1 primero → 001 (Y1), luego 101 (Y5) o 000 (Y0); S0 primero → 010 (Y2), luego 110 (Y6) o 000 (Y0). Soluciones: usar un contador en código Gray (cambia un bit por paso) o sincronizar la salida con un reloj que la muestree cuando la dirección ya se estabilizó (Tema 28). Verificalo con el Paso 5.
12 · Síntesis
Ideas para recordar
- Un demultiplexor reparte una entrada a una de N salidas: la elegida copia el dato y las demás quedan quietas. Con dato = 0 o sin enable, todo en reposo.
- Cada salida es D·mᵢ(S): un DEMUX 1:4 son cuatro AND de tres entradas y dos inversores. Es el inverso del MUX.
- En la serie 74HC, 139 (2 a 4) y 138 (3 a 8) tienen salidas activas en bajo y el dato entra por la habilitación: la salida elegida copia ~E.
- El 138 tiene tres habilitaciones (G1 activa en alto, ~G2A y ~G2B en bajo), que permiten armar 1:16 con dos chips y sin compuertas.
- DEMUX y decodificador son el mismo silicio: con la habilitación fija es un decodificador (uno entre N).
- Aplicaciones: decodificación de direcciones (~CS), controlar muchos dispositivos con pocos pines, multiplexado de display, enlace por división de tiempo (reloj mínimo 2·N·B).
- Las salidas no flotan, las entradas sí: atá selectores y habilitaciones. El enable es un nivel, no un reloj.
- El decodificador puede mostrar glitches cuando cambian varios bits de dirección; un contador Gray o la sincronización lo evitan.
¿Listo para el Tema 20?
Podés avanzar si sos capaz de responder esto sin mirar:
- Escribir la ecuación de cada salida de un DEMUX 1:4.
- Decir qué valor tiene la salida elegida de un 74HC139 con ~E = 0 y con ~E = 1.
- Conectar un 74HC138 como DEMUX 1:8 y como decodificador.
- Armar 16 salidas con dos 138 indicando las habilitaciones.
- Decir qué salida del 138 baja con A15 A14 A13 = 110.
- Explicar por qué la salida de un decodificador no se usa como reloj sin cuidado.
Un demultiplexor reparte un dato; si el dato se fija y lo que importa es el número de selección, tenés un decodificador. En el próximo tema lo exploramos a fondo: decodificadores binarios.