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