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 (forever döngüsü, begin-end bloğu veya görev gibi) yürütülmesini durdurur. Sonsuza kadar çalışacak döngülerden çıkmak için kullanışlıdır.
Sözdizimi:
disable block_name;Bloğun bir adla etiketlenmiş olması gerekir.
Sonsuz Döngü ile 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, adlandırılmış bloğun tamamını durdurur.
end
end
endforever 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
endBurada forever döngüsü, counter adlı blok içinde sürekli çalışır. disable counter ifadesi ayrı bir initial bloğuna yerleştirilir. 50 zaman biriminden sonra disable counter çalışır ve counter bloğunu durdurarak forever döngüsünü dışarıdan sonlandırır.
Önemli Kurallar
| Kural | Açıklama |
|---|---|
| Bloğa ad verilmelidir | begin : block_name |
| Devre dışı bırakma, yürütmeyi hemen 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 hiç durmazlar |
Görev
Sana sonsuza kadar çalışan bir sayaç içeren bir modül verildi.
Yapman gereken:
Her yorumu doğru kodla değiştirerek boş bloğu tamamla:
- 50 zaman birimi beklemek için
#50;ekle - Sayaç bloğunu durdurmak için
disable counter;ekle - Mesajı yazdırmak için
$display("Counter stopped");ekle - Simülasyonu bitirmek 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
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi