3

我在将初始值零赋予 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 定义初始值零?

4

1 回答 1

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"));
于 2012-07-13T10:35:34.967 回答