Menu
CoddyTech

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
end

Perulangan 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
end

Di 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

AturanPenjelasan
Block harus diberi namabegin : block_name
Disable langsung menghentikan eksekusiKode berhenti saat itu juga
Dapat digunakan dari mana sajaDari block mana pun di dalam module
Berguna untuk menghentikan perulangan foreverJika tidak, perulangan tersebut tidak akan pernah berhenti
challenge icon

Tantangan

Kamu diberi module dengan counter yang berjalan selamanya. 

Yang harus dilakukan:

Lengkapi block yang kosong dengan mengganti setiap komentar dengan kode yang tepat:

  1. Tambahkan #50; untuk menunggu 50 unit waktu
  2. Tambahkan disable counter; untuk menghentikan block counter
  3. Tambahkan $display("Counter stopped"); untuk mencetak pesan
  4. 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
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