Primitives de portes intégrées
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 39 sur 90.
Verilog possède des primitives de portes intégrées qui vous permettent de décrire des circuits logiques en utilisant des symboles de portes réels. C'est ce qu'on appelle la modélisation structurelle — vous construisez des circuits en connectant des portes, tout comme si vous dessiniez un schéma.
Les primitives de porte sont des mots-clés prédéfinis qui modélisent les portes logiques de base. Au lieu d'écrire une expression comme assign out = a & b, vous instanciez une porte :
and(out, a, b); // Porte ET avec la sortie out, les entrées a et bSyntaxe générale
gate_type (output, input1, input2, ...);- Le premier argument est toujours la sortie
- Les arguments suivants sont les entrées (1 ou plus, selon la porte)
Primitives de portes disponibles
| Type de porte | Mot-clé | Nombre d'entrées |
|---|---|---|
| AND | and | 2 ou plus |
| OR | or | 2 ou plus |
| NOT | not | 1 |
| NAND | nand | 2 ou plus |
| NOR | nor | 2 ou plus |
| XOR | xor | 2 ou plus |
| XNOR | xnor | 2 ou plus |
Comment fonctionnent les primitives de porte
Lorsque vous écrivez and(out, a, b), Verilog crée une porte ET qui pilote en continu out avec le résultat de a & b. Chaque fois que a ou b change, out se met à jour immédiatement — tout comme une porte réelle.
Primitives de portes vs Assignation continue
Les deux méthodes produisent le même matériel :
// Primitive de porte
and(out, a, b);
// Assignation continue (même résultat)
assign out = a & b;Les primitives de porte sont utiles lorsque vous souhaitez décrire un circuit comme une collection de portes (style structurel). L'assignation continue est préférable pour le style comportemental (expressions).
Défi
Ce qu'il faut faire :
- Ajoutez la primitive de porte correcte pour faire fonctionner ce circuit. Le module doit produire le ET (AND) des entrées
aetb. Le port de sortie est déjà nomméc.
Aide-mémoire
Les primitives de porte (gate primitives) en Verilog permettent une modélisation structurelle en instanciant directement des portes logiques.
Syntaxe : Le premier argument est toujours la sortie, suivie des entrées :
gate_type(output, input1, input2, ...);Primitives disponibles :
| Porte | Mot-clé | Entrées |
|---|---|---|
| ET (AND) | and | 2+ |
| OU (OR) | or | 2+ |
| NON (NOT) | not | 1 |
| NON-ET (NAND) | nand | 2+ |
| NON-OU (NOR) | nor | 2+ |
| OU exclusif (XOR) | xor | 2+ |
| NON-OU exclusif (XNOR) | xnor | 2+ |
Les primitives de porte et l'instruction assign produisent un matériel équivalent :
and(out, a, b); // structurel (primitive de porte)
assign out = a & b; // comportemental (assignation continue)Essayez vous-même
module gate_challenge (
input a,
input b,
output c
);
// TODO: Ajouter la primitive de porte correcte
// La sortie c doit être a ET b
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