Menu
CoddyTech

Devre Dışı Bırakma İfadesi

Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 62 / 90.

disable ifadesi, adlandırılmış bir bloğun (forever döngüsü, begin-end bloğu veya görev gibi) yürütülmesini durdurur. Sonsuza kadar çalışacak döngülerden çıkmak için kullanışlıdır.

Sözdizimi:

disable block_name;

Bloğun bir adla etiketlenmiş olması gerekir.

Sonsuz Döngü ile Devre Dışı Bırakma

initial begin : counter // counter, bloğa counter adını verir.
  forever begin
    #10 count = count + 1;
    if (count == 5) begin
      disable counter;   // disable counter, adlandırılmış bloğun tamamını durdurur.
    end
  end
end

forever döngüsü, counter adlı bir bloğun içindedir. disable counter ifadesi döngünün içine yerleştirilmiştir. count 5'e ulaştığında disable counter çalışır ve counter bloğunun tamamını durdurur; bu da forever döngüsünü hemen durdurur.

Ayrı Bir Blokta Devre Dışı Bırakma

initial begin : counter
  forever begin
    #10 count = count + 1;
  end
end

initial begin
  #50;
  disable counter;   // counter bloğunu dışarıdan durdurur
end

Burada forever döngüsü, counter adlı blok içinde sürekli çalışır. disable counter ifadesi ayrı bir initial bloğuna yerleştirilir. 50 zaman biriminden sonra disable counter çalışır ve counter bloğunu durdurarak forever döngüsünü dışarıdan sonlandırır.

Önemli Kurallar

KuralAçıklama
Bloğa ad verilmelidirbegin : block_name
Devre dışı bırakma, yürütmeyi hemen durdururKod o anda durur
Her yerden kullanılabilirModüldeki herhangi bir bloktan
forever döngülerini durdurmak için kullanışlıdırAksi takdirde hiç durmazlar
challenge icon

Görev

Sana sonsuza kadar çalışan bir sayaç içeren bir modül verildi. 

Yapman gereken:

Her yorumu doğru kodla değiştirerek boş bloğu tamamla:

  1. 50 zaman birimi beklemek için #50; ekle
  2. Sayaç bloğunu durdurmak için disable counter; ekle
  3. Mesajı yazdırmak için $display("Counter stopped"); ekle
  4. Simülasyonu bitirmek için $finish; ekle

Kendin dene

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
        // Adım 1: 50 zaman birimi bekle
        
        // Adım 2: counter bloğunu devre dışı bırak
        
        // Adım 3: "Counter stopped" yazdır
        
        // Adım 4: Simülasyonu sonlandır
        
      end
    join
  end
endmodule
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi