2
私のテストベンチの信号に遅延を入れたいと思います。問題は、数百クロックサイクルが必要なため、私は何百もの中間信号を使用したくないということです。VHDLで信号を遅延させるテストベンチ
これはシミュレーション用ですから、(WAITまたはAFTERの場合がある)非合成コードの遅延を追加する方法はありますか?
私のテストベンチの信号に遅延を入れたいと思います。問題は、数百クロックサイクルが必要なため、私は何百もの中間信号を使用したくないということです。VHDLで信号を遅延させるテストベンチ
これはシミュレーション用ですから、(WAITまたはAFTERの場合がある)非合成コードの遅延を追加する方法はありますか?
遅延が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);
ありがとうございますrの説明。確かに私はより明白な最初の方法を試しましたが、私の信号周期は遅れていたので動作しませんでした。他の方法がない場合は、2番目のオプションを使用します。 –
@ A.Kieffer上記の2行目のコードごとに 'transport'キーワードを使用するとうまくいくはずです。 –
申し訳ありませんが、私は一目見てポイントを得ていませんでした。私は '輸送'を試み、それはうまく動作します。ありがとう@ scarry_jeff! –