在HDL中实现签名加法器

时间:2017-02-08 17:05:42

标签: vhdl verilog

嘿大家,                 我正在开展一个项目,要求我使用已签名的加法器。 如何在不使用算术运算符的情况下在HDL中实现这个加法器?(不需要测试平台),有没有办法修改现有的加法器电路作为带符号的加法器,如果是这样,你的输入将会有很大的帮助。 先感谢您。

1 个答案:

答案 0 :(得分:0)

要回答问题的第一部分,您需要实现(例如)波纹进位加法器,这是一系列连接在一起的全加器办法。在互联网上会有很多关于这个的东西,因为它是标准的东西。例如:http://eda-playground.readthedocs.io/en/latest/code-examples/full-adder.html

回答问题的第二部分:只要输入和输出使用两个补码,可以处理有符号数的加法器与只能处理无符号数的加法器相同表示。

使用二进制补码表示来否定一个数字,一个反转所有位并加一个。例如,使用8位二进制补码表示

 23  is  00010111    and
-23  is  11101001    which was generated by inverting all the bits (11101000) and then adding 1

现在让我们使用标准加法器将两者加在一起,即通过在学校学到的长时间添加:

 23  is  00010111 
-23  is  11101001 +
         --------
      (1)00000000
         --------

看:它有效! (1)是进位输出,您可以忽略它。添加两个数字的结果需要比这两个数字中更宽的一个宽一点。所以,实际上我们应该先将两个输入加宽到9位。因此,在9位二进制补码表示中:

 23  is  000010111 
-23  is  111101001 +
         ---------
      (1)000000000
         ---------

你通过符号扩展扩大使用双补码表示的数字(即签名的数字):也就是说,你取左手位(MSB,符号位)并向左重复(在这种情况下一次,因为我们只扩展了1位)。