假设我的 VHDL 中有一个定点值 - 代码定义为 std_logic_vector。我知道我的最后 4 位是小数。
当我使用模拟器时,它当然不会看到最后 4 位为小数,是否有可能在模拟中更改它,以便模拟知道第 3 位的值为 0.5 ,第 2 位的值为 0.25等等 ?
假设我的 VHDL 中有一个定点值 - 代码定义为 std_logic_vector。我知道我的最后 4 位是小数。
当我使用模拟器时,它当然不会看到最后 4 位为小数,是否有可能在模拟中更改它,以便模拟知道第 3 位的值为 0.5 ,第 2 位的值为 0.25等等 ?
不幸的是,我怀疑这是可能的。专门针对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 之外,所有这些都会导致错误,但我认为这不是你想要的行为。