Menu
Coddy logo textTech

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 olarak, sonsuza dek tekrarlar. 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 durdurabilirsiniz:

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

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

DöngüDurur mu?Ne Zaman Kullanılır
forEvet (sabit sayıda yinelemeden sonra)Bilinen yineleme sayısı
whileEvet (koşul yanlış olduğunda)Bilinmeyen durma koşulu
repeatEvet (sabit sayıda yinelemeden sonra)Bilinen yineleme sayısı
foreverHayır (asla)Sürekli sinyaller (saat)

Önemli Kurallar

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

Görev

Yapılacaklar:

Her 10 zaman biriminde bir geçiş yapan bir saat oluşturmak için eksik forever döngüsünü ekleyin.

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.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi