Menu
Coddy logo textTech

Forever Loop

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 61 / 90.

forever sürekli olarak, sonsuza kadar bir kod bloğunu repeats. Kendi kendine asla durmaz.

Bir forever döngüsü, end olmadan tekrar tekrar çalışır. Testbench'lerde saatler ve diğer sürekli sinyalleri oluşturmak için kullanışlıdır.

Sözdizimi:

forever begin
  // Sonsuza kadar tekrar eden kod
end

Basit Örnek

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

Bu, sonsuza kadar yazdırır ve simülasyonunuzu çökertebilir. Her zaman bir gecikme veya durdurma koşulu ekleyin.

Saat Üretme (Yaygın Kullanım)

forever ifadesinin en yaygın kullanımı bir saat üretmektir:

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;   // Her 5 zaman biriminde tersine çevir
  end
end

Bu, tüm simülasyon boyunca çalışan bir saat oluşturur.

Disable ile Forever

Bir forever döngüsünü disable ifadesini kullanarak durdurabilirsin:

initial begin : clock_gen   // İsim buraya eklendi
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end
initial begin
  #100;
  disable clock_gen;   // Şimdi bu çalışıyor
end

forever ve Diğer loop'lar

loopDurur mu?Ne Zaman Kullanılır
forEvet (sabit yineleme sayısından sonra)Bilinen sayıda repeats
whileEvet (koşul false olduğunda)Bilinmeyen durma koşulu
repeatEvet (sabit yineleme sayısından sonra)Bilinen sayıda repeats
foreverHayır (asla)Sürekli sinyaller (clock)

Önemli Kurallar

KuralAçıklama
Bir gecikme içermelidir#10 veya @(posedge clk)
Gecikme olmadan simülasyon takılırZaman ilerlemesi olmayan sonsuz loop
Durdurmak için disable ile kullanınAksi hâlde simülasyon asla sona ermez
En iyi testbench'lerde kullanılırSentezlenebilir değildir
challenge icon

Görev

Yapılacaklar:

Her 10 time units'te bir değişen bir saat oluşturmak için eksik forever döngüsünü Add.

Kendin dene

module forever_challenge;
  reg clk;
  
  initial begin
    clk = 0;
    // TODO: clk'i her 10 zaman biriminde 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.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi