我有一个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)。
答案 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;