Pernyataan If
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 52 dari 90.
Pernyataan if adalah blok pengambilan keputusan yang menjalankan kode hanya saat kondisi bernilai true. Pernyataan if memeriksa kondisi.
Jika kondisinya true (1), kode di dalamnya dijalankan. Jika kondisinya false (0), kode dilewati.
Sintaks:
if (condition) begin
// Kode dijalankan saat kondisi bernilai true
endContoh Sederhana
if (reset) begin
count = 0;
endDalam contoh ini:
begindanenddigunakan untuk menandai awal dan akhir blok kode
- Jika
resetbernilai 1 (benar), kode di antarabegindanenddijalankan →countmenjadi 0 - Jika
resetbernilai 0 (salah), kode di dalamnya dilewati → tidak terjadi apa-apa
begin dan end berfungsi seperti kurung kurawal { } dalam bahasa pemrograman lain. Keduanya mengelompokkan pernyataan agar Verilog mengetahui kode mana yang termasuk dalam kondisi if. Meskipun hanya ada satu pernyataan di sini, menggunakan begin dan end tetap merupakan praktik yang baik demi konsistensi.
Pernyataan if dalam Blok always
always @(posedge clk) begin
if (reset)
count <= 0;
endCatatan: Untuk satu pernyataan, begin dan end bersifat opsional. Misalnya, pada blok always di atas, begin/end tidak diperlukan setelah if karena hanya ada satu pernyataan.
Kondisi Bisa Berupa Ekspresi Apa Pun
if (a > b) begin
max = a;
end
if (a && b) begin
out = 1;
end
if (data == 8'hFF) begin
match = 1;
endAturan Penting
| Aturan | Penjelasan |
|---|---|
| Kondisi dapat berupa ekspresi apa pun | Nilai bukan nol (dan diketahui) dianggap benar, sedangkan nol dianggap salah |
begin / end diperlukan untuk beberapa pernyataan | Sama seperti { } dalam bahasa lain |
Tanpa begin/end, hanya satu pernyataan yang mengikuti | Hanya baris berikutnya |
Tantangan
Yang harus dilakukan:
- Tambahkan pernyataan
ifyang hilang agar ini berfungsi.
- Saat
enablebernilai1,outharus sama dengana & b - Saat
enablebernilai0,outharus tetap0(tidak berubah)
Kode awal menginisialisasi out = 0 dan menguji kedua kasus.
Coba sendiri
module if_challenge;
reg a, b, enable;
reg out = 0;
initial begin
a = 1;
b = 1;
// Kasus uji 1: enable = 1
enable = 1;
// TODO: Tambahkan pernyataan if (out = a & b)
$display("enable=1: out = %d (should be 1)", out);
// Kasus uji 2: enable = 0
enable = 0;
out = 0;
// TODO: out harus tetap 0
$display("enable=0: out = %d (should be 0)", out);
$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 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