在VHDL Testbench中延迟信号

时间:2016-12-12 09:04:00

标签: vhdl test-bench

我想在我的测试平台上对信号进行延迟。问题是我需要数百个时钟周期,因此我不想使用数百个中间信号。

由于这只是用于模拟使用,有没有办法用不可合成的代码添加延迟(可能使用WAIT或AFTER)?

1 个答案:

答案 0 :(得分:3)

听起来你想要使用transport延迟。默认情况下,如果您进行延迟分配,则会使用惯性'延迟模型:

my_sig_delayed <= my_sig after 100 ns;

但是,在此示例中,如果您的信号在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);