我是VHDL的新手。 有一行,如下所示:
constant TIME_DELTA : time := 100 ns;
该行中的单词time
是什么?数据类型是否像integer
一样?当我在互联网上搜索VHDL帮助时,很多人都在使用它,但是没有人讨论它。我也搜索书籍,但没有用。
有人可以解释一下如何使用关键字time
吗?
答案 0 :(得分:2)
时间是预定义的物理类型
IEEE Std 1076™-2008:
5.2.4.2预定义的物理类型
唯一的预定义物理类型是TIME类型。 TIME的范围取决于实现,但它是 确保包含范围–2147483647至+2147483647。它是 以递增范围定义。延迟和所有规格 脉冲抑制极限应为TIME类型。类型的声明 TIME出现在第16条的STANDARD包中。
默认情况下,TIME(1 fs)类型的主要单位是分辨率 TIME类型的限制。绝对值较小的任何TIME值 超过此限制将被截断为零(0)个时间单位。一个实现 可以允许模型的给定阐述(请参阅第14条)选择 TIME类型的辅助单位作为分辨率限制。此外, 实施可能会限制表示的精度 TIME类型的值和TIME类型的表达式的结果, 只要与分辨率极限一样小的值是 在这些限制内可以代表。如果给定是错误的 TIME类型的单位出现在设计层次结构中的任何位置 定义要阐述的模型,以及该模型的位置编号 单位小于选择为 模型制作期间TIME类型的分辨率限制, 除非该单元是其抽象文字的物理文字的一部分 是整数值零或浮点值零。
在模拟器方面,我理解它是一个整数值,它表示具有主要限制的分辨率(例如1fs)的时间。
可以在您的代码中用真实的值表示形式,用更长的时间和更长的时间来表示:
-- time1 and time2 are equal
signal time1 : time := 1000.125 ms;
signal time2 : time := 1000125 us;
答案 1 :(得分:1)
time
只是一种数据类型。在您的情况下,constant TIME_DELTA : time := 100 ns;
可用作信号分配中的延迟,例如:
architecture some_arch of some_ent is
constant TIME_DELTA: time := 100 ns;
begin
dclk <= clk after TIME_DELTA;
end some_arch;