Instruction Disable
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 62 sur 90.
L'instruction disable arrête l'exécution d'un bloc nommé (comme une boucle forever, un bloc begin-end ou une tâche). Elle est utile pour sortir de boucles qui s'exécuteraient autrement de manière infinie.
Syntaxe :
disable block_name;Le bloc doit être étiqueté avec un nom.
Disable avec boucle Forever
initial begin : counter // counter donne au bloc le nom counter.
forever begin
#10 count = count + 1;
if (count == 5) begin
disable counter; // disable counter arrête tout ce bloc nommé.
end
end
endLa boucle forever se trouve à l'intérieur d'un bloc nommé counter. L'instruction disable counter est placée à l'intérieur de la boucle. Lorsque count atteint 5, disable counter s'exécute et arrête le bloc entier counter — ce qui arrête également immédiatement la boucle forever.
Désactiver dans un bloc séparé
initial begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // Arrête le bloc counter de l'extérieur
endIci, la boucle forever s'exécute en continu à l'intérieur du bloc nommé counter. L'instruction disable counter est placée dans un bloc initial séparé. Après 50 unités de temps, disable counter s'exécute et arrête le bloc counter — ce qui termine la boucle forever depuis l'extérieur.
Règles importantes
| Règle | Explication |
|---|---|
| Block must be named | begin : block_name |
| Disable stops execution immediately | Code stops at that moment |
| Can be used from anywhere | From any block in the module |
Useful for stopping forever loops | Otherwise they never stop |
Défi
Vous recevez un module avec un compteur qui s'exécute indéfiniment.
Ce qu'il faut faire :
Remplissez le bloc vide en remplaçant chaque commentaire par le code approprié :
- Ajoutez
#50;pour attendre 50 unités de temps - Ajoutez
disable counter;pour arrêter le bloc counter - Ajoutez
$display("Counter stopped");pour afficher le message - Ajoutez
$finish;pour terminer la simulation
Essayez vous-même
module disable_challenge;
integer count;
initial begin
count = 0;
fork
begin : counter
forever begin
#10 count = count + 1;
$display("count = %d", count);
end
end
begin
// Étape 1 : Attendre 50 unités de temps
// Étape 2 : Désactiver le bloc counter
// Étape 3 : Afficher "Counter stopped"
// Étape 4 : Terminer la simulation
end
join
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