【发布时间】:2019-05-19 14:16:39
【问题描述】:
我有一个signal dataIn : std_logic_vector ( 15 downto 0);
我想提供小于 16 位的输入,例如 dataIn <= x"000a",这些位占据最高有效位,其余位为零。
在verilog中你可以很容易地做到这一点,但在VHDL中你会得到错误:
“字符串长度与定义的匿名整数子类型不匹配...”。
我知道如果您使用 16x"bit_string" 可以解决问题,但这仅适用于 VHDL-2008,ghdl 尚不支持 VHDL-2008。
IEEE Std 1076-2002 有什么方法吗?
【问题讨论】:
-
ghdl 实际上确实 支持 VHDL2008(在我看来甚至比大多数商业模拟器更完整)。下载最新版本并尝试
--std=08命令行开关。 -
您的示例
dataIn <= x"000a"提供了一个长度为 16 的简单信号分配波形表达式。例如IEEE Std 1076-2002 13.7 位串文字“如果基本说明符是'O'(分别为'X'),则位串文字的值是通过将bit_value中的每个扩展数字替换为由以下组成的序列而获得的序列三个(分别为四个)值,表示取自字符文字 '0' 和 '1';..." 的扩展数字(为了您的目的,这比 -2008 15.8 位字符串文字,扩展位值更容易阅读)。尝试不同的示例。