在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 构造。