2

処理のために列ごとに選択する必要があるレコードの 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

レコード信号を列ごとに分割する必要があります (マルチプレクサを使用)。したがって、(00、10、20、30) は MUX の出力でアクセスされます。

4

1 に答える 1

2

探している実際の使用方法がよくわかりません (のインデックスはifcol_arrayのインデックスとどのように関連していますか) が、これは役に立ちますか? (ベクトルのベクトルではなく、 2 次元配列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 に答える