在提供延迟的[延迟]声明之后使用,能在模拟中分析。但是当我们将这个模型加载到FPGA中时,由VHDL代码生成的实际硬件会产生延迟影响,或者这种延迟仅限于模拟?
a <= not b after 1s;
假设我将一个开关连接到b
并将LED连接到a
,那么在按下开关和更新LED状态之间会有一秒延迟吗?
答案 0 :(得分:1)
如前所述,wait语句无法合成,只会影响模拟。但是,我应该补充一点,即使在模拟中你也可能达不到你的期望。请允许我解释一下。
VHDL提供2种延迟模型:传输延迟和惯性延迟,后者是默认值,您通过不指定要使用的模型来选择。
如果b在延迟过程中发生不稳定,说它每500ms切换一次,就不会像你想要的那样切换。要真正引入纯延迟,请按如下方式选择传输延迟模型:
a <= transport not b after 1s;
当然,再次,这不能合成,仅用于模拟目的。
答案 1 :(得分:0)
当你在模拟时,你需要在事情发生时提供以及输入会发生什么。在FPGA上实现后,外部事件会创建输入,模拟与此无关。
因此,如果我理解你的问题,是的,你所展示的延迟只会影响模拟。
编辑:
关于定时器,您知道FPGA的时钟频率。所以你可以创建一个变量并在每个clk_up
上增加它(我使用CLK = '1' and CLK'Event
但有更好的方法),当它达到与时钟频率相同的值时,1秒已经过去
不那么伪代码:
signal clock: unsigned (9 downto 0);
if CLK = '1' and CLK'Event then
clock<= clock + 1;
if clock = "1100100000" then --clock frequency (this is an example)
clock <= "0000000000"
-- 1 secound passed!
end if;
end if;