假设我的VHDL中有一个固定点值 - 代码定义为std_logic_vector。我知道我的最后4位是小数。
当我使用模拟器时,它当然不会将最后4位视为小数,是否有可能在模拟中更改它,以便模拟知道第3位的值为0.5,第2位为值0.25等等?
答案 0 :(得分:1)
我怀疑这是不可能的。特别是对于 std_logic ,类型如下:
'U':未初始化。此信号尚未设定。
'X':未知无法确定此值/结果。
'0':逻辑0
'1':逻辑1
'Z':高阻抗
'W':信号弱,无法判断它应该是0还是1。
'L':弱信号可能会变为0 'H':弱信号应该是1
' - ':不在乎。
因此,模拟器识别 ONLY 上述符号,其他任何内容都会导致错误,包括用于描述位的浮点数。以下是我尝试显示浮点值的示例:
add_force {/ test / a [27]} -radix unsigned {0.4 0ns}
错误:[Simtcl 6-179]由于以下原因无法增加力量: 非法值'0.4':无法将值'0.4'转换为小数 号。
我也观察过Vivado标记,所以我想你使用集成模拟器。在我的例子中,最接近浮点数的是十进制数。 Vivado没有内置变量来支持浮点数以便在模拟中显示。下面你看到它支持的基数,所以你只能严格限制那些选择,除了ASCII之外都会导致错误,但我认为这不是你想要的行为。
答案 1 :(得分:1)
Vivado可以在模拟器中将结果显示为定点表示。
当您在模拟器中右键单击要在固定点显示的信号时,请单击基数 - >真实的设置。在那里,您将看到以下窗口,您可以选择固定点。
Handler vs Timer : fixed-period execution and fixed-rate execution android development