Menu
Coddy logo textTech

Disable Statement

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

disable ifadesi, named block (örneğin bir forever döngüsü, begin-end bloğu veya görev) yürütmesini durdurur. Aksi takdirde sonsuza kadar çalışacak döngülerden çıkmak için kullanışlıdır.

Sözdizimi:

disable block_name;

Blok bir adla etiketlenmelidir.

Disable ile Forever Döngüsü

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

forever döngüsü named bir block counter 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 entire block counter durdurur; bu da forever döngüsünü hemen durdurur.

Ayrı Bir Blokta disable

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 olarak çalışır. disable counter ifadesi ayrı bir initial bloğuna yerleştirilmiştir. 50 zaman biriminden sonra disable counter yürütülür ve counter bloğunu durdurarak forever döngüsünü dışarıdan sonlandırır.

Önemli Kurallar

KuralAçıklama
Blok adlandırılmalıdırbegin : block_name
Disable yürütmeyi hemen durdururKod o anda durur
Her yerden kullanılabilirmodüldeki herhangi bir block içinden
forever döngülerini durdurmak için kullanışlıdırAksi takdirde asla durmazlar
challenge icon

Görev

forever çalışan bir counter içeren bir module veriliyor. 

Yapılacaklar:

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

  1. 50 time units beklemek için #50; ekle
  2. counter block'unu durdurmak için disable counter; ekle
  3. mesajı yazdırmak için $display("Counter stopped"); ekle
  4. simulation'ı sonlandırmak 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.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi