Electrónica Digital · Tema 10

XOR y XNOR

Diferencia e igualdad bit a bit: el detector de cambios y el verificador de códigos.

01 · Punto de partida

¿Son iguales o no?

Dos interruptores deben coincidir para abrir (igualdad), dos sensores no deben discrepar sin avisar (diferencia). XOR prende si difieren; XNOR si coinciden. Son la base del sumador (T23), la paridad (T26) y el comparador (T25).

  • ¿Qué filas dan 1 en cada una?
  • ¿Cómo se dibujan y qué chips son?
  • ¿Cómo se comparan 2 bits?
  • ¿Qué trampa trae el 74HC266?

02 · XOR

Detector de diferencias

Y = A⊕B: 1 solo con 01 o 10 (Σm(1,2)). Símbolo OR con curva extra; 74HC86 ×4. Es la suma sin acarreo: 1⊕1 = 0 (el acarreo viaja por AND aparte, Tema 23).

A vs B → ¿difieren? →sí = 1 →alarma

03 · XNOR

Verificador de igualdad

Y = A⊙B: 1 con 00 u 11 (Σm(0,3)). XOR con bolita. Trampa del 74HC266: salidas open-collector (necesitan pull-up a Vcc): sin R no hay HIGH. Alternativa: XOR + NOT, o CD4077 con salidas normales.

XOR (86)

Difiere → 1

Salida normal. Suma, paridad, alarma de discrepancia.

XNOR (266)

Coincide → 1

Open-collector + pull-up. Igualdad, cerraduras, comparación.

04 · Cascada

De 1 bit a N bits

Igualdad de 2 bits
EQ = (A1⊙B1)·(A0⊙B0): dos XNOR + un AND. Solo 1 si los dos pares coinciden.
XOR en cadena = paridad
A⊕B⊕C = 1 con cantidad impar de unos: el Tema 26 lo convierte en detector de errores.
Diferencia con signo
XOR no resta: 1⊕1 = 0 pierde el acarreo. Restar pide el circuito del Tema 23–24.

05 · Diferencia en código

Iguales o distintos, en N bits

Básicas más comparador de 2 bits con XNOR + AND.

Python en tu navegador. Compará tus nibbles bit a bit.

def xor_(a, b):
    return a ^ b


def xnor_(a, b):
    return 1 - (a ^ b)


print("XOR: ", [xor_(a, b) for a in (0, 1) for b in (0, 1)])
print("XNOR:", [xnor_(a, b) for a in (0, 1) for b in (0, 1)])

XOR: [0, 1, 1, 0]. XNOR: [1, 0, 0, 1]. ¿Cuál usarías para “prender si A = B”?

Igualdad de 2 bits

def iguales2(a, b):
    bits_a = [(a >> 1) & 1, a & 1]
    bits_b = [(b >> 1) & 1, b & 1]
    eq = all(xnor_(x, y) for x, y in zip(bits_a, bits_b))
    print(f"{a:02b} vs {b:02b} -> {'IGUALES' if eq else 'distintos'}")
    return eq


iguales2(0b10, 0b10)
iguales2(0b10, 0b11)
iguales2(0b00, 0b00)

06 · Analogía programador

!= y == con silicio

  1. 1
    XOR = !=.

    Verdadero si difieren: tu a != b en una puerta.

  2. 2
    XNOR = ==.

    Verdadero si coinciden: cerradura que abre con el código exacto.

  3. 3
    Cascada = comparar strings.

    Igualdad total = AND de igualdades por posición, como comparar char por char.

07 · Taller

Laboratorio: ¿coinciden?

Dos interruptores y selector XOR/XNOR: el laboratorio dice si difieren o coinciden.

TALLER 10

Coincidómetro

XOR · A=1 B=1 → 0

Y0
VeredictoIGUALES ✓
LED alarma○ apagado
Fila11 · m3

XOR 1,1: iguales, Y=0.

Preguntas para explorar

  1. Con A=1, B=0 en XOR: ¿Y? ¿Veredicto? Pasá a XNOR sin tocar: ¿Y?
  2. ¿Qué puerta prende un LED “código correcto” con dos interruptores iguales?
  3. Con fila 00 en XOR: ¿Y? ¿Por qué 0 y no “nada”?
Ver respuestas sugeridas
  1. XOR: 1 (DIFERENTES). XNOR: 0 (no coinciden). Misma fila, veredicto opuesto.
  2. XNOR: da 1 con 00 y con 11. El código puede ser “todo abajo” también.
  3. 0: no difieren en nada. XOR de ceros es cero, no indefinido.

08 · Comprensión

Confusiones frecuentes

«XOR suma»

Suma a medias: 1⊕1 = 0 necesita acarreo (AND) aparte. Suma completa = XOR + AND (Tema 23).

«XNOR = XOR con NOT, listo»

Lógico sí, eléctrico ojo: el 74HC266 es open-collector y pide pull-up. Sin R, el HIGH no existe.

«OR común es exclusivo»

El OR lógico incluye el 11 (vale 1): “café o té” en lógica acepta ambos. XOR es el excluyente real.

«Cascada XOR = suma de N bits»

Da la paridad, no la suma: A⊕B⊕Cin es el bit suma, los acarreos viajan aparte. No confundir.

09 · Práctica guiada

Ejercicios de coincidencia

Ejercicio 1: alarma de discrepancia

Dos sensores redundantes deben coincidir; si difieren, alarma. ¿Puerta? Tabla y chip.

Ver solución razonada

XOR (74HC86): 01 o 10 → 1 = alarma. 00 y 11 callados (ambos abajo también es “coinciden”).

Ejercicio 2: igualdad de 2 bits

Código 10 en dos interruptores: LED solo si A=10. Diseñá con XNOR + AND y verificá con iguales2().

Ver solución

(A1⊙1)·(A0⊙0): XNOR con 1 pasa el bit, con 0 lo invierte… más simple: A1·~A0 (AND + NOT). Dos caminos, mismo LED.

Ejercicio 3: montar coincidencia

74HC86, dos botones con pull-down, LED en XOR. Medí las 4 filas. ¿Alguna falla con 0110?

Ver solución

No: 0110 clavado. Si el LED queda tenue en alguna fila, revisar pull-down o Vcc.

10 · Síntesis

Ideas para recordar

  • XOR = 0110 (difieren); XNOR = 1001 (coinciden).
  • 74HC86 normal; HC266 open-collector + pull-up.
  • Igualdad N bits = XNOR por bit + AND.
  • XOR en cadena = paridad (T26).
  • XOR suma a medias; el acarreo va aparte.

Diferencia e igualdad dominadas. Ahora lo físico: en el próximo tema, botones y rebotes.