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 cobre 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 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 1 quando as entradas são iguais (same). Ela é o oposto da XOR.

Tabela Verdade (2 entradas):

about
001
010
100
111

Primitiva de porta Verilog:

xnor(out, a, b);

Equivalente em atribuição contínua:

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

Multiple Inputs

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 os mesmos (same)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);
endmodule

Tabela de Resumo

GateOutput 1 quandoPrimitivaOperador
XORInputs são diferentesxor(out, a, b)^
XNORInputs são os mesmosxnor(out, a, b)~^
challenge icon

Desafio

Adicione as primitivas de portas lógicas que faltam com base nas tarefas.

O que fazer:

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

Experimente você mesmo

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