Menu
Coddy logo textTech

Initial Bloğu

Coddy'nin Verilog Journey'sinin Temel Bilgiler 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 (zaman 0'da) 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 Bloğunu Kullanma

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

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

Initial ve Always

 initialalways
ÇalışmaBir kezSürekli (sonsuza kadar)
Kullanım amacıTest tezgâhları, başlatmaDonanım (flip-flop'lar, sayaçlar)
Sentezlenebilir mi?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 olan initial bloğunu ekleyerek a değerini 0'a ayarla, ardından 10 zaman birimi sonra a değerini 1'e ayarla.

Yapılacaklar:

  1. initial begin ve end ekle
  2. a = 0 olarak ayarla
  3. #10 bekle
  4. a = 1 olarak ayarla
  5. Simülasyonu sonlandırmak için sona $finish ekle

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.

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

Kendi başına pratik yap: Online Verilog derleyicisi