Verilog实现32位加减法电路

Verilog实现32位加-减法电路

1.理论

参考文章
原码反码和补码,一篇就够了,全网最详细解析
HDLbits

  1. 计算机中存储数字只会存储正数和负数的补码。
  2. 正数的补码是其本身,负数的补码是对原码非符号位取反,再加1得到。
  3. 只存在+0,不存在-0。例子: 0000_0000 - 0111_1111 表示 (+0) - (+127);1111_1111 - 1000_0001 表示(-1) - (-127)。 1000···000(n个0)表示的是-2^n,这是人为规定且自然的:1000_0000 + 0000_0001 = 1000_0001 ,正好对应-128的补码与+1的补码相加得到了-127的补码。所以8bit数据可以表示(-128)到(127)一共256个数。
  4. 不过要注意,例如2个字节的二进制数据1000 0000 0000 0000 表示-215=-32768 ;注意 如1000_0000_0000其实是0000_1000_0000_0000,所以它不是以为的-211,而是211
  5. 求一个正数的相反数的补码:符号位取反,然后取其补码,也就是说:正数所有位取反,再加1,得到其相反数的补码
  6. 计算机内部的数字电路做减法实际上是通过加法器实现的,HDLbits的题目讲述了这样一种方法:

2.RTL view

图片截取自HDLbits的作业题目“adder-subtractor”。HDLbits

在这里插入图片描述
整个加法-减法器包含了两个16位全加器以及一个异或门实现a+b和a-b功能。
加法:sub = 0即可,正常的两个16全加器联合用做32位全加器。
减法:当sub为1‘b1时,使b与32’h0000_0000进行异或操作,即对b[31:0]进行了取反操作(包括符号位),另外,低位全加器的进位端cin = 1’b1,即实现加1功能。最终共同完成对b的相反数的补码做加法,即对b的减法

3.Verilog

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值