一,手工除法运算方法
图
1
图1
图1
二,原码除法运算方法
图
2
图2
图2
图
3
图3
图3
图
4
图4
图4
由于运算步数不确定,这样设计电路的缺陷是电路复杂,难以控制。
三,原码加/减交替除法运算方法(不恢复余数法)
图
5
图5
图5
如图五,我们发现可以不恢复余数直接将其左移再加Y得到的结果也是4Ri-Y,这样我们就可以确定运算步数了,看图6就可以理解了。
图
6
图6
图6
根据改进的方法,如果余数小于零,商上零,下一步操作就是左移+[Y]补,得到的余数若大于零,就-[Y]补(+[-Y]补),这样每一步就能上商,也就能确定步数了,而且也简介得多。
四,原码加/减交替除法实现逻辑
图
7
图7
图7
五,阵列除法
图
8
图8
图8
图8中间的小虚线框为全加器FA,通过外面虚线框的改进,成为了可控加/减法(CAS)单元,可实现加法和减法。
图
9
图9
图9
我们从第一排开始,因为第一步一定是减法(这个肯定想得到吧),所以p=1,然后这个p到最右边有个拐角直接连在进位位上(因为减法的话需要将减数变为补码,所以取反后需要进位位加一,这个设计很巧妙,如果是加法,P=0,就不会进位),除数(Y)与被除数(X)相减,最左边的CAS的进位输出是商,且本位商决定下一步是执行加操作还是减操作,执行完一排后,就将被除数左移一位(CAS斜着连实现,也可以理解为除数右移一位),最后最左边的进位输出Q1,Q2,Q3…就是商,各R就是余数。
参考文献:https://www.icourse163.org/course/HUST-1003159001
非常感谢秦磊华老师的讲解,侵权删