Menu
CoddyTech

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 des boucles qui, autrement, s’exécuteraient indéfiniment.

Syntaxe :

disable block_name;

Le bloc doit porter une étiquette.

Désactiver avec une boucle infinie

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 l’intégralité de ce bloc nommé.
    end
  end
end

La boucle forever se trouve dans 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 tout le bloc counter, ce qui arrête immédiatement la boucle forever également.

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 depuis l’extérieur
end

Ici, la boucle forever s’exécute continuellement dans le bloc nommé counter. L’instruction disable counter est placée dans un bloc initial distinct. 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 de l’extérieur.

Règles importantes

RègleExplication
Le bloc doit être nommébegin : block_name
Désactiver arrête immédiatement l’exécutionLe 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 foreverSinon, elles ne s’arrêtent jamais
challenge icon

Défi

On te donne un module avec un compteur qui tourne indéfiniment. 

À faire :

Complète le bloc vide en remplaçant chaque commentaire par le code approprié :

  1. Ajoute #50; pour attendre 50 unités de temps
  2. Ajoute disable counter; pour arrêter le bloc du compteur
  3. Ajoute $display("Counter stopped"); pour afficher le message
  4. Ajoute $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
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