Menu
Coddy logo textTech

Portes XOR XNOR

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 41 sur 90.

Cette leçon couvre deux portes logiques supplémentaires : XOR (OU exclusif) et XNOR (NON-OU exclusif). Ces portes sont utiles pour comparer des bits et vérifier la parité.

Porte XOR

La porte XOR renvoie 1 lorsque les entrées sont différentes.

Table de vérité (2 entrées) :

about
000
011
101
110

Primitive de porte Verilog :

xor(out, a, b);

Équivalent en affectation continue :

assign out = a ^ b;

Porte XNOR

La porte XNOR renvoie 1 lorsque les entrées sont les mêmes (same). C'est l'opposé de XOR.

Table de vérité (2 entrées) :

about
001
010
100
111

Primitive de porte Verilog :

xnor(out, a, b);

Équivalent en affectation continue :

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

Multiple Inputs

XOR and XNOR gates can have more than 2 inputs. The output is:

  • XOR: 1 if an odd number of inputs are 1
  • XNOR: 1 if an even number of inputs are 1
xor(out, a, b, c);      // XOR à 3 entrées
xnor(out, p, q, r, s);  // XNOR à 4 entrées

Exemple (XOR à 3 entrées) :

abcout
0000
0011
0101
0110
1001
1010
1100
1111

Utilisations courantes

UtilisationExemple
Comparer si deux bits sont différentsxor(diff, a, b)
Comparer si deux bits sont identiquesxnor(same, a, b)
Génération de parité (nombre impair de 1)xor(parity, data[0], data[1], data[2], data[3])
Vérification de parité (nombre pair de 1)xnor(parity, data[0], data[1], data[2], data[3])

Exemple de code

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

Tableau récapitulatif

GateOutput 1 quandPrimitiveOpérateur
XORLes inputs sont différentsxor(out, a, b)^
XNORLes inputs sont les mêmexnor(out, a, b)~^
challenge icon

Défi

Ajoutez les primitives de portes manquantes en vous basant sur les tâches.

Ce qu'il faut faire :

  1. Créez une porte XOR avec la sortie xor_result et les entrées x et y
  2. Créez une porte XNOR avec la sortie xnor_result et les entrées x et y

Essayez vous-même

module xor_xnor_challenge (
  input x,
  input y,
  output xor_result,
  output xnor_result
);
  
  // TODO: Ajouter la porte XOR (xor_result = x ^ y)
  
  // TODO: Ajouter la porte XNOR (xnor_result = x ~^ y)

endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux