Devre Dışı Bırakma İfadesi
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 62 / 90.
disable ifadesi, isimlendirilmiş bir bloğun (forever döngüsü, begin-end bloğu veya bir task 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;Blok bir isimle etiketlenmelidir.
Forever Döngüsü ile Devre Dışı Bırakma
begin : counter // counter, bloğa counter adını verir.
forever begin
#10 count = count + 1;
if (count == 5) begin
disable counter; // disable counter, isimlendirilmiş bloğun tamamını durdurur.
end
end
endforever döngüsü, counter adlı isimlendirilmiş 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 tüm counter bloğunu durdurur — bu da aynı zamanda forever döngüsünü de anında durdurur.
Ayrı Bir Blokta Devre Dışı Bırakma
begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // Sayaç bloğunu dışarıdan durdurur
endBurada, forever döngüsü counter adlı bloğun içinde sürekli olarak çalışır. disable counter ifadesi ayrı bir initial bloğuna yerleştirilmiştir. 50 zaman birimi 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 |
|---|---|
| Blok isimlendirilmelidir | begin : block_name |
| Disable yürütmeyi anında durdurur | Kod o anda durur |
| Her yerden kullanılabilir | Modüldeki herhangi bir bloktan |
forever döngülerini durdurmak için kullanışlıdır | Aksi takdirde asla durmazlar |
Görev
Sonsuza kadar çalışan bir sayaca sahip bir modül size verilmiştir.
Ne yapmalı:
Her bir yorumu doğru kodla değiştirerek boş bloğu tamamlayın:
- 50 zaman birimi beklemek için
#50;ekleyin - Sayaç bloğunu durdurmak için
disable counter;ekleyin - Mesajı yazdırmak için
$display("Counter stopped");ekleyin - Simülasyonu sonlandırmak için
$finish;ekleyin
Kopya kağıdı
disable ifadesi, isimlendirilmiş bir bloğun (örneğin, forever döngüsü) yürütülmesini durdurur. Blok, begin : block_name kullanılarak etiketlenmelidir.
Bloğun içinden devre dışı bırakma:
begin : counter
forever begin
#10 count = count + 1;
if (count == 5) disable counter;
end
endAyrı bir bloktan devre dışı bırakma:
begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // isimlendirilmiş bloğu dışarıdan durdurur
endKendin 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 (disable)
// 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ığı