Menulis Testbench
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 45 dari 90.
Tantangan
Sekarang kita perlu menguji apakah half adder berfungsi dengan benar. Tambahkan kode pengujian di dalam blok initial.
Penting: Sebelum menambahkan pengujian, kamu harus mengubah port module agar pengujian dapat berfungsi dengan baik.
Yang harus dilakukan:
Langkah 1: Ubah deklarasi port
- Ubah
input a, bmenjadireg a, b(gunakan titik koma) - Ubah
output sum, carrymenjadiwire sum, carry(gunakan titik koma) - Hapus seluruh port module (module tidak boleh memiliki
( ))
Langkah 2: Tambahkan kode pengujian
- Tambahkan blok
initial begin - Di dalam blok, tambahkan:
$display("a b | sum carry");
a = 0; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 0; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 0; #1 $display("%d %d | %d %d", a, b, sum, carry);
a = 1; b = 1; #1 $display("%d %d | %d %d", a, b, sum, carry);
- Tambahkan
$finish;untuk mengakhiri pengujian - Tambahkan
enduntuk menutup blok initial
Coba sendiri
module half_adder (
input a,
input b,
output sum,
output carry
);
assign sum = a ^ b;
assign carry = a & b;
endmoduleSemua 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