我正在尝试在xilinx vivado套件上模拟一个程序,该程序旨在找到给定整数的平方。我的计划的一部分 -
for j in (num_of_bits-1) downto 0 loop
res <=res+to_integer(unsigned(dvandha(shln(std_logic_vector(to_unsigned(num)),j)))); -- I get error here
report "The resulting square is " & integer'image(res);
res <= to_integer(unsigned(shln(std_logic_vector(to_unsigned(res)),1))); --I get error here
end loop ;
这里'res'是整数类型的。 dvandha是我写的一个函数。它的输入参数是std_logic_vector和integer。 shln是左移功能'n'移位。 num是我的整数输入。我收到以下错误 -
“正式尺寸没有实际或默认值”
我不知道错误是什么以及如何摆脱这个错误。我没有在我的程序中使用名称“size”的任何变量/信号。它指出我的大小是多少?我想这是typeconversion的错误。我使用'numeric_std'库进行类型转换。请帮忙!提前致谢。
答案 0 :(得分:1)
您需要将size
参数添加到to_unsigned
函数,可能是这样的:
for j in (num_of_bits-1) downto 0 loop
res <=res+to_integer(unsigned(dvandha(shln(std_logic_vector(to_unsigned(num,j)),j))));
report "The resulting square is " & integer'image(res);
res <= to_integer(unsigned(shln(std_logic_vector(to_unsigned(res,1)),1)));
end loop ;
size
是指to_unsigned
函数中的向量大小。