我在unsigned
執行邏輯運算已經一個問題:無法對未簽名的VHDL執行邏輯運算?
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
with sel select
s_1<=a+b when "000",
a+((not b)+1) when "001",
s_2 when "010",
s_3 when "011",
s_4 when "100",
(others=>'0') when others;
這裏有一個錯誤:
No feasible entries for prefix operator "not"
s_1,a,b,s_2,s_3,s_4
都unsigned(31 downto 0)
類型。
我發現轉換std_logic_vector
爲無符號對std_logic_vector
使邏輯運算,如果它不能在無符號做一個代碼,但這個代碼用numeric_std.all
其使用時,我認爲它相沖突以std_logic_arith
並取得簽名未知的數據類型。
現在我不知道如何執行無符號邏輯運算,我不知道如何將std_logic_vector
轉換爲unsigned
。有人能幫我嗎?
請添加庫和使用條款的問題。如果兩個「不是」的定義是可見的,編譯器會將它們隱藏起來,而不是挑選(不可能)你不想要的。最好的選擇是ieee.std_logic_1164,ieee.numeric_std和別的! numeric_std肯定會定義一個「不」運算符。 –