Menu
Coddy logo textTech

Gate Delays

CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 68/90。

前のレッスンでは、#10 a = b;のように使用する一般的な遅延について学びました。これらは文を実行する前に待機します。

このレッスンでは、gate delaysについて扱います。これは、andornotのような組み込みゲートプリミティブに固有のものです。gate delayは、inputが変化した後、ハードウェアゲートがoutputを生成するまでにかかる時間をモデル化します。

実際のハードウェアでは、gate は瞬時には応答しません。わずかな遅延があります。組み込みの gate プリミティブを使用すると、gate の伝播時間をシミュレートするために遅延を追加できます。output は、指定した遅延の後にのみ変化します。

一般的な遅延とgate 遅延の違い

 一般的な遅延gate 遅延
構文#10 a = b;and #5 (out, a, b);
位置文の前にある#gateプリミティブ内の#
目的実行前に待機するgateの伝搬時間をモデル化する

構文:

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

#(delay) は、gate が応答するまでにかかる time の単位数を指定します。

簡単な例

and #5 (out, a, b);

この AND ゲートは、a または b が変化した後、出力が変化するまでに 5 time units かかります。

複数の入力によるゲート遅延

nand #8 (out, a, b, c, d);   // 8時間単位の遅延を持つ4入力NAND

重要なルール

ルール説明
delay は gate 名の後に置くand #5 (out, a, b)
delay の値は time 単位timescale ディレクティブに基づく
すべての input が output に影響するいずれかの input の変更によって delay が発生する
合成できないgate の delay はシミュレーション専用
challenge icon

チャレンジ

このモジュールに不足しているゲート遅延を追加してください。各ゲートには異なる遅延を使用します。

実行すること:

  1. AND gate: 5 time unit delay
  2. OR gate: 3 time unit delay
  3. NOT gate: 2 time unit delay

自分で試してみよう

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: 5時間単位の遅延を持つANDゲートを追加(入力 a, b)
  
  // TODO: 3時間単位の遅延を持つORゲートを追加(入力 a, b)
  
  // TODO: 2時間単位の遅延を持つNOTゲートを追加(入力 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 icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ