Primitives de portes intégrées
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 39 sur 90.
Verilog dispose de primitives de portes intégrées qui vous permettent de décrire des circuits logiques à l'aide de symboles de portes réels. C'est ce qu'on appelle la modélisation structurelle — vous construisez des circuits en connectant des portes, exactement comme lorsque vous dessinez un schéma.
Les primitives `gate` sont des mots-clés prédéfinis qui modélisent des portes logiques de base. Au lieu d'écrire une expression comme assign out = a & b, vous instanciez une porte :
and(out, a, b); // Porte AND avec sortie out, entrées a et bSyntaxe générale
gate_type (output, input1, input2, ...);- Le premier argument est toujours l'output
- Les arguments suivants sont les inputs (1 ou plus, selon la gate)
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 portes (gate)
Lorsque vous écrivez and(out, a, b), Verilog crée une porte AND qui pilote en continu (continuous) out avec le résultat de a & b. Chaque fois que a ou b change, out se met à jour immédiatement — tout comme une vraie porte (gate).
Gate Primitives vs Continuous Assignment
Les deux méthodes produisent le même matériel :
// Primitive de porte
and(out, a, b);
// Affectation continue (même résultat)
assign out = a & b;Les primitives `gate` sont utiles lorsque vous souhaitez décrire un circuit sous la forme d'une collection de `gates` (style `structural`). L'`assignment` `continuous` est plus adapté au style `behavioral` (expressions).
Défi
Ce qu'il faut faire :
- Ajoutez la bonne `primitive` `gate` pour faire fonctionner ce circuit. Le `module` `should` produire en `output` le ET logique des `inputs`
aetb. Le port d'`output` est déjà nomméc.
Essayez vous-même
module gate_challenge (
input a,
input b,
output c
);
// TODO: Ajoutez la primitive de porte correcte
// La sortie c doit être a AND 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