2016-12-12 34 views
2

私のテストベンチの信号に遅延を入れたいと思います。問題は、数百クロックサイクルが必要なため、私は何百もの中間信号を使用したくないということです。VHDLで信号を遅延させるテストベンチ

これはシミュレーション用ですから、(WAITまたはAFTERの場合がある)非合成コードの遅延を追加する方法はありますか?

答えて

3

遅延がtransportのように聞こえます。あなたが遅延割り当てを行う場合、デフォルトでは、これは「慣性」遅延モデルを使用します:あなたの信号は、かつて100ナノ秒よりもトグルする場合は、この例で、しかし

my_sig_delayed <= my_sig after 100 ns; 

を、あなたのmy_sig_delayed信号は従いませんそれはあなたが期待するかもしれません。 transport遅延を使用すると、「遅延線」を複製します。より詳細な説明については

my_sig_delayed <= transport my_sig after 100 ns; 

、代替このhttp://www.gmvhdl.com/delay.htm


を試しシフト何が必要遅延の長さへの登録を使用するために、次のようになります。

signal delay_line : std_logic_vector(255 downto 0) := (others => '0'); 

.. 。

process (clk) 
begin 
    if (rising_edge(clk)) then 
    delay_line <= delay_line(delay_line'left-1 downto 0) & my_sig; 
    end if; 
end process; 

my_sig_delayed <= delay_line(delay_line'left); 
+0

ありがとうございますrの説明。確かに私はより明白な最初の方法を試しましたが、私の信号周期は遅れていたので動作しませんでした。他の方法がない場合は、2番目のオプションを使用します。 –

+1

@ A.Kieffer上記の2行目のコードごとに 'transport'キーワードを使用するとうまくいくはずです。 –

+0

申し訳ありませんが、私は一目見てポイントを得ていませんでした。私は '輸送'を試み、それはうまく動作します。ありがとう@ scarry_jeff! –

関連する問題