Menu
Coddy logo textTech

Compuertas XOR XNOR

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 41 de 90.

Esta lección cubre dos puertas lógicas adicionales: XOR (OR exclusiva) y XNOR (NOR exclusiva). Estas puertas son útiles para comparar bits y verificar la paridad.

Compuerta XOR

La compuerta XOR produce una salida de 1 cuando las entradas son diferentes.

Tabla de verdad (2 entradas):

about
000
011
101
110

Primitiva de puerta de Verilog:

xor(out, a, b);

Equivalente de asignación continua:

assign out = a ^ b;

Puerta XNOR

La puerta XNOR devuelve 1 cuando las entradas son iguales. Es lo opuesto a XOR.

Tabla de verdad (2 entradas):

about
001
010
100
111

Primitiva de puerta Verilog:

xnor(out, a, b);

Equivalente de asignación continua:

assign out = a ~^ b;   // o ~(a ^ b)

Múltiples entradas

Las puertas XOR y XNOR pueden tener más de 2 entradas. La salida es:

  • XOR: 1 si un número impar de entradas son 1
  • XNOR: 1 si un número par de entradas son 1
xor(out, a, b, c);      // XOR de 3 entradas
xnor(out, p, q, r, s);  // XNOR de 4 entradas

Ejemplo (XOR de 3 entradas):

abcout
0000
0011
0101
0110
1001
1010
1100
1111

Usos comunes

UsoEjemplo
Comparar si dos bits son diferentesxor(diff, a, b)
Comparar si dos bits son igualesxnor(same, a, b)
Generación de paridad (número impar de 1s)xor(parity, data[0], data[1], data[2], data[3])
Comprobación de paridad (número par de 1s)xnor(parity, data[0], data[1], data[2], data[3])

Ejemplo de código

module xor_xnor_demo (
  input a, b,
  output xor_out,
  output xnor_out
);
  xor(xor_out, a, b);
  xnor(xnor_out, a, b);
endmodule

Tabla de resumen

GateOutput 1 whenPrimitiveOperator
XOREntradas son diferentesxor(out, a, b)^
XNOREntradas son las mismas (same)xnor(out, a, b)~^
challenge icon

Desafío

Agrega las primitivas de compuerta faltantes según las tareas.

Qué hacer:

  1. Crea una compuerta XOR con la salida xor_result y las entradas x e y
  2. Crea una compuerta XNOR con la salida xnor_result y las entradas x e y

Pruébalo tú mismo

module xor_xnor_challenge (
  input x,
  input y,
  output xor_result,
  output xnor_result
);
  
  // TODO: Añade la compuerta XOR (xor_result = x ^ y)
  
  // TODO: Añade la compuerta XNOR (xnor_result = x ~^ y)

endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos