工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Verilog

Verilog ゲート遅延

デジタル要素はバイナリ エンティティであり、0 と 1 の 2 つの値のいずれかのみを保持できます。ただし、0 から 1 および 1 から 0 への移行には移行遅延があり、各ゲート要素も入力から出力に値を伝播します。

たとえば、2 入力 AND ゲートは、両方の入力が 1 になると出力を 1 に切り替え、いずれかの入力が 0 になると 0 に戻す必要があります。ロジック プリミティブをインスタンス化するときに、これらのゲートとピン間の遅延を Verilog で指定できます。 /P>

立ち上がり、立ち下がり、ターンオフの遅延

ゲートの出力がある値から 1 に変化するのにかかる時間は、上昇と呼ばれます 遅れ。ゲートの出力がある値から 0 に変化するのにかかる時間を フォール と呼びます 遅れ。ゲートの出力がある値から高インピーダンスに変化するのにかかる時間は、ターンオフと呼ばれます 遅れます。

これらの遅延は、実際の回路ではいつでも上昇または下降する可能性があり、ゲートの出力だけに限定されないため、実際にはあらゆる信号に適用できます。ゲート遅延を表すには 3 つの方法があり、2 つの遅延形式は、出力が高インピーダンスに遷移しないほとんどのプリミティブに適用できます。同様に、3 つの遅延形式を AND ゲートに適用することはできません。これは、どの入力の組み合わせでも出力が Z にならないためです。

  
  
// Single delay specified - used for all three types of transition delays
or #(<delay>) o1 (out, a, b);

// Two delays specified - used for Rise and Fall transitions
or #(<rise>, <fall>) o1 (out, a, b);

// Three delays specified - used for Rise, Fall and Turn-off transitions
or #(<rise>, <fall>, <turn_off>) o1 (out, a, b);

  

遅延が 1 つだけ指定されている場合、3 種類の遅延すべてで同じ値が使用されます。 2 つの遅延が指定されている場合、最初の遅延は 上昇 を表します 2 つ目は を表します 遅れ。 3 つの遅延が指定されている場合、それらは 上昇 を表します 、落ちる そして電源を切る それぞれ遅れます。

ワン・ディレイ・フォーマット

  
  
module des (	input 	a, b,
            	output out1, out2);

	// AND gate has 2 time unit gate delay
  and 		#(2) o1 (out1, a, b);
  
  // BUFIF0 gate has 3 time unit gate delay
  bufif0 	#(3) b1 (out2, a, b);
  
endmodule

  
  
  
module tb;
  reg a, b;
  wire out1, out2;
  
  des d0 (.out1(out1), .out2(out2), .a(a), .b(b));
  
  initial begin
    {a, b} <= 0;
    
    $monitor ("T=%0t a=%0b b=%0b and=%0b bufif0=%0b", $time, a, b, out1, out2);
    
    #10 a <= 1;
    #10 b <= 1;
    #10 a <= 0;
    #10 b <= 0;
  end
endmodule

  

AND の出力が ゲートは、その入力の 1 つが変化した後、2 時間単位で変化します。たとえば、T=20 で a がすでに 1 であるのに、b は 1 になります。ただし、出力が 1 になるのは T=22 のときだけです。同様に、a は T=30 でゼロに戻り、出力は T=32 で新しい値を取得します。

ゲート遅延は、BUFIF0 の 3 時間単位として指定されます したがって、a が既に 1 である間に b が 0 から 1 に変化すると、出力が Z に更新されるまでに 3 時間単位かかり、最終的に T=23 で更新されます。

シミュレーションログ
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=2 a=0 b=0 and=0 bufif0=x
T=3 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=13 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=23 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=32 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=43 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

2 ディレイ形式

上に示したのと同じテストベンチを、下に示した別の Verilog モデルに適用してみましょう。ここで rise そして落ちる 遅延について明示的に言及されています。

  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2, 3) o1 (out1, a, b);
  bufif0 #(4, 5) b1 (out2, a, b);
  
endmodule

  
シミュレーションログ
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=3 a=0 b=0 and=0 bufif0=x
T=5 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=14 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=24 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=33 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=45 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

スリーディレイフォーマット

  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2, 3) o1 (out1, a, b);
  bufif0 #(5, 6, 7) b1 (out2, a, b);
  
endmodule

  
シミュレーションログ
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=3 a=0 b=0 and=0 bufif0=x
T=6 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=15 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=27 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=33 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=46 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

最小/標準/最大遅延

遅延は、製造されたチップのさまざまな部分で同じではなく、さまざまな温度やその他の変動でも同じではありません。そのため、Verilog は、上記の各遅延タイプに対して追加レベルの制御も提供します。すべてのデジタル ゲートおよびトランジスタ セルには、プロセス ノードに基づいて指定された最小、標準、および最大の遅延があり、通常は製造工場のライブラリによって提供されます。

遅延の各タイプ (立ち上がり、立ち下がり、ターンオフ) について、3 つの値 min典型 そして最大 最小、標準、最大の遅延を指定して表すことができます。

  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2:3:4, 3:4:5) o1 (out1, a, b);
  bufif0 #(5:6:7, 6:7:8, 7:8:9) b1 (out2, a, b);
  
endmodule

  
シミュレーションログ
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=4 a=0 b=0 and=0 bufif0=x
T=7 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=16 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=23 a=1 b=1 and=1 bufif0=1
T=28 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=34 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=47 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.


Verilog

  1. Verilog チュートリアル
  2. Verilog 連結
  3. Verilog 割り当て
  4. Verilog ブロッキング &ノンブロッキング
  5. Verilog 遅延制御
  6. Verilog インターおよびイントラ割り当て遅延
  7. ゲートレベルモデリング
  8. Verilog ゲート レベルの例
  9. Verilog クロック ジェネレーター
  10. Verilog 数学関数
  11. Verilog タイムフォーマット