Nonaktifkan pernyataan
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 62 dari 90.
Pernyataan disable menghentikan eksekusi blok bernama (seperti perulangan forever, blok begin-end, atau tugas). Pernyataan ini berguna untuk keluar dari perulangan yang jika tidak dihentikan akan berjalan selamanya.
Sintaks:
disable block_name;Blok harus diberi label dengan nama.
Nonaktifkan dengan perulangan forever
initial begin : counter // counter memberi blok tersebut nama counter.
forever begin
#10 count = count + 1;
if (count == 5) begin
disable counter; // disable counter menghentikan seluruh blok bernama counter.
end
end
endPerulangan forever berada di dalam blok bernama counter. Pernyataan disable counter ditempatkan di dalam perulangan. Saat count mencapai 5, disable counter dijalankan dan menghentikan seluruh blok counter, yang juga langsung menghentikan perulangan forever.
Nonaktifkan dalam Blok Terpisah
initial begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // Menghentikan blok counter dari luar
endDi sini, perulangan forever berjalan terus-menerus di dalam block bernama counter. Pernyataan disable counter ditempatkan di block initial yang terpisah. Setelah 50 satuan waktu, disable counter dijalankan dan menghentikan block counter, yang mengakhiri perulangan forever dari luar.
Aturan Penting
| Aturan | Penjelasan |
|---|---|
| Block harus diberi nama | begin : block_name |
| Disable langsung menghentikan eksekusi | Kode berhenti saat itu juga |
| Dapat digunakan dari mana saja | Dari block mana pun di dalam module |
Berguna untuk menghentikan perulangan forever | Jika tidak, perulangan tersebut tidak akan pernah berhenti |
Tantangan
Kamu diberi module dengan counter yang berjalan selamanya.
Yang harus dilakukan:
Lengkapi block yang kosong dengan mengganti setiap komentar dengan kode yang tepat:
- Tambahkan
#50;untuk menunggu 50 unit waktu - Tambahkan
disable counter;untuk menghentikan block counter - Tambahkan
$display("Counter stopped");untuk mencetak pesan - Tambahkan
$finish;untuk mengakhiri simulasi
Coba sendiri
module disable_challenge;
integer count;
initial begin
count = 0;
fork
begin : counter
forever begin
#10 count = count + 1;
$display("count = %d", count);
end
end
begin
// Langkah 1: Tunggu 50 satuan waktu
// Langkah 2: Nonaktifkan blok counter
// Langkah 3: Tampilkan "Counter stopped"
// Langkah 4: Akhiri simulasi
end
join
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 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