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
endTemel Örnek
initial begin
$display("Simulation started");
$display("This runs once");
$finish;
endÇıktı:
Simulation started
This runs onceTest Sinyalleri için Initial Block Kullanımı
initial begin
a = 0;
#10 a = 1;
#10 a = 0;
#10 $finish;
endBu, a değerini şu zamanlarda değiştirir: 0, 10 ve 20.
initial ve always
initial | always | |
|---|---|---|
| Runs | Once | Sürekli (sonsuza kadar) |
| Use for | Testbench'ler, başlatma | Donanım (flip-flop'lar, sayaçlar) |
| Synthesizable? | Hayır (yalnızca simülasyon) | Evet (duyarlılık listesiyle) |
Önemli Notlar
initialblokları sentezlenebilir değildir. Donanıma dönüştürülemezler-
initialyalnı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 birinitialbloğu olduğunda, başka olay kalmadığında simülatör kendiliğinden durur, ancak$finisheklemek yine de iyi bir uygulamadır
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ı:
- Add
initial beginveend a = 0olarak ayarlayın- Wait
#10 a = 1olarak ayarlayın- 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
endmoduleBu 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
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicKendi başına pratik yap: Online Verilog derleyicisi