-2

VHDL コードの非常に単純な問題です。次のコードを定義しました。

type irf_array is array(0 to 1) of integer;
signal index : std_logic;
....
index := input(5);
out   := irf_array(index);

この単純なコード フラグメントをコンパイルしようとすると、次のエラーが発生します。

Error: array index type mismatch [6.4]

したがって、 std_logic 値を配列への入力として使用する方法を誰かが知っているかどうか疑問に思っています。

どうもありがとう!

4

1 に答える 1

4

配列インデックスは整数である必要があります。std_logicベースの型を使用する場合は、符号付きまたは符号なしの型(プレーンなstd_logicシグナルとは異なり、数値の概念を含む)と適切な型変換を使用する必要があります。

type irf_array is array(0 to 1) of integer;
signal index : unsigned(0 downto 0);
....
index(0) := input(5);
out   := irf_array(to_integer(index));

unsigned型の代わりに、追加の変換を使用してstd_logic_vectorを使用できます。

signal index : std_logic_vector(0 downto 0);
...
out   := irf_array(to_integer(unsigned(index)));
于 2011-03-11T15:02:39.353 に答える