Blok initial
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 47 dari 90.
Verilog memiliki dua blok prosedural: initial (dijalankan satu kali) dan always (dijalankan terus-menerus). Sekarang, mari kita bahas blok initial.
Apa itu Blok Initial?
Blok initial hanya dijalankan satu kali di awal simulasi (waktu 0). Setelah selesai, blok ini tidak akan dijalankan lagi.
Perintah ini terutama digunakan dalam testbench untuk:
- Menetapkan nilai awal
- Menghasilkan sinyal uji
- Menampilkan pesan
- Memulai simulasi
Sintaks
initial begin
// Pernyataan dijalankan sekali, secara berurutan
endContoh Dasar
initial begin
$display("Simulation started");
$display("This runs once");
$finish;
endOutput:
Simulation started
This runs onceMenggunakan Blok Initial untuk Sinyal Pengujian
initial begin
a = 0;
#10 a = 1;
#10 a = 0;
#10 $finish;
endIni mengubah a pada waktu: 0, 10, dan 20.
Awal vs Selalu
initial | always | |
|---|---|---|
| Dijalankan | Satu kali | Terus-menerus (selamanya) |
| Digunakan untuk | Testbench, inisialisasi | Perangkat keras (flip-flop, counter) |
| Dapat disintesis? | Tidak (hanya simulasi) | Ya (dengan daftar sensitivitas) |
Catatan Penting
- Blok
initialtidak dapat disintesis. Blok ini tidak dapat diubah menjadi perangkat keras - Gunakan
initialhanya dalam testbench - Jika testbench berisi clock yang berjalan terus-menerus (misalnya,
always #5 clk = ~clk;), simulasi akan berjalan selamanya kecuali kamu memanggil$finish; jika hanya ada blokinitial, simulator akan berhenti sendiri saat tidak ada peristiwa yang tersisa, tetapi menambahkan$finishtetap merupakan praktik yang baik
Tantangan
Tambahkan blok initial yang belum ada untuk menetapkan a ke 0, lalu setelah 10 satuan waktu tetapkan a ke 1.
Yang harus dilakukan:
- Tambahkan
initial begindanend - Tetapkan
a = 0 - Tunggu
#10 - Tetapkan
a = 1 - Tambahkan $finish untuk mengakhiri simulasi
Coba sendiri
module test;
reg a;
// TODO: Tambahkan blok initial di sini
// Atur a = 0
// Tunggu #10
// Atur a = 1
// Tambahkan $finish; untuk mengakhiri simulasi
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online