logic index : unsigned(9 downto 0) ;
type fft_data is array (3 downto 0) of unsigned(16 downto 0);
signal tmp,signal fmax_data :fft_data;
tmp = fmax_data(to_integer(index(9)));
上面的部分代码给出了以下编译错误; “子程序调用或运算符参数类型不匹配87”
如果我做以下修改,它的工作原理 .
logic index : unsigned(9 downto 0) ;
type fft_data is array (3 downto 0) of unsigned(16 downto 0);
signal tmp,signal fmax_data :fft_data;;
tmp = fmax_data(to_integer(index(**9 downto 9**)));
谁能解释一下上面两个实现有什么区别?我正在使用vhdl-93 std和ncvhdl . 谢谢
1 回答
在
numeric_std
中,to_integer
函数仅为unsigned
和signed
类型定义 .无符号派生自
std_logic
astype UNSIGNED is array ( NATURAL range <> ) of STD_LOGIC;
当您使用
to_integer(index(9))
时,您传递index(9)
,其类型为std_logic
.当您使用
to_integer(index(9 downto 9))
时,您传递的范围为index
,大小为1,但是,它是unsigned
类型 .您也可以根据需要创建自定义功能 . 要将
std_logic
转换为integer
.或环绕
to_integer