Menu
CoddyTech

For Döngüsü

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

Verilog'daki döngüler, bir kod bloğunu birden çok kez çalıştırmanı sağlar. Tekrarlayan test desenleri oluşturmak, belleği başlatmak ve diziler üzerinde yineleme yapmak için test tezgâhlarında özellikle kullanışlıdır. Paralel çalışan donanım tanımlarından farklı olarak döngüler sıralı biçimde çalışır; bu da onları simülasyon ve test için ideal kılar.

En yaygın kullanılan döngü, belirli sayıda tekrarlanan for döngüsüdür. Bir for döngüsü, her yinelemede değişen bir döngü değişkeniyle bir kod bloğunu tekrar tekrar çalıştırır. Kaç kez çalışacağını tam olarak sen belirlersin.

Sözdizimi:

for (initialization; condition; increment) begin
  // Tekrarlanacak kod
end
BölümNe İşe YararÖrnek
initializationBaşlangıç değerini belirleri = 0
conditionNe zaman duracağını belirleri < 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:

integer 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 olası 16 değerinin tümünü 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ırwire 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 false olduğundan emin olun
Sentezlenebilir kodda sabit sınırlar kullanınSentez, döngüyü her yineleme başına mantığın bir kopyasına açar
challenge icon

Görev

Yapman gereken:

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

Kendin dene

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: for döngüsü ekle
    // i = 0 olacak şekilde başlat
    // i < 4 olduğu sürece döngüyü sürdür
    // i = i + 1 olacak şekilde artır
    // Döngünün içinde şununla yazdır: $display("i = %d", i);
    
    $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.

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

Kendi başına pratik yap: Online Verilog derleyicisi