2017-06-23 39 views
0

我有以下代碼(簡化):轉換和調整矢量

library IEEE; 
use IEEE.std_logic_1164.all; 
use IEEE.numeric_std.all; 
use ieee.std_logic_arith.all; 

entity foo is 
end entity; 

architecture fum of foo is 

    signal slv16 : STD_LOGIC_VECTOR(15 DOWNTO 0); 
    signal slv5 : STD_LOGIC_VECTOR(7 DOWNTO 0);  

begin 

    slv16 <= std_logic_vector(resize(unsigned(slv5), slv16'length)); 

end architecture; 

我得到的錯誤消息「調整大小」無法被匹配到一個子程序。爲什麼?

+0

我不知道。我沒有看到任何錯誤。我已經在3種不同的模擬器上試過了,他們也認爲它也可以:https://www.edaplayground.com/x/pRr。你在用什麼模擬器? –

+0

顯示完整的錯誤信息和任何警告,這些警告也會指示該工具。調整大小[無符號,自然返回無符號]在程序包numeric_std中聲明。 – user1155120

+0

GHDL('ghdl -a --std = 08 --ieee = standard')或Mentor Graphics Modelsim('vcom -2008')沒有錯誤。 –

回答

0

我想我發現了這個問題。我用這個兩個libraies:

USE ieee.numeric_std.all; 
USE ieee.std_logic_arith.all; 

而兩者具有相同的實行無符號如下:刪除簡介庫中的錯誤消息走後

type UNSIGNED is array (NATURAL range <>) of STD_LOGIC; 

。雖然我在這裏理解了這個問題,但是上面的錯誤信息給了我一個錯誤的方向來看待。

謝謝!

+0

您問題中的代碼不會'使用ieee.std_logic_arith.all;';你可能想編輯它來顯示這個。錯誤信息是你所期望的,因爲在VHDL中,當你對同一個子程序有多個定義時,所有的都將被忽略,以提醒你衝突。 –

+0

好的 - 這就解釋了爲什麼我在這種情況下忽略了所有的庫都會出現這樣的錯誤信息。 – Norick