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'un iki prosedürel bloğu 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şında (zaman 0) yalnızca bir kez çalışır. Bittiğinde tekrar çalışmaz.

Temel olarak testbench'lerde şunlar için 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ğu 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 vs Always

 initialalways
ÇalışmaBir kezSürekli (sonsuza kadar)
Kullanım alanıTestbench'ler, ilklendirmeDonanım (flip-flop'lar, sayaçlar)
Sentezlenebilir mi?Hayır (yalnızca simülasyon)Evet (duyarlılık listesi ile)

Önemli Notlar

  • initial blokları sentezlenemez — donanıma dönüştürülemezler
  • initial ifadesini sadece testbench'lerde kullanın
  • $finish olmadan, simülasyon sonsuza kadar çalışacaktır (onu durduracak bir saat sinyali yoktur)
challenge icon

Görev

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

Ne yapmalı:

  1. initial begin ve end ekleyin
  2. a = 0 olarak ayarlayın
  3. #10 bekleyin
  4. a = 1 olarak ayarlayın
  5. Simülasyonu sonlandırmak için $finish ekleyin

Kopya kağıdı

initial bloğu simülasyon zamanı 0'da bir kez çalışır. Sadece testbench'lerde kullanılır (sentezlenemez).

initial begin
  a = 0;       // zaman 0'da ayarla
  #10 a = 1;   // zaman 10'da ayarla
  #10 a = 0;   // zaman 20'de ayarla
  $finish;     // simülasyonu bitir
end

$finish olmadan, simülasyon sonsuza kadar çalışır.

initialalways
ÇalışmaBir kezSürekli
Kullanım alanıTestbench'lerDonanım
Sentezlenebilir mi?HayırEvet

Kendin dene

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