Verilog除法器(32位无符号+带符号)

32位无符号除法器设计

恢复余数法:

恢复余数除法的基本思路是从“部分余数”中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0.
寄存器使用:

reg_r 存放被除数a
reg_b 存放除数b
reg_r 存放余数(初始清零)

具体做法:

做减法时,减数是reg_b中的除数,被减数是reg_r中的余数左移一位,最低位由reg_q(被除数)的最高位补充。为了能够判断相减结果的正负,减法器的位数要比除数的位数多出一位。若相减为正,则减法器输出的最高位为0;若相减为负,则减法器输出的最高位为1。

若相减结果为正,把相减结果写入reg_r(部分余数),reg_q的内容左移一位,最低位放入商1。
若相减结果为负,把被减数写入reg_r(恢复之前的余数),reg_q的内容左移一位,最低位放入商0。

循环上述减法,知道被除数全部移除reg_q为止。计算结束后reg_q中内容是商,reg_r中的内容是余数

Tips:

之所以能够一位一位减,是因为若一个数a可以除b,则a左移一位之后(相当于乘2),仍然可除b。

不恢复余数除法

在恢复余数除法算法中,如果部分余数为负,则要恢复原来的余数并左移。设部分余数为R,除数为B。恢复余数相当于R+B,左移相当于(R+B)*2。以上操作完成后进行下一轮的迭代,即从部分余数中减去B。我们有以下的等式:

(R+B)2-B=R2+B

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值