gpt4 book ai didi

vhdl - vhdl 中的 index(9) 和 index(9 downto 9) 有什么区别?

转载 作者:行者123 更新时间:2023-12-01 12:20:20 24 4
gpt4 key购买 nike

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。
谢谢

最佳答案

numeric_std , to_integer函数仅针对 unsigned 定义和 signed类型。

无符号派生自 std_logictype 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_logicinteger .

function to_integer (ARG : std_logic)
return integer is
begin
if ARG = '1' OR ARG = 'H' then
return 1;
else
return 0;
end if;
end function to_integer;`

或环绕 to_integer
function to_integer (ARG : std_logic)
return integer is
variable t : unsigned(0 downto 0) := "0";
begin
t(0) := ARG;
return to_integer(t);
end function to_integer;

关于vhdl - vhdl 中的 index(9) 和 index(9 downto 9) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44880131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com