Portas XOR e XNOR
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 41 de 90.
Esta lição aborda duas portas lógicas adicionais: XOR (OU exclusivo) e XNOR (NOR exclusivo). Essas portas são úteis para comparar bits e verificação de paridade.
Porta XOR
A porta XOR produz uma saída 1 quando as entradas são diferentes.
Tabela Verdade (2 entradas):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Primitiva de porta Verilog:
xor(out, a, b);Equivalente de atribuição contínua:
assign out = a ^ b;Porta XNOR
A porta XNOR produz uma saída 1 quando as entradas são iguais. Ela é o oposto da XOR.
Tabela Verdade (2 entradas):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Primitiva de porta Verilog:
xnor(out, a, b);Equivalente a atribuição contínua:
assign out = a ~^ b; // ou ~(a ^ b)Múltiplas Entradas
As portas XOR e XNOR podem ter mais de 2 entradas. A saída é:
- XOR: 1 se um número ímpar de entradas for 1
- XNOR: 1 se um número par de entradas for 1
xor(out, a, b, c); // XOR de 3 entradas
xnor(out, p, q, r, s); // XNOR de 4 entradasExemplo (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 Comuns
| Uso | Exemplo |
|---|---|
| Comparar se dois bits são diferentes | xor(diff, a, b) |
| Comparar se dois bits são iguais | xnor(same, a, b) |
| Geração de paridade (número ímpar de 1s) | xor(parity, data[0], data[1], data[2], data[3]) |
| Verificação de paridade (número par de 1s) | xnor(parity, data[0], data[1], data[2], data[3]) |
Exemplo 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);
endmoduleTabela de Resumo
| Porta | Saída 1 quando | Primitiva | Operador |
|---|---|---|---|
| XOR | As entradas são diferentes | xor(out, a, b) | ^ |
| XNOR | As entradas são iguais | xnor(out, a, b) | ~^ |
Desafio
Adicione as primitivas de porta que faltam com base nas tarefas.
O que fazer:
- Crie uma porta XOR com a saída
xor_resulte as entradasxey - Crie uma porta XNOR com a saída
xnor_resulte as entradasxey
Folha de consulta
XOR produz 1 quando as entradas são diferentes. XNOR produz 1 quando as entradas são iguais.
| Porta | Saída 1 quando | Primitiva | Operador |
|---|---|---|---|
| XOR | Entradas são diferentes | xor(out, a, b) | ^ |
| XNOR | Entradas são iguais | xnor(out, a, b) | ~^ |
Para múltiplas entradas: XOR produz 1 se um número ímpar de entradas for 1; XNOR produz 1 se um número par de entradas for 1.
xor(out, a, b, c); // XOR de 3 entradas
xnor(out, p, q, r, s); // XNOR de 4 entradasExperimente você mesmo
module xor_xnor_challenge (
input x,
input y,
output xor_result,
output xnor_result
);
// TODO: Adicionar porta XOR (xor_result = x ^ y)
// TODO: Adicionar porta XNOR (xnor_result = x ~^ y)
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo