Menu
CoddyTech

Penundaan Gerbang

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

Di pelajaran sebelumnya, kita membahas penundaan umum yang digunakan seperti #10 a = b;. Penundaan ini menunggu sebelum menjalankan pernyataan.

Dalam pelajaran ini, kita membahas penundaan gerbang, yang khusus berlaku untuk primitif gerbang bawaan seperti and, or, dan not. Penundaan gerbang memodelkan berapa lama waktu yang dibutuhkan gerbang perangkat keras untuk menghasilkan output setelah inputnya berubah.

Pada perangkat keras nyata, gerbang tidak merespons secara instan. Ada sedikit jeda. Saat kamu menggunakan primitif gerbang bawaan, kamu dapat menambahkan jeda untuk menyimulasikan waktu propagasi gerbang. Output berubah hanya setelah jeda yang ditentukan.

Perbedaan antara Delay Umum dan Delay Gerbang

 Delay UmumDelay Gerbang
Sintaks#10 a = b;and #5 (out, a, b);
Posisi# sebelum pernyataan# di dalam primitif gerbang
TujuanMenunggu sebelum menjalankanMemodelkan waktu propagasi gerbang

Sintaks:

gate_type #(delay) (output, input1, input2, ...);

#(delay) menentukan berapa banyak satuan waktu yang diperlukan gerbang untuk merespons.

Contoh Sederhana

and #5 (out, a, b);

Gerbang AND ini membutuhkan 5 satuan waktu untuk mengubah output-nya setelah a atau b berubah.

Penundaan Gerbang dengan Beberapa Input

nand #8 (out, a, b, c, d);   // NAND dengan 4 input dan penundaan 8 satuan waktu

Aturan Penting

AturanPenjelasan
Delay ditulis setelah nama gerbangand #5 (out, a, b)
Nilai delay menggunakan satuan waktuBerdasarkan direktif timescale
Semua input memengaruhi outputPerubahan input apa pun memicu delay
Tidak dapat disintesisDelay gerbang hanya untuk simulasi
challenge icon

Tantangan

Tambahkan penundaan gerbang yang hilang ke modul ini. Gunakan penundaan yang berbeda untuk setiap gerbang.

Yang harus dilakukan:

  1. Gerbang AND: penundaan 5 unit waktu
  2. Gerbang OR: penundaan 3 unit waktu
  3. Gerbang NOT: penundaan 2 unit waktu

Coba sendiri

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: Tambahkan gerbang AND dengan penundaan 5 satuan waktu (input a, b)
  
  // TODO: Tambahkan gerbang OR dengan penundaan 3 satuan waktu (input a, b)
  
  // TODO: Tambahkan gerbang NOT dengan penundaan 2 satuan waktu (input a)
  

  initial begin
    $monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b", 
              $time, a, b, and_out, or_out, not_out);
    
    a = 1; b = 1;
    #10 $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