Menu
Coddy logo textTech

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 b

Syntaxe 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 porteMot-cléNombre d'entrées
ANDand2 ou plus
ORor2 ou plus
NOTnot1
NANDnand2 ou plus
NORnor2 ou plus
XORxor2 ou plus
XNORxnor2 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).

challenge icon

Défi

Ce qu'il faut faire :

  1. Ajoutez la primitive de porte correcte pour faire fonctionner ce circuit. Le module doit produire le ET (AND) des entrées a et b. 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 :

PorteMot-cléEntrées
ET (AND)and2+
OU (OR)or2+
NON (NOT)not1
NON-ET (NAND)nand2+
NON-OU (NOR)nor2+
OU exclusif (XOR)xor2+
NON-OU exclusif (XNOR)xnor2+

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

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