Menu
Coddy logo textTech

Portes XOR et 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 effectuer une vérification de parité.

Porte XOR

La porte XOR produit 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 d’une affectation continue :

assign out = a ^ b;

Porte XNOR

La porte XNOR produit 1 lorsque les entrées sont identiques. 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 d'une affectation continue :

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

Entrées multiples

Les portes XOR et XNOR peuvent avoir plus de 2 entrées. La sortie est :

  • XOR : 1 si un nombre impair d’entrées vaut 1
  • XNOR : 1 si un nombre pair d’entrées vaut 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

PorteSortie à 1 lorsquePrimitiveOpérateur
XORLes entrées sont différentesxor(out, a, b)^
XNORLes entrées sont identiquesxnor(out, a, b)~^
challenge icon

Défi

Ajoutez les primitives de portes manquantes en fonction des tâches.

À 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

Entraînez-vous par vous-même : Compilateur Verilog en ligne