Penundaan Gerbang
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 68 dari 90.
Di pelajaran sebelumnya, kita membahas penundaan umum yang digunakan seperti #10 a = b;. Penundaan ini menunggu sebelum menjalankan pernyataan.
Dalam pelajaran ini, kita membahas penundaan gerbang, yang khusus berlaku untuk primitif gerbang bawaan seperti and, or, dan not. Penundaan gerbang memodelkan berapa lama waktu yang dibutuhkan gerbang perangkat keras untuk menghasilkan output setelah inputnya berubah.
Pada perangkat keras nyata, gerbang tidak merespons secara instan. Ada sedikit jeda. Saat kamu menggunakan primitif gerbang bawaan, kamu dapat menambahkan jeda untuk menyimulasikan waktu propagasi gerbang. Output berubah hanya setelah jeda yang ditentukan.
Perbedaan antara Delay Umum dan Delay Gerbang
| Delay Umum | Delay Gerbang | |
|---|---|---|
| Sintaks | #10 a = b; | and #5 (out, a, b); |
| Posisi | # sebelum pernyataan | # di dalam primitif gerbang |
| Tujuan | Menunggu sebelum menjalankan | Memodelkan waktu propagasi gerbang |
Sintaks:
gate_type #(delay) (output, input1, input2, ...);#(delay) menentukan berapa banyak satuan waktu yang diperlukan gerbang untuk merespons.
Contoh Sederhana
and #5 (out, a, b);Gerbang AND ini membutuhkan 5 satuan waktu untuk mengubah output-nya setelah a atau b berubah.
Penundaan Gerbang dengan Beberapa Input
nand #8 (out, a, b, c, d); // NAND dengan 4 input dan penundaan 8 satuan waktuAturan Penting
| Aturan | Penjelasan |
|---|---|
| Delay ditulis setelah nama gerbang | and #5 (out, a, b) |
| Nilai delay menggunakan satuan waktu | Berdasarkan direktif timescale |
| Semua input memengaruhi output | Perubahan input apa pun memicu delay |
| Tidak dapat disintesis | Delay gerbang hanya untuk simulasi |
Tantangan
Tambahkan penundaan gerbang yang hilang ke modul ini. Gunakan penundaan yang berbeda untuk setiap gerbang.
Yang harus dilakukan:
- Gerbang AND: penundaan 5 unit waktu
- Gerbang OR: penundaan 3 unit waktu
- Gerbang NOT: penundaan 2 unit waktu
Coba sendiri
module gate_delay_challenge;
reg a, b;
wire and_out, or_out, not_out;
// TODO: Tambahkan gerbang AND dengan penundaan 5 satuan waktu (input a, b)
// TODO: Tambahkan gerbang OR dengan penundaan 3 satuan waktu (input a, b)
// TODO: Tambahkan gerbang NOT dengan penundaan 2 satuan waktu (input a)
initial begin
$monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b",
$time, a, b, and_out, or_out, not_out);
a = 1; b = 1;
#10 $finish;
end
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 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