Menu
Coddy logo textTech

Devre Dışı Bırakma İfadesi

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

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

Sözdizimi:

disable block_name;

block bir isimle etiketlenmelidir.

Forever Loop ile Disable

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 adlandırılmış bloğun tamamını durdurur.
    end
  end
end

forever döngüsü, counter adındaki bir block içerisindedir. disable counter ifadesi döngünün içine yerleştirilmiştir. count değeri 5'e ulaştığında, disable counter çalışır ve counter adlı entire bloğu durdurur — bu da forever döngüsünü anında durdurur.

Disable in a Separate Block

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 time units sonra, disable counter yürütülür ve counter bloğunu durdurur — bu da forever döngüsünü dışarıdan sonlandırır.

Önemli Kurallar

KuralAçıklama
Block named olarak adlandırılmalıdırbegin : block_name
Disable yürütmeyi hemen stops ettirirKod o anda stops eder
Her yerden kullanılabilirmodule içindeki herhangi bir block üzerinden
forever döngülerini durdurmak için kullanışlıdırAksi takdirde hiç stops etmezler
challenge icon

Görev

Sonsuza kadar çalışan bir sayaca sahip bir modül verildi. 

Ne yapılmalı:

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

  1. 50 zaman birimi beklemek için #50; ekleyin
  2. counter 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.

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