Menu
Coddy logo textTech

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 (örneğin bir forever döngüsünün, begin-end bloğunun veya görevin) yürütülmesini 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.

Forever Döngüsüyle 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 o adlı 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 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
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

Size sonsuza kadar çalışan bir sayaca sahip bir modül veriliyor. 

Yapılacaklar:

Her yorumu doğru kodla değiştirerek boş bloğu tamamlayın:

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

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