Menu
Coddy logo textTech

Initial Bloğu

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

Verilog iki prosedürel bloğa sahiptir: initial (bir kez çalışır) ve always (sürekli çalışır). Şimdi initial bloğunu inceleyelim.

Initial Bloğu Nedir?

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

Esas olarak testbenches yapılarında şunlar için kullanılır:

  • Başlangıç değerlerini ayarlamak
  • Test sinyalleri üretmek
  • 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 İçin Initial Bloğu Kullanımı

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

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

Initial vs Always

 initialalways
RunsOnceSürekli (sonsuza kadar)
Kullanım alanıTestbenches, ilklendirmeDonanım (flip-flop'lar, sayıcılar)
Sentezlenebilir mi?Hayır (sadece simulation)Evet (duyarlılık listesi ile)

Önemli Notlar

  • initial blokları sentezlenemez — donanıma dönüştürülemezler
  • initial bloğunu yalnızca testbench'lerde kullanın
  • Eğer testbench serbest çalışan bir saat içeriyorsa (ör. always #5 clk = ~clk;), siz $finish komutunu çağırana kadar simülasyon sonsuza kadar çalışır; yalnızca bir initial bloğu olduğunda, simülatör olay kalmadığında kendi kendine durur, ancak $finish eklemek yine de iyi bir pratiktir
challenge icon

Görev

a değerini 0 yapan, ardından 10 zaman birimi sonra a değerini 1 yapan eksik initial bloğunu ekleyin.

Yapılacaklar:

  1. initial begin ve end ekleyin
  2. a = 0 olarak ayarlayın
  3. #10 bekleyin
  4. a = 1 olarak ayarlayın
  5. Simülasyonu bitirmek için $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