Electrónica Digital · Tema 6

Tablas de verdad

Toda decisión, escrita sin ambigüedad: cada combinación, su salida. El spec ejecutable de lo digital.

01 · Punto de partida

“Si pasa esto, sale esto”

Alarma con dos sensores: ¿suena con uno solo o con los dos? La tabla lo zanja: 4 filas, 0/1 por fila, cero discusión. Con 3 entradas son 8 filas; con N, 2N.

  • ¿Cómo se ordenan las filas?
  • ¿Cómo se lee la función desde la tabla?
  • ¿Qué son los minterms?
  • ¿Qué se hace con lo imposible?

02 · Anatomía

Entradas, filas, salida

Mayoría de 3: Y = 1 si hay ≥ 2 unos.
ABCYMinterm
0000–
0010–
0100–
0111m3
1000–
1011m5
1101m6
1111m7

Y = Σm(3, 5, 6, 7): la firma compacta de la función. Cada minterm es un AND de las entradas (negadas donde hay 0).

03 · Puertas en tabla

Seis firmas de 2 entradas

Salidas para 00 · 01 · 10 · 11.
Puerta00011011Minterms
AND0001Σm(3)
OR0111Σm(1,2,3)
NAND1110Σm(0,1,2)
NOR1000Σm(0)
XOR0110Σm(1,2)
XNOR1001Σm(0,3)

Memorizar firmas acelera todo: 0110 es XOR la mires por donde la mires (Temas 8–10).

04 · No importa

La X que simplifica

Don't care (X)
Combinación imposible o irrelevante: el diseñador elige 0 o 1 según convenga. No es un tercer valor, es libertad.
Ejemplo
BCD a display: entradas A–F nunca llegan (Tema 5): 6 filas en X que Karnaugh aprovecha (Tema 16).
Una tabla por salida
Dos salidas = dos tablas (o una tabla con dos columnas Y1, Y2): cada salida tiene sus minterms.

05 · Tablas en código

Generar y leer tablas

Tabla completa de cualquier función más extracción de minterms.

Python en tu navegador. Definí tu función y que la tabla hable.

def tabla(f, n=2, nombres="AB"):
    mins = []
    for i in range(2 ** n):
        bits = [(i >> (n - 1 - k)) & 1 for k in range(n)]
        y = f(*bits)
        mins += [i] if y else []
        print(" ".join(map(str, bits)), "->", y)
    print(f"Y = Σm({', '.join(map(str, mins))})")
    return mins


tabla(lambda a, b: a and b)
tabla(lambda a, b, c: (a + b + c) >= 2, n=3, nombres="ABC")

AND → Σm(3). Mayoría → Σm(3, 5, 6, 7). ¿Qué da XOR de 3 entradas?

Equivalencias a prueba

def equivalentes(f1, f2, n=2):
    ok = all(f1(*[(i >> (n-1-k)) & 1 for k in range(n)]) ==
             f2(*[(i >> (n-1-k)) & 1 for k in range(n)]) for i in range(2**n))
    print("equivalentes" if ok else "DISTINTAS")
    return ok


equivalentes(lambda a, b: not (a and b), lambda a, b: (not a) or (not b))

06 · Analogía programador

Test cases del hardware

  1. 1
    Tabla = tests exhaustivos.

    Todas las entradas, salidas esperadas: como un test parametrizado que no deja casos afuera.

  2. 2
    Minterms = casos que dan true.

    La lista de inputs que activan: como un parametrize de los que pasan.

  3. 3
    X = skip.

    Caso que no aplica: se marca y el optimizador lo aprovecha.

07 · Exploración

Laboratorio: inventar puertas

Prendé salidas para 00/01/10/11: el laboratorio nombra la puerta si la conoce y da sus minterms.

LABORATORIO 6

Inventa-puertas

0-1-1-0 · XOR

Función0-1-1-0
MintermsΣm(1, 2)
Es…XOR ✓
ExpresiónA⊕B

0-1-1-0: XOR, Σm(1, 2).

Preguntas para explorar

  1. Programá 0-0-0-1. ¿Nombre? ¿Minterms?
  2. Programá 1-0-0-1. ¿Nombre? ¿Expresión?
  3. Programá 0-0-1-0 (solo fila 10). ¿Puerta conocida? ¿Qué significa?
Ver respuestas sugeridas
  1. AND, Σm(3): solo el 11 da 1. La más exigente.
  2. XNOR, Σm(0,3): igualdad. A⊙B (o NOT XOR).
  3. A medida: A·~B (A y no B). No toda función útil tiene nombre propio.

08 · Comprensión

Confusiones frecuentes

«El orden de filas da igual»

El orden binario 00…11 es convención: Σm(1,2) depende de él. Cambiarlo sin avisar rompe minterms.

«X es un tercer valor»

X = “elegí vos”: el circuito igual da 0 o 1. Ternario es otra materia (y casi no existe).

«Tabla de 8 entradas, fácil»

256 filas: se diseña por bloques (mux, sumadores), no a mano. La tabla es para pocas variables.

«Una tabla con dos salidas»

Son dos funciones que comparten entradas: minterms por separado, optimización junta (Tema 16).

09 · Práctica guiada

Ejercicios de tablas

Ejercicio 1: alarma de dos sensores

Suena si hay humo (H) O (temperatura alta (T) Y puerta cerrada (P)). Tabla de 8 filas y minterms. Verificá con tabla().

Ver solución razonada

Y = H + T·P: filas con H=1 (4–7) más T·P (3, 7): Σm(3, 4, 5, 6, 7). 5 de 8 filas.

Ejercicio 2: XOR de 3

Paridad de 3 bits (Y = 1 si hay cantidad impar de unos). ¿Minterms? Verificá con código.

Ver solución

Σm(1, 2, 4, 7): 001, 010, 100, 111. Base del Tema 26 (paridad).

Ejercicio 3: De Morgan a prueba

Verificá NOT(A OR B) = (NOT A) AND (NOT B) con equivalentes(). ¿Y con AND?

Ver solución

Equivalentes ✓ (NOR = Øproducto de negados). Con AND: NOT(A·B) = ~A + ~B (NAND). Tema 14.

10 · Síntesis

Ideas para recordar

  • 2N filas en orden binario; Y = Σm(filas con 1).
  • Seis firmas de 2 entradas memorizadas (0110 = XOR).
  • X = libertad del diseñador, no tercer valor.
  • Una tabla por salida; tablas grandes → bloques.
  • Tabla = spec: código y silicio obedecen lo mismo.

Lenguaje dominado. Ahora las piezas: en el próximo tema, NOT, buffer y tri-estado.