2012-05-07 206 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