Menu
CoddyTech

Apa Itu Penundaan

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

Dalam Verilog, delay mengatur kapan suatu pernyataan dijalankan atau kapan sinyal berubah. Delay digunakan untuk memodelkan perilaku pewaktuan perangkat keras yang sebenarnya.

Mengapa Penundaan Diperlukan

Perangkat keras sungguhan membutuhkan waktu agar sinyal dapat melewati kabel dan gerbang. Penundaan memungkinkan kamu menyimulasikan perilaku waktu ini.

  • Dalam simulasi, tanpa jeda, semuanya terjadi pada waktu 0
  • Jeda memungkinkan kamu mengatur jarak waktu antarperistiwa
  • Jeda membantu menguji desain yang peka terhadap waktu, seperti clock dan mesin status

Jenis Penundaan

Jenis PenundaanTujuan
Penundaan GerbangPenundaan melalui gerbang logika
Penundaan PenugasanPenundaan saat menetapkan nilai
Direktif TimescaleMenetapkan satuan waktu untuk simulasi

Sintaks Dasar

Penundaan ditulis dengan # diikuti angka:

#10 clk = ~clk;   // Tunggu 10 satuan waktu, lalu balikkan nilai clock
#5 a = b;         // Tunggu 5 satuan waktu, lalu tetapkan a = b

Angka setelah # adalah jumlah satuan waktu yang harus ditunggu.

Contoh Sederhana

initial begin
  a = 0;
  #10 a = 1;   // Setelah 10 satuan waktu, a menjadi 1
  #5 a = 0;    // Setelah 5 satuan waktu lagi, a menjadi 0
end

Waktu:

  • Waktu 0: a = 0
  • Waktu 10: a = 1
  • Waktu 15: a = 0

Penundaan dalam Blok Always

always #5 clk = ~clk;   // Balikkan sinyal clock setiap 5 satuan waktu

Ini membuat sinyal clock berkelanjutan (dengan asumsi clk terlebih dahulu diinisialisasi ke 0 dalam blok initial. Jika tidak, ~x akan tetap bernilai x).

Aturan Penting

AturanPenjelasan
Simbol #Menandai jeda
Angka setelah #Jumlah satuan waktu untuk menunggu
Jeda bersifat kumulatif#10 lalu #20 menunggu total 30
Tidak dapat disintesisJeda hanya untuk simulasi
challenge icon

Tantangan

Yang harus dilakukan:

Tambahkan penundaan yang hilang agar kode ini mencetak pesan pada waktu 0, 10, 25, dan 40.

Coba sendiri

module delay_challenge;
  
  initial begin
    $display("Time %0t: Start", $time);
    // TODO: Tambahkan jeda agar waktu mencapai 10
    $display("Time %0t: After first delay", $time);
    // TODO: Tambahkan jeda agar waktu mencapai 25
    $display("Time %0t: After second delay", $time);
    // TODO: Tambahkan jeda agar waktu mencapai 40
    $display("Time %0t: End", $time);
    $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