VHDL:将2D阵列中的元素分配给1D阵列

时间:2012-05-07 05:56:15

标签: vhdl register-transfer-level

我有一个2D数组记录,我必须逐列选择进行处理。我正在将列记录编组到列数组中,如下所示:

col_array(0) <= ( td_array(0)(0), td_array(1)(0), td_array(2)(0), td_array(3)(0) );

本质上是一个数组附加操作。

我有几个像这样的数组。这可能与for-generate循环有关吗?

这看起来像一个数组追加一种操作。你是怎么做到的?


附录: 2D阵列中的每条记录如下所示:

type foo is record:
  enable : std_logic;
  index  : std_logic_vector(7 downto 0);
  cmd    : std_logic_vector(2 downto 0);
end record;

所以我将以行列方式安排这样的接口:

30  31  32
20  21  22   
10  11  12
00  01  02

我需要通过列(使用多路复用器)分解记录信号。因此,将在MUX的输出上访问(00,10,20,30)。

1 个答案:

答案 0 :(得分:2)

不太确定您正在寻找的实际使用情况(如果有的话,col_array的索引如何与td_array的索引相关),但这有帮助吗? (我把事情重新排列为2-d array而不是矢量矢量)

architecture a1 of test is
    type std_ulogic_2d is array(natural range <>, natural range <>) of std_ulogic;
    signal td_array : std_ulogic_2d(0 to 3, 0 to 4);
    signal col_array : std_ulogic_vector(td_array'range(1));
begin  -- architecture a1
    iloop : for i in td_array'range(1) generate
        col_array(i) <= td_array(i,0);
    end generate;
end architecture a1;