Pernyataan Case
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 55 dari 90.
Pernyataan case memungkinkan kamu memilih di antara banyak tindakan yang berbeda berdasarkan nilai dari satu ekspresi. Ini merupakan alternatif yang lebih rapi daripada beberapa pernyataan if-else saat membandingkan variabel yang sama dengan banyak nilai yang berbeda.
Pernyataan case membandingkan sebuah ekspresi dengan daftar nilai, lalu menjalankan blok yang cocok. Ini seperti percabangan dengan banyak pilihan.
Sintaks:
case (expression)
value1: statement1;
value2: statement2;
default: default_statement;
endcaseSangat disarankan untuk selalu menyertakan default dalam pernyataan case kombinatorial. Tanpa default, jika sel memiliki nilai yang tidak terduga (seperti X atau Z), out tidak akan diberi nilai dan akan menyimpan nilai sebelumnya. Hal ini menciptakan memori yang tidak diinginkan (latch), bukan logika kombinatorial murni.
Contoh Sederhana
case (sel)
2'b00: out = a;
2'b01: out = b;
2'b10: out = c;
default: out = 0;
endcaseJika sel bernilai 00, out mendapat a. Jika sel bernilai 01, out mendapat b. Jika sel bernilai 10, out mendapat c.
Jika tidak, out mendapat nilai 0.
Beberapa Pernyataan untuk Setiap Case
Gunakan begin dan end untuk beberapa pernyataan:
case (state)
2'b00: begin
out = a;
flag = 1;
end
2'b01: begin
out = b;
flag = 0;
end
default: out = 0;
endcaseAturan Penting
| Aturan | Penjelasan |
|---|---|
| Nilai case harus unik | Jika ada duplikat, hanya cabang pertama yang cocok yang dijalankan |
| Nilai harus sesuai dengan lebar bit | 2'b01 bukan 1'b1 |
default bersifat opsional, tetapi disarankan | Menangani nilai yang tidak dipetakan |
Tanpa default, nilai yang tidak dipetakan menyebabkan latch | Dalam logika kombinatorial |
Case dibandingkan If-Else
| Case | If-Else | |
|---|---|---|
| Paling cocok untuk | Satu variabel, banyak nilai | Kondisi kompleks |
| Keterbacaan | Sangat jelas | Bisa menjadi berantakan |
| Contoh | Multiplexer, decoder | Komparator, pemeriksaan rentang |
Tantangan
Lengkapi Pernyataan Case
Yang harus dilakukan:
Tambahkan pernyataan case yang hilang agar multiplexer ini berfungsi.
Cara kerjanya:
- Saat
select = 2'b00,result = in0 - Saat
select = 2'b01,result = in1 - Saat
select = 2'b10,result = in2 - Saat
select = 2'b11,result = in3
Coba sendiri
module mux4 (
input [1:0] select,
input in0, in1, in2, in3,
output reg result
);
always @(*) begin
// TODO: Tambahkan pernyataan case
// select=00 -> result = in0
// select=01 -> result = in1
// select=10 -> result = in2
// select=11 -> result = in3
// default -> result = 0
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