Menu
Coddy logo textTech

Liste de sensibilité

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 48 sur 90.

La liste de sensibilité indique au bloc always quand s’exécuter. Elle s’écrit entre parenthèses après le symbole @.

La liste de sensibilité est un ensemble de signaux ou d’événements qui déclenchent le bloc always. Lorsqu’un signal de la liste change, le bloc s’exécute.

Syntaxe :

always @(sensitivity_list) begin
  // Le code s'exécute lorsque les signaux de la liste changent
end

Types de liste de sensibilité

TypeSyntaxeQuand le bloc s’exécute
Tous les signaux (combinatoire)always @(*)Lorsqu’un signal à l’intérieur change
Signaux spécifiquesalways @(a or b)Lorsque a ou b change
Déclenchement sur front (séquentiel)always @(posedge clk)Sur le front montant de l’horloge
Fronts multiplesalways @(posedge clk or posedge reset)Sur le front de l’horloge ou le front de réinitialisation

Option 1 : Tous les signaux (*)

La méthode la plus sûre et la plus courante pour la logique combinatoire.

always @(*) begin
  out = a & b;   // S'exécute lorsque a ou b changent
end

Le * inclut automatiquement tous les signaux lus dans le bloc.

Option 2 : Signaux spécifiques

always @(a or b) begin
  out = a & b;   // S'exécute lorsque a ou b change
end

Si vous oubliez un signal, la sortie ne se met pas à jour en simulation lorsque ce signal change ; la simulation ne correspond donc plus au matériel synthétisé.

Option 3 : Déclenchement sur front (posedge)

always @(posedge clk) begin
  q <= d;        // S'exécute sur le front montant de l'horloge
end

Utilisez posedge pour le front montant, negedge pour le front descendant.

Option 4 : Bords multiples

always @(posedge clk or posedge reset) begin
  if (reset)
    q <= 0;
  else
    q <= d;
end

S’exécute sur un front d’horloge ou un front de réinitialisation.

Erreurs courantes

ErreurPourquoi est-ce incorrect ?
always @(a or b or c) mais utilise dd manquant → la sortie devient obsolète lors de la simulation (incompatibilité sim/synth)
always @(posedge clk or reset)posedge manquant pour le reset
always @(clk)Il faut utiliser posedge clk pour les bascules
challenge icon

Défi

À faire :

  1. Ajoutez la liste de sensibilité correcte pour faire fonctionner cette bascule. Le bloc doit s’exécuter sur le front montant de clk.

Essayez vous-même

module flipflop (
  input clk,
  input d,
  output reg q
);
  
  always @(______) begin
    q <= d;
  end

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