Affectation continue
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 37 sur 90.
En matériel, une connexion est un fil physique qui relie deux points d’un circuit. Une fois le fil en place, la connexion est permanente et toujours active. Si une extrémité change, l’autre extrémité change immédiatement.
En Verilog, nous avons besoin d’un moyen de modéliser ce comportement. Nous voulons transmettre une valeur à un fil et le laisser connecté pour toujours. Le processus permettant de faire cela s’appelle une affectation continue.
Une affectation continue utilise le mot-clé assign pour créer une connexion permanente entre un fil et une expression. Le fil prend continuellement la valeur de l’expression, comme un fil physique.
Imaginez plutôt souder un fil que d’écrire une valeur une seule fois.
Syntaxe
assign wire_name = expression;| Élément | Signification |
|---|---|
assign | Mot-clé qui commence l’affectation continue |
wire_name | Le fil piloté (ne peut pas être de type reg) |
expression | La valeur qui pilote le fil |
Exemple simple
wire out;
assign out = a & b;Cela signifie : out est toujours égal à a AND b. Dès que a ou b change, out change immédiatement.
Comment cela fonctionne
Contrairement à un reg qui stocke une valeur, un wire avec une affectation continue est constamment mis à jour :
module continuous_demo;
reg a, b;
wire c;
assign c = a & b; // c suit a AND b en permanence
initial begin
a = 0; b = 0;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0
a = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0 (1&0=0)
b = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=1 (1&1=1)
$finish;
end
endmoduleSortie :
a=0, b=0, c=0
a=1, b=0, c=0
a=1, b=1, c=1Chaque fois que a ou b change, c se met automatiquement à jour.
Attributions multiples
Vous pouvez avoir plusieurs assignations continues dans un module :
module multiple_assign (
input a, b, c,
output x, y
);
assign x = a & b;
assign y = x | c; // y dépend de x
endmoduleToutes les affectations s’exécutent en parallèle, en continu.
Utilisations courantes
Les affectations continues sont utilisées pour :
- Logique combinatoire simple (AND, OR, XOR)
- Relier des fils entre eux
- Créer des buffers à trois états
- Piloter des sorties à partir d’expressions combinatoires
Défi
À faire :
- Ajoutez l’affectation continue manquante qui rend
zégal àx AND y.
Essayez vous-même
module continuous_challenge (
input x,
input y,
output z
);
// TODO: Ajoutez l'assignation continue manquante qui rend z égal à x AND y
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 VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une 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 RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne