Sonsuz Döngü
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 61 / 90.
forever döngüsü bir kod bloğunu sürekli, sonsuza dek tekrarlar. Kendi kendine asla durmaz.
forever döngüsü durmadan tekrar tekrar çalışır. Testbench'lerde saatler ve diğer sürekli sinyalleri üretmek için kullanışlıdır.
Sözdizimi:
forever begin
// Sürekli tekrarlanan kod
endBasit Örnek
forever begin
$display("This prints forever");
endBu, sonsuza kadar yazdırır ve simülasyonunu çökertir. Her zaman bir gecikme veya durdurma koşulu ekle.
Saat Üretme (Yaygın Kullanım)
forever komutunun en yaygın kullanımı saat üretmektir:
initial begin
clk = 0;
forever begin
#5 clk = ~clk; // Her 5 zaman biriminde bir durumu tersine çevir
end
endBu, tüm simülasyon boyunca çalışan bir saat oluşturur.
Disable ile Sonsuza Kadar
Bir forever döngüsünü disable ifadesiyle durdurabilirsin:
initial begin : clock_gen // İsim buraya eklendi
clk = 0;
forever begin
#5 clk = ~clk;
end
endinitial begin
#100;
disable clock_gen; // Artık bu çalışıyor
endSonsuz Döngü ve Diğer Döngüler
| Döngü | Durur mu? | Ne Zaman Kullanılır? |
|---|---|---|
for | Evet (belirli sayıda yinelemeden sonra) | Yineleme sayısı biliniyorsa |
while | Evet (koşul yanlış olduğunda) | Durma koşulu bilinmiyorsa |
repeat | Evet (belirli sayıda yinelemeden sonra) | Yineleme sayısı biliniyorsa |
forever | Hayır (asla) | Sürekli sinyaller (saat) |
Önemli Kurallar
| Kural | Açıklama |
|---|---|
| Bir gecikme içermelidir | #10 veya @(posedge clk) |
| Gecikme olmazsa simülasyon takılır | Zaman ilerlemesi olmayan sonsuz döngü |
Döngüyü disable ile durdurun veya simülasyonu $finish ile sonlandırın | Aksi takdirde simülasyon asla bitmez |
| En iyi testbench'lerde kullanılır | Sentezlenebilir değildir |
Görev
Yapılacaklar:
Her 10 zaman biriminde bir değişen saat üretmek için eksik forever döngüsünü ekle.
Kendin dene
module forever_challenge;
reg clk;
initial begin
clk = 0;
// TODO: clk değerini her 10 zaman biriminde bir değiştirmek için forever döngüsü ekle
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