我正在設計一個設計,我相信可能會發生一些我需要處理的溢出問題。爲了解決我的問題,我需要了解VHDL如何處理二進制溢出。一些示例代碼如下。VHDL如何處理溢出?
signal temp : std_logic_vector (7 downto 0) := "11111111";
signal temp_2 : std_logic_vector (7 downto 0) := "11111111";
signal result : std_logic_vector (8 downto 0) := "000000000";
result <= temp + temp_2 ;
很明顯,這並沒有調用相關的庫,但它提供了我正在使用的代碼的概念。我的問題是:這個二進制加法如何工作(temp + temp_2),即運行此代碼後信號result
會是什麼?現在,編輯中出現錯誤,因爲result
是9位,期望8位。任何關於這個二進制加法如何工作的解釋都會非常有幫助!
您應該使用'signed'和'unsigned'而不是'std_logic_vector'進行數學運算。增加兩個'std_logic_vector's不是標準的VHDL(有一個**非標準**庫允許你這樣做,但你不應該使用它)。 – zennehoy