数组类型在VHDL中不匹配

时间:2011-03-11 13:11:07

标签: hardware vhdl digital

我的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值作为我的数组的输入。

非常感谢!

1 个答案:

答案 0 :(得分: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而不是unsigned类型,并进行额外转换:

signal index : std_logic_vector(0 downto 0);
...
out   := irf_array(to_integer(unsigned(index)));