2011-03-11 73 views
-2

我的VHDL代码非常简单的问题。我已经定义了下面的代码:VHDL中的阵列类型不匹配

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

当试图编译这个简单的代码fragement我收到以下错误:

Error: array index type mismatch [6.4] 

所以我想知道如果任何人有一个想法,我怎么可以使用STD_LOGIC值作为我的数组的输入。

非常感谢!

+0

为了尊重那些谁可能需要花时间来解决,你无法自己解决问题,我想建议,以避免其描述预先称为“非常简单”。 – 2011-03-11 14:46:21

回答

3

您的数组索引需要是一个整数。如果你想使用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))); 
+4

为什么不直接声明一个整数的索引?这样你以后不必转换数据类型。信号索引:整数范围0到1; – Philippe 2011-03-11 16:09:06

+0

+1使用正确的'无符号'类型。但我会从一开始就使用一个整数 – 2011-03-14 16:26:12