Menu
CoddyTech

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;
endcase

Sangat 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;
endcase

Jika 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;
endcase

Aturan Penting

AturanPenjelasan
Nilai case harus unikJika ada duplikat, hanya cabang pertama yang cocok yang dijalankan
Nilai harus sesuai dengan lebar bit2'b01 bukan 1'b1
default bersifat opsional, tetapi disarankanMenangani nilai yang tidak dipetakan
Tanpa default, nilai yang tidak dipetakan menyebabkan latchDalam logika kombinatorial

Case dibandingkan If-Else

 CaseIf-Else
Paling cocok untukSatu variabel, banyak nilaiKondisi kompleks
KeterbacaanSangat jelasBisa menjadi berantakan
ContohMultiplexer, decoderKomparator, pemeriksaan rentang
challenge icon

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
  
endmodule
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online