Menu
Coddy logo textTech

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émentSignification
assignMot-clé qui commence l’affectation continue
wire_nameLe fil piloté (ne peut pas être de type reg)
expressionLa 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
endmodule

Sortie :

a=0, b=0, c=0
a=1, b=0, c=0
a=1, b=1, c=1

Chaque 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
endmodule

Toutes 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
challenge icon

Défi

À faire :

  1. 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
  

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

Entraînez-vous par vous-même : Compilateur Verilog en ligne