我正在设计一个设计,我相信可能会发生一些我需要处理的溢出问题。为了解决我的问题,我需要了解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