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 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 b

Syntaxe 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 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 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).

challenge icon

Défi

Ce qu'il faut faire :

  1. Ajoutez la bonne `primitive` `gate` pour faire fonctionner ce circuit. Le `module` `should` produire en `output` le ET logique des `inputs` a et b. 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

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