-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));

您可以使用 std_logic_vector 代替无符号类型,并进行额外的转换:

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