FC2カウンター FPGAの部屋 VHDLの慣性遅延と伝搬遅延
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

VHDLの慣性遅延と伝搬遅延

たーぼ のハードウェア設計記録さんのブログ”慣性遅延と伝播遅延”にも記述されていたが、VHDLの慣性遅延と伝搬遅延について、私も覚書を書いておこうと思う。
Verilogの慣性遅延と伝搬遅延については、”Verilog2001版DDR SDRAMコントローラーのModelSimシミュレーション4への回答”を参照。

まずは、サンプルのVHDLコードを記述する。

-- 慣性遅延と伝搬遅延の比較

library IEEE;
use IEEE.std_logic_1164.all;
use ieee.numeric_std.all;

entity delay_test is
end delay_test;

architecture testbanch of delay_test is
signal clk : std_logic := '1';
signal delayed_clk : std_logic;
begin
    clk <= not clk after 10 ns;
    delayed_clk <= clk after 5 ns; -- 慣性遅延
end;


このVHDLコードをModelSimでコンパイルして、100ns シミュレーションすると、下のような波形になった。
delay_1_091004.png

普通に5ns遅延している。
次に、

delayed_clk <= clk after 5 ns; -- 慣性遅延

delayed_clk <= clk after 10 ns; -- 慣性遅延

に変更した時の波形を下に示す。
delay_2_091004.png

正常に遅延している。次に、

delayed_clk <= clk after 10.1 ns; -- 慣性遅延

に変更した時の波形を下に示す。
delay_3_091004.png

波形がなくなってしまう。これは、慣性遅延はパルスの長さ以上の遅延を設定すると、パルスが出力に現れなくなってしまうため。
さて、伝搬遅延にするために、

delayed_clk <= transport clk after 10.1 ns; -- 伝搬遅延

にVHDLソースを変更する。
delay_4_091004.png

そうすると、伝搬遅延では10nsを超える遅延を与えても、クロック波形が伝搬される。
ちなみに、

delayed_clk <= transport clk after 15 ns; -- 伝搬遅延

としても問題ない。
delay_5_091004.png

  1. 2009年10月04日 07:50 |
  2. VHDLの書き方
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/1249-052e7d24
この記事にトラックバックする(FC2ブログユーザー)