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 exclusivo) y XNOR (NOR exclusivo). Estas puertas son útiles para comparar bits y para el control de paridad.
Compuerta XOR
La compuerta XOR devuelve 1 cuando las entradas son diferentes.
Tabla de verdad (2 entradas):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Primitiva de compuerta Verilog:
xor(out, a, b);Equivalente de asignación continua:
assign out = a ^ b;Compuerta XNOR
La compuerta XNOR produce una salida de 1 cuando las entradas son iguales. Es lo opuesto a XOR.
Tabla de verdad (2 entradas):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Primitiva de compuerta Verilog:
xnor(out, a, b);Equivalente de asignación continua:
assign out = a ~^ b; // o ~(a ^ b)Entradas Múltiples
Las compuertas 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 entradasEjemplo (XOR de 3 entradas):
| a | b | c | out |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
Usos comunes
| Uso | Ejemplo |
|---|---|
| Comparar si dos bits son diferentes | xor(diff, a, b) |
| Comparar si dos bits son iguales | xnor(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);
endmoduleTabla de resumen
| Compuerta | Salida 1 cuando | Primitiva | Operador |
|---|---|---|---|
| XOR | Las entradas son diferentes | xor(out, a, b) | ^ |
| XNOR | Las entradas son iguales | xnor(out, a, b) | ~^ |
Desafío
Añade las primitivas de puerta que faltan basándote en las tareas.
Qué hacer:
- Crea una puerta XOR con la salida
xor_resulty las entradasxey - Crea una puerta XNOR con la salida
xnor_resulty las entradasxey
Hoja de referencia
XOR produce 1 cuando las entradas son diferentes. XNOR produce 1 cuando las entradas son iguales.
| Puerta | Salida 1 cuando | Primitiva | Operador |
|---|---|---|---|
| XOR | Las entradas son diferentes | xor(out, a, b) | ^ |
| XNOR | Las entradas son iguales | xnor(out, a, b) | ~^ |
Para múltiples entradas: XOR produce 1 si un número impar de entradas son 1; XNOR produce 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 entradasPruébalo tú mismo
module xor_xnor_challenge (
input x,
input y,
output xor_result,
output xnor_result
);
// TODO: Agregar compuerta XOR (xor_result = x ^ y)
// TODO: Agregar compuerta XNOR (xnor_result = x ~^ y)
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo