【发布时间】:2020-01-13 11:39:36
【问题描述】:
我声明了两种类型的数组:
typeA is array(0 to 15) of std_logic_vector(15 downto 0);
typeB is array(0 to 7) of std_logic_vector(15 downto 0);
然后我实例化了 3 个信号:
X1 : typeA;
X2, X3 : typeB;
我想将 X1 的前 8 个向量分配给 X2,其他的分配给 X2:
X2 <= X1(0 to 7);
X3 <= X1(8 to 15);
但我收到一个错误,因为分配的右侧部分与左侧部分不同,但尺寸应该匹配。正确的做法是什么?
【问题讨论】:
-
typeA 和 typeB 都不是多维数组类型,它们只有一个索引(IEEE Std 1076-2008 5.3.2.1)没有显示提供对象类的声明(6.5.6.3)X2 和 X3 是信号的目标赋值语句 (10.5) - 它们是类信号而不是类变量,信号已更新并具有历史记录(附件 I 词汇表),变量赋值是即时的 (10.6)。多维数组和变量赋值标签不适合您的 VHDL sn-ps(不包含 minimal reproducible example,也缺少实际错误)。
标签: arrays multidimensional-array vhdl variable-assignment