Electrónica Digital · Tema 20

Decodificadores binarios

De número a línea: el binario elige una salida entre N. Así se seleccionan chips y memorias.

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.

dirección → decoder →1 línea activa →chip habilitado

03 · 74HC138

El clásico 3:8

74HC138 (salidas activo-bajo).
E1 E2 E3A2 A1 A0Activa
1 0 00 1 0Y2 = 0
1 0 01 1 1Y7 = 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

  1. 1
    Decoder = switch de red.

    Prefijo de dirección → un puerto: ruteo por hardware, sin CPU.

  2. 2
    CS = mutex.

    Un solo hablante en el bus: el decoder es el árbitro que da la palabra.

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

LABORATORIO 20

Central 2:4

EN=1 A=10 → CS2

CS0 ROM○ off
CS1 RAM○ off
CS2 UART● ON
CS3 GPIO○ off

EN=1 A=10: habla la UART.

Preguntas para explorar

  1. Apagá EN. ¿Algún chip habla? ¿Qué protege eso?
  2. Recorré A=00→11. ¿Qué chip habla en cada una?
  3. ¿Qué diferencia hay con el laboratorio del Tema 19?
Ver respuestas sugeridas
  1. Ninguno: bus libre y seguro. El enable apaga el barrio entero.
  2. ROM, RAM, UART, GPIO: la dirección elige el interlocutor.
  3. 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.