VHDL:为什么2维向量初始化为嵌套的1维向量?

时间:2015-11-13 00:36:58

标签: multidimensional-array syntax vhdl array-initialization

在VHDL阵列中(向量)可以使用(others => <element>)初始化。

一维示例:

signal mySignal1 : std_logic_vector(7 downto 0) := (others => '0'); 

如果我使用两个嵌套的一维向量,它看起来就像这个例子:

type myVector is array(natural range <>) of std_logic_vector(7 downto 0);
signal mySignal2 : myVector(3 downto 0) := (others => (others => '0'));

好的,这是真正的二维示例:

type myMatrix is array(natural range <>, natural range <>) of std_logic;
signal mySignal3 : myMatrix(3 downto 0, 7 downto 0) := (others => (others => '0'));

可以看出,信号与前一个信号的结构不同,但初始化是相同的。

为什么/不是这种语法:(others, others => '0')使用/选择?

1 个答案:

答案 0 :(得分:0)

因为构造中的逗号“,”(其他,其他=&gt;'0')暗示这两个术语是向量的标量元素。他们不是。 (others =&gt;(others =&gt;'0'))是VHDL唯一完全无约束的嵌套向量构造。