Electrónica Digital · Tema 7

NOT, buffer y tri-estado

Las puertas de una entrada: invertir, reforzar y —la más útil— desconectarse para compartir el bus.

01 · Punto de partida

Una entrada, tres superpoderes

¿Para qué una puerta con una sola entrada? Para negar (el sensor avisa al revés), reforzar (un pin no llega a 20 LEDs) y desconectar (ocho chips comparten un bus por turnos). Tres símbolos, un chip cada uno.

  • ¿Qué hace la bolita en el símbolo?
  • ¿Cuándo un buffer salva un diseño?
  • ¿Qué es Z y por qué no es 0?
  • ¿Cómo comparten un cable varios chips?

02 · NOT

El que dice que no

Y = ~A: 0→1, 1→0. Símbolo triángulo con bolita (la bolita siempre niega, donde sea que aparezca). 74HC04 trae 6: el chip más barato para “avisar al revés”.

A → bolita →~A →LED al revés

03 · Buffer

El que repite fuerte

Y = A sin negar, con corriente de sobra: un pin maneja decenas de entradas a través de buffers. Usos: relojes que llegan a todos lados, entradas débiles, aislar etapas.

Sin buffer

Pin sobrecargado

20 LEDs chupan 400 mA: el micro se protege y se apaga (o se quema).

Con buffer

Cada uno con su corriente

El pin decide, el buffer alimenta: señal intacta, corriente aparte.

04 · Tri-estado

El que sabe callar

Con enable en 1 copia la entrada; en 0 se desconecta (Z = alta impedancia: ni 0 ni 1, cable suelto). Así varios drivers comparten un bus por turnos (74HC125 ×4). Regla: un pull (4,7k–10k) define el reposo; nunca dos hablando a la vez.

Buffer tri-estado (enable activo alto).
ENAY
00Z
01Z
100
111

05 · Puertas en código

Negar, copiar y callar

Modelo de las tres más colisión en bus: dos hablando = ‘X’.

Python en tu navegador. Prendé dos drivers y mirá la X.

def not_(a):
    return 1 - a


def buf(a):
    return a


def tri(a, en):
    return a if en else "Z"


print("NOT:", [not_(a) for a in (0, 1)])
print("TRI:", tri(1, 1), tri(1, 0))

NOT: [1, 0]. TRI con EN=1 copia, con EN=0 suelta. ¿Qué lee el bus si nadie habla? (Pista: el pull.)

Bus con tres drivers

def bus(drivers, pull=1):
    activos = [d for d in drivers if d != "Z"]
    if len(activos) > 1 and len(set(activos)) > 1:
        return "X colision!"
    return activos[0] if activos else f"{pull} (pull)"


print(bus([tri(1, 1), tri(0, 0), tri(1, 0)]))
print(bus(["Z", "Z", "Z"]))
print(bus([tri(1, 1), tri(0, 1)]))

06 · Analogía programador

!, proxy y mute

  1. 1
    NOT = !.

    Niega un booleano: !a con silicio. Doble NOT = buffer con demora.

  2. 2
    Buffer = proxy.

    Repite sin cambiar: como el seguidor analógico (Tema 16, curso 4), pero en bits.

  3. 3
    Tri = mute + mutex.

    Callar el mic y pasar la palabra: uno habla, el resto en Z. Dos hablando = colisión.

07 · Exploración

Laboratorio: callar y hablar

Buffer tri-estado con A y EN: el laboratorio muestra Y, el LED y quién manda en el bus.

LABORATORIO 7

Habla/calla

A=1 EN=1 → Y=1

Y1
LED● prendido
Buslo manejo yo
NOT de A0

A=1 EN=1: hablo con 1.

Preguntas para explorar

  1. Apagá EN. ¿Y? ¿LED? ¿Quién define el bus ahora?
  2. Con EN=1, cambiá A. ¿Y y NOT? ¿Suman 1 siempre?
  3. ¿Qué pasaría con otro driver en 0 hablando a la vez?
Ver respuestas sugeridas
  1. Z: LED apagado, el bus lo define el pull (típ. 1). Callado total.
  2. Y = A, NOT = 1−A: siempre suman 1. Complementarios por construcción.
  3. Colisión (X): cortocircuito lógico 1 vs 0, calienta y nadie entiende nada. Por eso un solo EN.

08 · Comprensión

Confusiones frecuentes

«El buffer no sirve para nada»

Sirve para corriente, fan-out y timing: el pin decide, el buffer ejecuta. Sin buffers no hay buses ni relojes.

«Z es un tercer 0»

Z es desconexión: sin pull el bus flota y lee cualquier cosa. Z + pull = reposo definido.

«Tri-estado = lógica ternaria»

No hay tres valores lógicos: hay dos valores más “ausente”. El diseño sigue binario.

«Dos pueden hablar si dicen lo mismo»

Aun así está prohibido: transitorios y skew los enfrentan nanosegundos. Un solo EN activo, siempre.

09 · Práctica guiada

Ejercicios de una entrada

Ejercicio 1: LED al revés

Sensor activo-bajo (0 = alarma) a LED que debe prender en alarma con 74HC04. Dibujá la cadena y la tabla.

Ver solución razonada

Sensor → NOT → R → LED a masa: alarma (0) → NOT da 1 → LED prende. Tabla: 0→1, 1→0.

Ejercicio 2: bus de dos

Dos 74HC125 comparten un bus con pull-up 10k. Escribí quién habla en cada momento y qué lee el bus si ambos callan.

Ver solución

EN1 = ~EN2 (un inversor los alterna): bus = D1 o D2. Ambos en Z → pull-up: lee 1.

Ejercicio 3: contar inversores

74HC04 (6 NOT): ¿cuántos chips para 4 señales de enable invertidas + 2 LED al revés? ¿Sobra alguno?

Ver solución

Un chip (6 = 4+2, justo). Sobra cero: el diseño que usa el chip entero es el diseño barato.

10 · Síntesis

Ideas para recordar

  • NOT: Y = ~A; bolita = niega; 74HC04 ×6.
  • Buffer: Y = A con corriente; fan-out y relojes.
  • Tri: EN=1 copia, EN=0 suelta (Z); 74HC125 ×4.
  • Bus: un solo hablante + pull de reposo.
  • Y + NOT = 1 siempre.

Una entrada dominada. Ahora dos: en el próximo tema, AND y OR.