2

假设我的 VHDL 中有一个定点值 - 代码定义为 std_logic_vector。我知道我的最后 4 位是小数。

当我使用模拟器时,它当然不会看到最后 4 位为小数,是否有可能在模拟中更改它,以便模拟知道第 3 位的值为 0.5 ,第 2 位的值为 0.25等等 ?

4

2 回答 2

2

在 Vivado 中,可以将模拟器中的结果显示为定点表示。

当您在模拟器中右键单击要以定点显示的信号时,单击基数 --> 真实设置。在那里你得到以下窗口,你可以选择固定点。

真实设置窗口

真实设置窗口

于 2016-10-31T09:39:24.843 回答
1

不幸的是,我怀疑这是可能的。专门针对std_logic的类型如下:

“U”:未初始化。该信号尚未设置。

'X':未知 无法确定此值/结果。

“0”:逻辑 0

“1”:逻辑 1

“Z”:高阻抗

'W':弱信号,不知道应该是0还是1。

'L':可能应该变为 0 的弱信号 'H':可能应该变为 1 的弱信号

'-':不在乎。

结果模拟器只能识别上述符号,其他任何东西都会导致错误,包括用于描述位的浮点数。这是我尝试显示要显示的浮点值的示例:

add_force {/test/a[27]} -radix unsigned {0.4 0ns}

错误:[Simtcl 6-179] 由于以下原因无法添加强制:非法值“0.4”:无法将值“0.4”转换为十进制数。

我还观察到 Vivado 已标记,所以我猜您使用的是集成模拟器。在我的示例中,最接近浮点数的是十进制数。Vivado 没有内置变量来支持在仿真中显示的浮点数。下面你会看到它支持的基数,所以你只能严格限制在那些选择上,除了 ASCII 之外,所有这些都会导致错误,但我认为这不是你想要的行为。

1

于 2016-10-31T02:46:13.647 回答