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 loop'lar, bir kod bloğunu birden fazla kez çalıştırmanıza olanak tanır. Özellikle yinelemeli test desenleri oluşturmak, memory ilklendirmek ve diziler üzerinde yineleme yapmak için testbench'lerde oldukça kullanışlıdırlar. Paralel olarak çalışan donanım tanımlamalarının aksine, loop'lar sıralı olarak çalışır; bu da onları simülasyon ve test için ideal kılar.

En yaygın kullanılan loop, belirli bir sayıda tekrarlanan <strong>for</strong> loop'tur. Bir for loop, her yinelemede değişen bir loop değişkeni ile bir kod bloğunu tekrarlı olarak ç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, genellikle tüm giriş kombinasyonlarını test etmek için 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ı tüm 16 değerini test eder.

Diziler ile For Loop

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 işlem 10 memory konumunu ilklendirir (initialize eder).

Önemli Kurallar

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

Görev

Ne yapılmalı:

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

Kendin dene

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: for döngüsü ekle
    // i = 0 olarak başlat
    // i < 4 iken döngü yap
    // i = i + 1 olarak 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