Menu
Coddy logo textTech

For Döngüsü

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

Verilog'daki döngüler, bir kod bloğunu birden fazla kez yürütmenize olanak tanır. Özellikle testbench'lerde tekrarlayan test modelleri oluşturmak, belleği başlatmak ve diziler üzerinde yineleme yapmak için kullanışlıdırlar. Paralel olarak çalışan donanım tanımlarının aksine, döngüler ardışık olarak yürütülür; bu da onları simülasyon ve test için ideal hale getirir.

En yaygın kullanılan döngü, belirli bir sayıda tekrarlanan <strong>for</strong> döngüsüdür. Bir for döngüsü, her yinelemede değişen bir döngü değişkeni ile bir kod bloğunu tekrar tekrar çalıştırır. Tam olarak kaç kez çalışacağını siz kontrol edersiniz.

Sözdizimi:

for (initialization; condition; increment) begin
  // Tekrarlanacak kod
end
BölümNe YaparÖrnek
initializationBaşlangıç değerini ayarlari = 0
conditionNe zaman duracağıi < 10
incrementHer döngüde değişiri = i + 1

Basit Örnek

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

Çıktı:

i = 0
i = 1
i = 2
i = 3
i = 4

Döngü 5 kez çalışır (i = 0, 1, 2, 3, 4).

Testbench'lerde For Döngüsü

For döngüleri, tüm giriş kombinasyonlarını test etmek için yaygın olarak kullanılır:

reg [3:0] test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

Bu, 4 bitlik bir sinyalin tüm 16 olası değerini test eder.

Dizilerle For Döngüsü

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

Bu, 10 bellek konumunu başlatır.

Önemli Kurallar

KuralAçıklama
Döngü değişkeni integer veya reg olmalıdır wire olamaz
Birden fazla ifade için begin/end kullanınBirden fazla satır için gereklidir
Sonsuz döngülerden kaçınınKoşulun eninde sonunda yanlış olduğundan emin olun
En iyi testbench'lerde kullanılırÇoğu döngü sentezlenebilir değildir
challenge icon

Görev

Yapılacaklar:

0'dan 3'e kadar olan sayıları yazdırmak için eksik for döngüsünü ekleyin.

Kopya kağıdı

Verilog'daki for döngüsü, bir kod bloğunu belirli bir sayıda tekrar eder:

for (initialization; condition; increment) begin
  // Tekrar edilecek kod
end

0'dan 4'e kadar yazdırma örneği:

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

Temel kurallar:

  • Döngü değişkeni integer veya reg olmalıdır (wire değil)
  • Birden fazla ifade için begin/end kullanın
  • Sonsuz döngülerden kaçınmak için koşulun en sonunda yanlış (false) olduğundan emin olun
  • Döngüler en iyi testbench'lerde kullanılır (çoğunlukla sentezlenemezler)

Kendin dene

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // YAPILACAK: for döngüsü ekle
    // i = 0 olarak başlat
    // i < 4 olduğu sürece döngüyü çalıştır
    // i = i + 1 artır
    // İçeride, i'yi yazdır
    
    $finish;
  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