Menu
Coddy logo textTech

Porte XOR e XNOR

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 41 di 90.

Questa lezione tratta due porte logiche aggiuntive: XOR (OR esclusivo) e XNOR (NOR esclusivo). Queste porte sono utili per confrontare i bit e verificare la parità.

Porta XOR

La porta XOR restituisce 1 quando gli ingressi sono diversi.

Tabella di verità (2 ingressi):

about
000
011
101
110

Primitiva di porta Verilog:

xor(out, a, b);

Equivalente dell'assegnazione continua:

assign out = a ^ b;

Porta XNOR

La porta XNOR restituisce 1 quando gli ingressi sono uguali. È l'opposto di XOR.

Tabella di verità (2 input):

about
001
010
100
111

Primitiva di porta Verilog:

xnor(out, a, b);

Equivalente dell'assegnazione continua:

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

Ingressi multipli

Le porte XOR e XNOR possono avere più di 2 ingressi. L'uscita è:

  • XOR: 1 se un numero dispari di ingressi è 1
  • XNOR: 1 se un numero pari di ingressi è 1
xor(out, a, b, c);      // XOR a 3 ingressi
xnor(out, p, q, r, s);  // XNOR a 4 ingressi

Esempio (XOR a 3 ingressi):

abcout
0000
0011
0101
0110
1001
1010
1100
1111

Usi comuni

UsoEsempio
Confrontare se due bit sono diversixor(diff, a, b)
Confrontare se due bit sono ugualixnor(same, a, b)
Generazione della parità (numero dispari di 1)xor(parity, data[0], data[1], data[2], data[3])
Controllo della parità (numero pari di 1)xnor(parity, data[0], data[1], data[2], data[3])

Esempio di codice

module xor_xnor_demo (
  input a, b,
  output xor_out,
  output xnor_out
);
  xor(xor_out, a, b);
  xnor(xnor_out, a, b);
endmodule

Tabella riassuntiva

PortaOutput 1 quandoPrimitivaOperatore
XORGli input sono diversixor(out, a, b)^
XNORGli input sono ugualixnor(out, a, b)~^
challenge icon

Sfida

Aggiungi le primitive di porta mancanti in base alle attività.

Cosa fare:

  1. Crea una porta XOR con uscita xor_result e ingressi x e y
  2. Crea una porta XNOR con uscita xnor_result e ingressi x e y

Provalo tu

module xor_xnor_challenge (
  input x,
  input y,
  output xor_result,
  output xnor_result
);
  
  // TODO: Aggiungi una porta XOR (xor_result = x ^ y)
  
  // TODO: Aggiungi una porta XNOR (xnor_result = x ~^ y)

endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online