Menu
Coddy logo textTech

Initial Block

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

Verilog'da iki prosedürel blok vardır: initial (bir kez çalışır) ve always (sürekli çalışır). Şimdi initial bloğunu ele alalım.

Initial Bloğu Nedir?

initial bloğu simülasyonun başlangıcında (time 0) yalnızca bir kez çalışır. Tamamlandığında tekrar çalışmaz.

Temel olarak testbench içinde şu amaçlarla kullanılır:

  • Başlangıç değerlerini ayarlamak
  • Test sinyalleri oluşturmak
  • Mesajları görüntülemek
  • Simülasyonu başlatmak

Sözdizimi

initial begin
  // İfadeler bir kez, sırayla yürütülür
end

Temel Örnek

initial begin
  $display("Simulation started");
  $display("This runs once");
  $finish;
end

Çıktı:

Simulation started
This runs once

Test Sinyalleri için Initial Block Kullanımı

initial begin
  a = 0;
  #10 a = 1;
  #10 a = 0;
  #10 $finish;
end

Bu, a değerini şu zamanlarda değiştirir: 0, 10 ve 20.

initial ve always

 initialalways
RunsOnceSürekli (sonsuza kadar)
Use forTestbench'ler, başlatmaDonanım (flip-flop'lar, sayaçlar)
Synthesizable?Hayır (yalnızca simülasyon)Evet (duyarlılık listesiyle)

Önemli Notlar

  • initial blokları sentezlenebilir değildir. Donanıma dönüştürülemezler
  • initial yalnızca testbench'lerde kullanın
  • Testbench serbest çalışan bir saat içeriyorsa (ör. always #5 clk = ~clk;), $finish çağırmadığınız sürece simülasyon sonsuza kadar çalışır; yalnızca bir initial bloğu olduğunda, başka olay kalmadığında simülatör kendiliğinden durur, ancak $finish eklemek yine de iyi bir uygulamadır
challenge icon

Görev

Eksik initial block öğesini ekleyerek a değerini 0 olarak ayarlayın, ardından 10 time birimi sonra a değerini 1 olarak ayarlayın.

Ne yapmalı:

  1. Add initial begin ve end
  2. a = 0 olarak ayarlayın
  3. Wait #10
  4. a = 1 olarak ayarlayın
  5. simulation sonuna $finish ekleyin

Kendin dene

module test;
  reg a;
  
  // TODO: Buraya initial bloğu ekle
  // a = 0 ayarla
  // #10 bekle
  // a = 1 ayarla
  // Simülasyonu bitirmek için $finish; ekle
  
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