在VHDL中,可以使用(others => <element>)初始化数组( vector )。

一维示例:

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

如果我使用两个嵌套的一维 vector ,则该示例如下所示:
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')

最佳答案

因为构造中的逗号“,”(其他,其他=>'0')表示这两个术语是 vector 的标量元素。他们不是。 (others =>(others =>'0'))是VHDL仅有的完全不受约束的嵌套 vector 构造。

09-27 04:20