Menu
CoddyTech

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
end

Contoh Sederhana

if (reset) begin
  count = 0;
end

Dalam contoh ini:

  • begin dan end digunakan untuk menandai awal dan akhir blok kode
  • Jika reset bernilai 1 (benar), kode di antara begin dan end dijalankan → count menjadi 0
  • Jika reset bernilai 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;
end

Catatan: 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;
end

Aturan Penting

AturanPenjelasan
Kondisi dapat berupa ekspresi apa punNilai bukan nol (dan diketahui) dianggap benar, sedangkan nol dianggap salah
begin / end diperlukan untuk beberapa pernyataanSama seperti { } dalam bahasa lain
Tanpa begin/end, hanya satu pernyataan yang mengikutiHanya baris berikutnya
challenge icon

Tantangan

Yang harus dilakukan:

  1. Tambahkan pernyataan if yang hilang agar ini berfungsi.
  • Saat enable bernilai 1, out harus sama dengan a & b
  • Saat enable bernilai 0, out harus tetap 0 (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
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