Menu
CoddyTech

Blok initial

Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 47 dari 90.

Verilog memiliki dua blok prosedural: initial (dijalankan satu kali) dan always (dijalankan terus-menerus). Sekarang, mari kita bahas blok initial.

Apa itu Blok Initial?

Blok initial hanya dijalankan satu kali di awal simulasi (waktu 0). Setelah selesai, blok ini tidak akan dijalankan lagi.

Perintah ini terutama digunakan dalam testbench untuk:

  • Menetapkan nilai awal
  • Menghasilkan sinyal uji
  • Menampilkan pesan
  • Memulai simulasi

Sintaks

initial begin
  // Pernyataan dijalankan sekali, secara berurutan
end

Contoh Dasar

initial begin
  $display("Simulation started");
  $display("This runs once");
  $finish;
end

Output:

Simulation started
This runs once

Menggunakan Blok Initial untuk Sinyal Pengujian

initial begin
  a = 0;
  #10 a = 1;
  #10 a = 0;
  #10 $finish;
end

Ini mengubah a pada waktu: 0, 10, dan 20.

Awal vs Selalu

 initialalways
DijalankanSatu kaliTerus-menerus (selamanya)
Digunakan untukTestbench, inisialisasiPerangkat keras (flip-flop, counter)
Dapat disintesis?Tidak (hanya simulasi)Ya (dengan daftar sensitivitas)

Catatan Penting

  • Blok initial tidak dapat disintesis. Blok ini tidak dapat diubah menjadi perangkat keras
  • Gunakan initial hanya dalam testbench
  • Jika testbench berisi clock yang berjalan terus-menerus (misalnya, always #5 clk = ~clk;), simulasi akan berjalan selamanya kecuali kamu memanggil $finish; jika hanya ada blok initial, simulator akan berhenti sendiri saat tidak ada peristiwa yang tersisa, tetapi menambahkan $finish tetap merupakan praktik yang baik
challenge icon

Tantangan

Tambahkan blok initial yang belum ada untuk menetapkan a ke 0, lalu setelah 10 satuan waktu tetapkan a ke 1.

Yang harus dilakukan:

  1. Tambahkan initial begin dan end
  2. Tetapkan a = 0
  3. Tunggu #10
  4. Tetapkan a = 1
  5. Tambahkan $finish untuk mengakhiri simulasi

Coba sendiri

module test;
  reg a;
  
  // TODO: Tambahkan blok initial di sini
  // Atur a = 0
  // Tunggu #10
  // Atur a = 1
  // Tambahkan $finish; untuk mengakhiri simulasi
  
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