2017-06-14 54 views
0

我正在試圖模擬xilinx vivado套件上的一個程序,該程序打算查找給定整數的平方。我的程序的一部分 -正式尺寸沒有實際值或默認值vhdl

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'位移換左功能。數字是我的整數輸入。我收到以下錯誤 -

「正式的大小沒有實際的或默認值」

我沒有得到任何的想法是什麼錯誤,以及如何擺脫這一點。我的程序中沒有使用任何名稱爲「size」的變量/信號。它指出我的大小是多少?我想這是typeconversion的錯誤。我使用'numeric_std'庫進行類型轉換。請幫忙!提前致謝。

+2

提示:下次不要內聯一切。 A)這使得它很難閱讀,B)它使得更容易發生錯誤。 – JHBonarius

回答

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功能。

+0

糟糕!謝謝!這清除了我的'那個'錯誤。但是現在我在運行時遇到了不同的錯誤。它告訴 錯誤:索引-2147483640越界7 downto 0 時間:0 ps迭代:0進程:/ strt_sqr/line__121 第121行是進程(num)其中num是整數輸入,如前所述。請原諒我!我是一個新手在vhdl – Veena

+0

很難告訴任何沒有[mcve]的東西,但你可能需要發起一些事情。 – Staszek