2

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

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

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

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

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


附录:二维数组中的每条记录如下所示:

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

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

4

1 回答 1

2

不太确定您正在寻找的实际用法(索引如何与 if 索引col_array相关td_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;
于 2012-05-08T10:55:30.430 回答