Apa Itu Penundaan
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 67 dari 90.
Dalam Verilog, delay mengatur kapan suatu pernyataan dijalankan atau kapan sinyal berubah. Delay digunakan untuk memodelkan perilaku pewaktuan perangkat keras yang sebenarnya.
Mengapa Penundaan Diperlukan
Perangkat keras sungguhan membutuhkan waktu agar sinyal dapat melewati kabel dan gerbang. Penundaan memungkinkan kamu menyimulasikan perilaku waktu ini.
- Dalam simulasi, tanpa jeda, semuanya terjadi pada waktu 0
- Jeda memungkinkan kamu mengatur jarak waktu antarperistiwa
- Jeda membantu menguji desain yang peka terhadap waktu, seperti clock dan mesin status
Jenis Penundaan
| Jenis Penundaan | Tujuan |
|---|---|
| Penundaan Gerbang | Penundaan melalui gerbang logika |
| Penundaan Penugasan | Penundaan saat menetapkan nilai |
| Direktif Timescale | Menetapkan satuan waktu untuk simulasi |
Sintaks Dasar
Penundaan ditulis dengan # diikuti angka:
#10 clk = ~clk; // Tunggu 10 satuan waktu, lalu balikkan nilai clock
#5 a = b; // Tunggu 5 satuan waktu, lalu tetapkan a = bAngka setelah # adalah jumlah satuan waktu yang harus ditunggu.
Contoh Sederhana
initial begin
a = 0;
#10 a = 1; // Setelah 10 satuan waktu, a menjadi 1
#5 a = 0; // Setelah 5 satuan waktu lagi, a menjadi 0
endWaktu:
- Waktu 0:
a = 0 - Waktu 10:
a = 1 - Waktu 15:
a = 0
Penundaan dalam Blok Always
always #5 clk = ~clk; // Balikkan sinyal clock setiap 5 satuan waktuIni membuat sinyal clock berkelanjutan (dengan asumsi clk terlebih dahulu diinisialisasi ke 0 dalam blok initial. Jika tidak, ~x akan tetap bernilai x).
Aturan Penting
| Aturan | Penjelasan |
|---|---|
Simbol # | Menandai jeda |
Angka setelah # | Jumlah satuan waktu untuk menunggu |
| Jeda bersifat kumulatif | #10 lalu #20 menunggu total 30 |
| Tidak dapat disintesis | Jeda hanya untuk simulasi |
Tantangan
Yang harus dilakukan:
Tambahkan penundaan yang hilang agar kode ini mencetak pesan pada waktu 0, 10, 25, dan 40.
Coba sendiri
module delay_challenge;
initial begin
$display("Time %0t: Start", $time);
// TODO: Tambahkan jeda agar waktu mencapai 10
$display("Time %0t: After first delay", $time);
// TODO: Tambahkan jeda agar waktu mencapai 25
$display("Time %0t: After second delay", $time);
// TODO: Tambahkan jeda agar waktu mencapai 40
$display("Time %0t: End", $time);
$finish;
end
endmodule
Pelajaran 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 ALU13Timing dan Penundaan
Apa Itu PenundaanPenundaan GerbangPenundaan PenugasanDirektif TimescalePembangkitan ClockRangkuman: Kontrol Timing5Operator 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