這是一個非常簡單的問題,但我還沒有能夠完成這項工作,也沒有任何搜索谷歌或在這裏出現任何真正有用的東西。VHDL - 將兩個8位向量添加到一個9位向量中
我想要做的就是添加兩個8位向量並將結果存儲在9位向量中。
signal operand1, operand2 : STD_LOGIC_VECTOR(7 downto 0);
signal sum : STD_LOGIC_VECTOR(8 downto 0);
sum <= operand1 + operand2;
但是我得到警告:
Width mismatch. <sum> has a width of 9 bits but assigned expression is 8-bit wide.
不應該VHDL有某種內置的例程來了解一個額外的比特是必要的除了溢出?
我有這些軟件包包括:
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
也許STD_LOGIC_VECTOR總是簽署?如果是這樣,那麼我需要將它們的明確定義爲無符號?
用於通用解決方案也可以使用SIGNED類型,您可以使用numeric_std庫中的RESIZE(例如sum <= RESIZE(operand1,operand1'LENGTH + 1)+ RESIZE(operand2,operand2'LENGTH + 1)) – sbell
@sbell +1解! – rick