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
endTypes de liste de sensibilité
| Type | Syntaxe | Quand le bloc s'exécute |
|---|---|---|
| Tous les signaux (combinaison) | always @(*) | Quand n'importe quel signal à l'intérieur change |
| Signaux spécifiques | always @(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 multiples | always @(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
endLe * 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
endSi 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
endUtilisez 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;
endS'exécute sur un front de horloge ou un front de réinitialisation.
Erreurs courantes
| Erreur | Pourquoi c'est incorrect |
|---|---|
always @(a or b or c) mais utilise d | d 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 |
Défi
Que faire :
- 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
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 VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'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 RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états