正式大小没有实际或默认值vhdl

时间:2017-06-14 16:41:17

标签: vhdl xilinx

我正在尝试在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'库进行类型转换。请帮忙!提前致谢。

1 个答案:

答案 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函数中的向量大小。