VHDL中的时间戳

Dig*_*eek 5 fpga vhdl

VHDL中是否有任何函数用于获取进程运行的当前模拟时间?可能与systemC中的功能相同sc_time_stamp()

Rus*_*ell 7

就在这里.使用关键字now.

您可以使用VHDL属性打印模拟时间:

report "current time = " & time'image(now);
Run Code Online (Sandbox Code Playgroud)

您还可以将当前时间存储到变量:

variable v_TIME : time := 0 ns;
v_TIME := now;
-- STUFF HAPPENS
v_TIME := now - V_TIME; --used to find delta time
Run Code Online (Sandbox Code Playgroud)

  • @Afzal,哇那里,你说模拟时间......不要试图合成任何与时间有关的事情.我个人试过从不把`now`放在任何可综合的代码中,但它可能是可能的.我会用`synthesis translate_off`和`synthesis translate_on`来包围它,以确保工具不会尝试构建它. (4认同)

Mar*_*son 7

如果您想知道合成设计中的时间,您必须自己管理.例如,可以使用从与逻辑的其余部分相同的时钟计时的自由运行计数器来捕获特定事件进入寄存器的时间.然后,您可以通过某些接口定期将这些寄存器传输到主机PC或类似设备,或使用嵌入式逻辑分析仪.

now是一个纯粹的模拟结构,它告诉你模拟器设置的任何分辨率的模拟时间.真正的硬件没有实时概念,只有时钟周期,并且没有用于访问控制台的标准化接口,因此能够合成report time'image(now)甚至不是远程选项.