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 pour le contrôle de parité.
Porte XOR
La porte XOR produit en sortie 1 lorsque les entrées sont différentes.
Table de vérité (2 entrées) :
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Primitive de porte Verilog :
xor(out, a, b);Équivalent d'affectation continue :
assign out = a ^ b;Porte XNOR
La porte XNOR produit une sortie de 1 lorsque les entrées sont identiques. C'est l'opposé de la porte XOR.
Table de vérité (2 entrées) :
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Primitive de porte Verilog :
xnor(out, a, b);Équivalent d'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 valent 1
- XNOR : 1 si un nombre pair d'entrées valent 1
xor(out, a, b, c); // XOR à 3 entrées
xnor(out, p, q, r, s); // XNOR à 4 entréesExemple (XOR à 3 entrées) :
| a | b | c | out |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
Utilisations courantes
| Utilisation | Exemple |
|---|---|
| Comparer si deux bits sont différents | xor(diff, a, b) |
| Comparer si deux bits sont identiques | xnor(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);
endmoduleTableau récapitulatif
| Porte | Sortie à 1 quand | Primitive | Opérateur |
|---|---|---|---|
| XOR | Les entrées sont différentes | xor(out, a, b) | ^ |
| XNOR | Les entrées sont identiques | xnor(out, a, b) | ~^ |
Défi
Ajoutez les primitives de porte manquantes en fonction des tâches.
Ce qu'il faut faire :
- Créez une porte XOR avec la sortie
xor_resultet les entréesxety - Créez une porte XNOR avec la sortie
xnor_resultet les entréesxety
Aide-mémoire
Le XOR produit 1 lorsque les entrées sont différentes. Le XNOR produit 1 lorsque les entrées sont identiques.
| Porte | Sortie à 1 quand | Primitive | Opérateur |
|---|---|---|---|
| XOR | Les entrées sont différentes | xor(out, a, b) | ^ |
| XNOR | Les entrées sont identiques | xnor(out, a, b) | ~^ |
Pour des entrées multiples : le XOR produit 1 si un nombre impair d'entrées est à 1 ; le XNOR produit 1 si un nombre pair d'entrées est à 1.
xor(out, a, b, c); // XOR à 3 entrées
xnor(out, p, q, r, s); // XNOR à 4 entréesEssayez vous-même
module xor_xnor_challenge (
input x,
input y,
output xor_result,
output xnor_result
);
// À FAIRE : Ajouter une porte XOR (xor_result = x ^ y)
// À FAIRE : Ajouter une porte XNOR (xnor_result = x ~^ y)
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états