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, autrement, s'exécuteraient indéfiniment.
Syntaxe :
disable block_name;Le bloc doit être étiqueté avec un nom.
Désactiver avec une boucle Forever
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 l'ensemble de 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 l'ensemble du bloc counter — ce qui arrête également immédiatement la boucle forever.
Désactiver dans un bloc séparé
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 continuellement à 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 met fin à la boucle forever depuis l'extérieur.
Règles importantes
| Règle | Explication |
|---|---|
| Le bloc doit être nommé | begin : block_name |
| Disable arrête l'exécution immédiatement | Le code s'arrête à ce moment-là |
| Peut être utilisé de n'importe où | Depuis n'importe quel bloc du module |
Utile pour arrêter les boucles forever | Sinon, elles ne s'arrêtent jamais |
Défi
On vous donne un module avec un compteur qui s'exécute indéfiniment.
Ce qu'il faut faire :
Complétez le bloc vide en remplaçant chaque commentaire par le code correct :
- Ajoutez
#50;pour attendre 50 unités de temps - Ajoutez
disable counter;pour arrêter le bloc du compteur - Ajoutez
$display("Counter stopped");pour afficher le message - Ajoutez
$finish;pour terminer la simulation
Aide-mémoire
L'instruction disable arrête l'exécution d'un bloc nommé (par exemple, une boucle forever). Le bloc doit être étiqueté en utilisant begin : block_name.
Désactiver depuis l'intérieur du bloc :
begin : counter
forever begin
#10 count = count + 1;
if (count == 5) disable counter;
end
endDésactiver depuis un bloc séparé :
begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // arrête le bloc nommé depuis l'extérieur
endEssayez 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