Menu
Coddy logo textTech

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):

about
000
011
101
110

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):

about
001
010
100
111

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 entradas

Exemplo (XOR de 3 entradas):

abcout
0000
0011
0101
0110
1001
1010
1100
1111

Usos Comuns

UsoExemplo
Comparar se dois bits são diferentesxor(diff, a, b)
Comparar se dois bits são iguaisxnor(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);
endmodule

Tabela de Resumo

PortaSaída 1 quandoPrimitivaOperador
XORAs entradas são diferentesxor(out, a, b)^
XNORAs entradas são iguaisxnor(out, a, b)~^
challenge icon

Desafio

Adicione as primitivas de porta que faltam com base nas tarefas.

O que fazer:

  1. Crie uma porta XOR com a saída xor_result e as entradas x e y
  2. Crie uma porta XNOR com a saída xnor_result e as entradas x e y

Folha de consulta

XOR produz 1 quando as entradas são diferentes. XNOR produz 1 quando as entradas são iguais.

PortaSaída 1 quandoPrimitivaOperador
XOREntradas são diferentesxor(out, a, b)^
XNOREntradas são iguaisxnor(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 entradas

Experimente 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)

endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos