Menu
Coddy logo textTech

Liste de sensibilité

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

La sensitivity list indique au bloc always quand s'exécuter. Elle est écrite entre parenthèses après le symbole @.

La list de sensibilité est un ensemble de signals ou d'événements qui déclenchent le bloc always. Lorsqu'un signal de la liste varie (changes), le bloc executes.

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 (combinaison)always @(*)Quand n'importe quel signal à l'intérieur change
Signaux spécifiquesalways @(a or b)Quand 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 un front d'horloge ou un front de réinitialisation

Option 1: Tous les signaux (*)

Le plus sûr et le plus courant pour la logique combinatoire.

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

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

Option 2 : Signaux spécifiques

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

Si vous oubliez un signal, l'output ne se met pas à jour en simulation when ce signal changes — ainsi la simulation ne correspond 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 rising edge, negedge pour falling edge.

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 de horloge ou un front de réinitialisation.

Erreurs courantes

ErreurPourquoi c'est incorrect
always @(a or b or c) mais utilise dd manquant → la sortie devient périmée en simulation (désaccord sim/synth)
always @(posedge clk or reset)posedge manquant pour le reset
always @(clk)Devrait utiliser posedge clk pour les flip-flops
challenge icon

Défi

Que faire :

  1. Ajoutez la liste de sensibilité correcte pour faire fonctionner ce flip-flop. 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