我在VHDL中为matrix2D的信号类型赋予初始值零时遇到问题。我把它定义如下:
type matrix2D is array (integer range <> , integer range <> ) of signed(2 downto 0);
在我的VHDL代码中我写了初始值:
process(matrix1, matrix2, s_out_adder)
variable v_flipflop_adder: matrix2D(0 to 4, 0 to 4) :=((0 to 4),(others =>(others=>'0')));
begin
....
但不幸的是它不起作用。
有谁知道如何为matrix2D定义初始值零?
答案 0 :(得分:5)
我的Ashenden州副本
的第86页我们还可以使用聚合来编写多维数组值。在这种情况下,我们将数组看作是一个数组数组,首先为每个最左边的索引值写一个数组聚合。
这就是您的示例所需要的:
variable v_flipflop_adder_simple_init: matrix2D(0 to 4, 0 to 4) :=
(others => (others => (others => '0')));
这是一个更复杂的问题:
variable v_flipflop_adder: matrix2D(0 to 4, 0 to 5) :=
( 4 => (1 => "001", others => "101"),
others => (5 => "110", others => "010"));