Menu
Coddy logo textTech

XOR XNOR Gates

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 (OR exclusif) et XNOR (NOR exclusif). Ces portes sont utiles pour comparer des bits et vérifier la 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 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 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

GateSortie à 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.

Que 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