Vhdl 用HDL实现有符号加法器
大家好,, 我正在做一个项目,需要我使用签名加法器。 如何在不使用算术运算符的情况下在HDL中实现此加法器?(不需要测试台),是否有方法修改现有加法器电路以用作有符号加法器,如果是这样,您的输入将非常有帮助。Vhdl 用HDL实现有符号加法器,vhdl,verilog,Vhdl,Verilog,大家好,, 我正在做一个项目,需要我使用签名加法器。 如何在不使用算术运算符的情况下在HDL中实现此加法器?(不需要测试台),是否有方法修改现有加法器电路以用作有符号加法器,如果是这样,您的输入将非常有帮助。 先谢谢你 要回答问题的第一部分,您需要实现(例如)一个纹波进位加法器,它是一系列以某种方式连接的全加器。互联网上会有很多关于这个的东西,因为这是标准的东西。例如: 回答问题的第二部分:可以处理有符号数的加法器与只能处理无符号数的加法器相同,只要输入和输出使用2的补码表示 要使用二的补码表示
先谢谢你 要回答问题的第一部分,您需要实现(例如)一个纹波进位加法器,它是一系列以某种方式连接的全加器。互联网上会有很多关于这个的东西,因为这是标准的东西。例如: 回答问题的第二部分:可以处理有符号数的加法器与只能处理无符号数的加法器相同,只要输入和输出使用2的补码表示 要使用二的补码表示法对一个数求反,一个将所有的位反转并加一。例如,使用8位2的补码表示
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位2的补码表示中:
23 is 000010111
-23 is 111101001 +
---------
(1)000000000
---------
您可以通过符号扩展来加宽使用2的补码表示法(即有符号数)的数字:也就是说,您使用左手位(MSB,符号位)并向左重复它(在本例中是一次,因为我们仅加宽1位)。如何在HDL中实现此加法器-与实现任何逻辑电路的方式相同。从真相表开始。StackOverflow应该是你最后的选择。用离散的步骤定义你必须做的事情,然后搜索并学习其中的每一个步骤。简而言之,做你的家庭作业。如果你还有问题,就把它们贴在这里。谢谢你,有没有一种不用“+”操作符就可以实现的方法。