Menu
CoddyTech

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
end

Basit Örnek

forever begin
  $display("This prints forever");
end

Bu, 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
end

Bu, 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
end
initial begin
  #100;
  disable clock_gen;   // Artık bu çalışıyor
end

Sonsuz Döngü ve Diğer Döngüler

DöngüDurur mu?Ne Zaman Kullanılır?
forEvet (belirli sayıda yinelemeden sonra)Yineleme sayısı biliniyorsa
whileEvet (koşul yanlış olduğunda)Durma koşulu bilinmiyorsa
repeatEvet (belirli sayıda yinelemeden sonra)Yineleme sayısı biliniyorsa
foreverHayır (asla)Sürekli sinyaller (saat)

Önemli Kurallar

KuralAçıklama
Bir gecikme içermelidir#10 veya @(posedge clk)
Gecikme olmazsa simülasyon takılırZaman ilerlemesi olmayan sonsuz döngü
Döngüyü disable ile durdurun veya simülasyonu $finish ile sonlandırınAksi takdirde simülasyon asla bitmez
En iyi testbench'lerde kullanılırSentezlenebilir değildir
challenge icon

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
endmodule
quiz iconKendini test et

Bu 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

Kendi başına pratik yap: Online Verilog derleyicisi