在VHDL测试台中延迟信号



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

由于这只是用于模拟的使用,是否有任何方法可以添加具有不可符合代码的延迟(也许使用等待或之后)?

听起来您想使用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);

最新更新