Portes AND OR NOT
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 40 sur 90.
Cette leçon couvre les trois portes logiques les plus fondamentales : AND, OR et NOT. Ces portes constituent le fondement de la conception logique numérique.
Porte ET
La porte ET produit une sortie de 1 uniquement lorsque toutes les entrées sont à 1.
Table de vérité (2 entrées) :
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Primitive de porte Verilog :
and(out, a, b);Équivalent d'assignation continue :
assign out = a & b;Porte OU
La porte OU produit une sortie de 1 lorsqu'au moins une entrée est 1.
Table de vérité (2 entrées) :
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Primitive de porte Verilog :
or(out, a, b);Équivalent en assignation continue :
assign out = a | b;Porte NON
La porte NON produit l'opposé de son unique entrée. Elle est également appelée un inverseur.
Table de vérité :
| a | out |
|---|---|
| 0 | 1 |
| 1 | 0 |
Primitive de porte Verilog :
not(out, a);Équivalent en assignation continue :
assign out = ~a;Entrées multiples
Les portes AND et OR peuvent avoir plus de 2 entrées :
and(out, a, b, c); // AND à 3 entrées (out = a & b & c)
or(out, x, y, z, w); // OR à 4 entréesLes portes NOT ont toujours exactement 1 entrée.
Exemple de code
module and_or_not (
input a, b,
output and_out,
output or_out,
output not_out
);
and(and_out, a, b); // porte ET
or(or_out, a, b); // porte OU
not(not_out, a); // porte NON (inverseur)
endmoduleDéfi
Ajoutez les primitives de portes manquantes en fonction des tâches.
Ce qu'il faut faire :
- Créez une porte AND avec la sortie
and_resultet les entréespetq - Créez une porte OR avec la sortie
or_resultet les entréespetq - Créez une porte NOT avec la sortie
not_resultet l'entréep
Aide-mémoire
Portes logiques de base en Verilog utilisant des primitives de porte et l'assignation continue :
| Porte | Primitive | Assignation | La sortie est 1 quand... |
|---|---|---|---|
| AND | and(out, a, b); | assign out = a & b; | Toutes les entrées sont à 1 |
| OR | or(out, a, b); | assign out = a | b; | Au moins une entrée est à 1 |
| NOT | not(out, a); | assign out = ~a; | L'entrée est à 0 |
AND et OR supportent plus de 2 entrées ; NOT a toujours exactement 1 entrée :
and(out, a, b, c); // AND à 3 entrées
or(out, a, b, c, d); // OR à 4 entréesmodule example (input a, b, output and_out, or_out, not_out);
and(and_out, a, b);
or(or_out, a, b);
not(not_out, a);
endmoduleEssayez vous-même
module gates_challenge (
input p,
input q,
output and_result,
output or_result,
output not_result
);
// TODO: Ajouter une porte ET (and_result = p & q)
// TODO: Ajouter une porte OU (or_result = p | q)
// TODO: Ajouter une porte NON (not_result = ~p)
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