Menu
Coddy logo textTech

XOR XNOR Gates

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 (OR exclusivo) e XNOR (NOR exclusivo). Essas portas são úteis para comparar bits e verificar a paridade.

Porta XOR

A porta XOR produz 1 quando as entradas são diferentes.

Tabela-verdade (2 entradas):

about
000
011
101
110

Primitiva de porta do Verilog:

xor(out, a, b);

Equivalente à atribuição contínua:

assign out = a ^ b;

Porta XNOR

A porta XNOR produz 1 quando as entradas são same. Ela é o oposto de XOR.

Tabela-verdade (2 entradas):

about
001
010
100
111

Primitiva de porta Verilog:

xnor(out, a, b);

Equivalente à 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 1's)xor(parity, data[0], data[1], data[2], data[3])
Verificação de paridade (número par de 1's)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

GateSaí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 ausentes 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

Experimente você mesmo

module xor_xnor_challenge (
  input x,
  input y,
  output xor_result,
  output xnor_result
);
  
  // TODO: Adicione porta XOR (xor_result = x ^ y)
  
  // TODO: Adicione 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

Pratique por conta própria: Compilador de Verilog online