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
endforever 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
endBurada, 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
| Kural | Açıklama |
|---|---|
| Block named olarak adlandırılmalıdır | begin : block_name |
| Disable yürütmeyi hemen stops ettirir | Kod o anda stops eder |
| Her yerden kullanılabilir | module içindeki herhangi bir block üzerinden |
forever döngülerini durdurmak için kullanışlıdır | Aksi takdirde hiç stops etmezler |
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:
- 50 zaman birimi beklemek için
#50;ekleyin counterbloğunu durdurmak içindisable counter;ekleyin- Mesajı yazdırmak için
$display("Counter stopped");ekleyin - 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
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı