0
VHDLにstd_logic_vectorsの配列を作成しようとしています。この配列は、バレルシフタを作成するためにgenerateステートメントで使用されます。配列の各要素(配列、ベクトル)は個別にアドレス可能なビットでなければなりません。ここに私のコードのいくつかがあります。2次元配列は1次元を想定しています
信号宣言:アーキテクチャで
type stage_t is array(4 downto 0) of std_logic_vector (15 downto 0);
signal stages: stage_t;
:1マルチプレクサ:2の
test_stage: for st in 0 to 4 generate
test_bit_assign: for st_bit in 0 to 15 generate
test_stagemux: entity work.mux2_1 port map (
S => amt(st),
M0 => stages(st,st_bit), M1 => stages(st,st_bit+log_w),
O => stages(st+1,st_bit)
);
end generate;
エンティティ
entity mux2_1 is
generic (n : INTEGER := 8);
port (
S : in std_logic; -- select
M0, M1 : in std_logic;
O : out std_logic
);
end mux2_1;
私は取得していますエラー:
Indexed name prefix type stage_t expects 1 dimensions
これは私がステージアレイに読み書きしている場所で発生します。どのようにベクトルの1つのビットをアドレス指定するのですか?
また、型stage_tがSTD_LOGICの配列(4 0とdownto、0とdownto 15)である 'ようなタイプのstage_tを宣言することができ;'とそのポートマップであなたの関連を保持2次元配列します。 [最小限で完全で検証可能な例](https://stackoverflow.com/help/mcve)がなければ、次に遭遇する問題を正確に予測することは難しいです。 – user1155120
ステージは1次元タイプ(stage_t)です。 'M0 => stages(st)(st_bit)の行に沿って試してみてください。'次元インデックスstのstはステージのstage_tのどの要素を指定するインデックス名で、st_bit std_logic_vectorの要素へのインデックスとして使用します。ステージを多次元配列として扱おうとしていますが、そうではありません。要素は配列型になります。 – user1155120
@ J.H.Bonariusうん、いくつかのユーザーはコメントの質問に答えてほしい: –