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
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 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
| Kural | Açıklama |
|---|---|
| Blok adlandırılmalıdır | 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
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:
- 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
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