01 · Punto de partida
Cuatro chips, un bus
¿Cómo hablan 4 memorias por los mismos cables sin pisarse? Con chip select: un decoder 2:4 habilita una sola por vez según la dirección. El decoder convierte número en permiso.
- ¿Qué activa cada combinación?
- ¿Qué chips son 2:4, 3:8 y BCD?
- ¿Cómo se genera un chip select?
- ¿Cómo se agranda a 4:16?
02 · Decoder 2:4
El número señala
Entradas A1A0, enable EN: con EN=1, la salida n.º A1A0 se activa (versión didáctica activo-alto). Es el DEMUX del Tema 19 con E fijo: misma tabla, otro trabajo.
03 · 74HC138
El clásico 3:8
| E1 E2 E3 | A2 A1 A0 | Activa |
|---|---|---|
| 1 0 0 | 0 1 0 | Y2 = 0 |
| 1 0 0 | 1 1 1 | Y7 = 0 |
| cualquier otro | — | ninguna (todo 1) |
Tres enables (E1 activo-bajo, E2 activo-bajo, E3 activo-alto): habilitado solo con 1-0-0. Sirven para cascada: dos 138 + A3 = 4:16 (uno responde a A3=0, otro a A3=1).
74HC139
Doble 2:4
Dos decoders chicos independientes. Flexible, sin cascada.
74HC138
Un 3:8
Ocho líneas con 3 enables pensados para crecer a 16.
04 · BCD y chip select
Dos especialidades
- 74HC42: BCD a decimal
- 4 bits → 10 líneas (Y0–Y9): con A–F (inválidos BCD, Tema 5) todo apagado. Display numérico directo.
- Chip select
- Bits altos de dirección al decoder, salida al CS del chip: solo el direccionado responde. Base de memorias (curso 6).
- Una sola activa
- Si hay 0 o 2 líneas activas, el enable o la dirección están mal: el decoder es Árbitro honesto.
05 · Decodificar en código
Del número a la línea
Decoder genérico 2N más ruteo de chip select.
Python en tu navegador. Direccioná tus memorias imaginarias.
def decoder(addr, n=2, en=1, activo_bajo=False):
ys = [1 if activo_bajo else 0] * (2 ** n)
if en:
ys[addr] = 0 if activo_bajo else 1
print(f"addr={addr:02b} -> {ys}")
return ys
decoder(0b10)
decoder(0b101, n=3, activo_bajo=True)
2:4 addr 10 → solo Y2. 138 addr 101 → solo Y5 en 0. ¿Qué da con en=0?
Chip select
def chip_select(addr3):
chips = ["ROM", "RAM", "UART", "GPIO", "LCD", "ADC", "DAC", "LIBRE"]
ys = decoder(addr3, n=3, activo_bajo=True)
print(f"hablar con: {chips[ys.index(0)]}")
return ys
chip_select(0b010)
chip_select(0b111)
06 · Analogía programador
Router de direcciones
- 1Decoder = switch de red.
Prefijo de dirección → un puerto: ruteo por hardware, sin CPU.
- 2CS = mutex.
Un solo hablante en el bus: el decoder es el árbitro que da la palabra.
- 3BCD inválido = 404.
Dirección inexistente: nadie responde (todo apagado). Manejar el 404 es diseñar.
07 · Exploración
Laboratorio: central de chips
Decoder 2:4 con enable: la dirección prende un chip (lógica activa-alto didáctica).
Central 2:4
EN=1 A=10 → CS2
EN=1 A=10: habla la UART.
Preguntas para explorar
- Apagá EN. ¿Algún chip habla? ¿Qué protege eso?
- Recorré A=00→11. ¿Qué chip habla en cada una?
- ¿Qué diferencia hay con el laboratorio del Tema 19?
Ver respuestas sugeridas
- Ninguno: bus libre y seguro. El enable apaga el barrio entero.
- ROM, RAM, UART, GPIO: la dirección elige el interlocutor.
- Acá E es permiso fijo; allá era dato variable. Mismo silicio, otro uso.
08 · Comprensión
Confusiones frecuentes
«Decodifica texto»
Decodifica binario a 1-de-N, no ASCII ni protocolos: el nombre refiere a “traducir código”, nada más.
«Dos salidas activas»
Si pasa, revisar enable y dirección: el decoder promete una sola. Dos hablando = bus en corto lógico.
«138 = 139 grande»
Distintos: 138 es 3:8 con 3 enables en cascada; 139 son dos 2:4 sueltos. Elegir por necesidad.
«BCD A–F dan algo»
El HC42 apaga todo con A–F: entradas imposibles, salidas mudas. Diseñar qué pasa entonces.
09 · Práctica guiada
Ejercicios de selección
Ejercicio 1: 4 ROMs
Cuatro memorias con CS activo-bajo y bus compartido, dirección A1A0. Dibujá con medio 139 y escribí quién responde a 10.
Ver solución razonada
Y2 (0) → CS de ROM2: E del 139 a masa (siempre on). Las demás en 1 (dormidas).
Ejercicio 2: 4:16
Dos 138 con A3 a E3 de uno y a E1 (invertido) del otro. ¿Qué 138 responde con A3=1? ¿Rango?
Ver solución
El alto (Y8–Y15): A3 elige mitad, A2–A0 la línea. 4 bits, 16 líneas.
Ejercicio 3: montar 138
138 con A en botones, enables fijos (E3=1, E1=E2=0), 8 LED (ánodo a Vcc, cátodo a Y). Recorré y anotá.
Ver solución
000→LED0 … 111→LED7 (prende el de salida en 0). Si prenden 7 a la vez y apaga 1: está bien, es activo-bajo.
10 · Síntesis
Ideas para recordar
- N bits → 1 de 2N; una sola activa.
- 139 doble 2:4; 138 3:8 en cascada; 42 BCD.
- Activo-bajo se lee con bolitas y LED a Vcc.
- CS = decoder + bits altos de dirección.
- DEMUX con E fijo = decoder.
Líneas señaladas. Ahora a mostrar dígitos: en el próximo tema, display de 7 segmentos.