2012-05-07 226 views
2

我有一个二维数组记录,我必须逐列选择进行处理。我编组列记录到柱阵列,这样的事情:VHDL:将二维数组中的元素分配给一维数组

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

基本上是一个数组追加操作。我有几个这样的数组。这可能与for-generate循环有关吗?

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


附录: 二维阵列中的每个记录的样子:

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的输出端被访问。

+0

你可以发布更多的代码与您的数据类型 - 看起来像载体的载体,而不是2-d阵列... –

回答

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; 
+0

这正是我所期待的。谢谢 !! – boffin