在上篇博文(除法运算的方法)中,做而论道介绍了 “被除数左移” 的除法运算方法。
八位数(1000 0110)除以四位数(1010)的操作步骤如下图所示。
由图可见,共进行了四次 “相减、差左移一位并上商” 的操作。经过四次操作之后,就得到了四位的余数和四位的商。
在把这种方法落实到硬件电路之前,还是先用框图进行一下简单的分析吧。 除法运算的硬件组成框图可见下图。
做除法之前,应该先输入数据,这个步骤叫做初始化。
初始化时,应该输入八位的被除数(A7~0)和四位的除数(B3~0)。
除数(B3~0)比较好办,因为它在整个计算过程中,一直是不动的。 所以,就直接把 B3~0 送到减法电路的减数位置,即可。
初始的被除数、和将来要出现的差值,都要进入到移位电路。 所以,在这里应该选用一个 “二选一” 的器件。 在数字电路芯片中,可以找到 74LS157,它就是一个进行 “两路数据选择” 的器件。 在初始化时,可令 157 选用 A7~0,在进行除法运算时,则令 175 选用差值 F7~0。
由 157 选中的信号,并行向下走,就可以送到移位电路。
初始化输入的 A7~0 先不用移位,直接就继续向下走,送到减法电路的被减数位置。
在减法电路中,立刻就进行八位的减法运算:A7~0 - 0 B3~0 000。
减法电路是采用 “同步借位” 的电路,几乎立即就能得出差值:F7~0,以及借位:C7。
如果借位为 0,商就上 1。那么就由一个反相器输出 1,送到移位电路的 “右串入” 端。
同时,还要把差值左移一位,作为下一次减法运算中的被除数。 因此,差值(F7~0)就绕了一圈,经过数据选择器,进入到移位电路,去进行左移(并把商 1 移进来)。
如果借位为 1,商就上 0。同时,本次减法运算产生的差值,就不要了,只需把移位电路中的被除数进行左移一位,就可以了。 此时,就不用考虑差值(F7~0)的绕圈,这就省事了。
移位电路的工作,就稍稍复杂一点了。
移位电路可以选用做而论道以前介绍过的芯片:74LS194。
它具有四个功能:并行置数、数据左移、数据右移、静止不变。 分别用两位二进制数进行控制。 同时还得给它一个时钟脉冲信号,控制它做出动作的时机。
在本次设计的除法电路中,只用到 “并行置数” 和 “左移一位”。 那么,用一位二进制数,就可以控制了。这个二进制数,就可以选用做减法时产生的借位(C7)。
当借位为 0 时,经过反相为 1,就控制移位电路进行 “并行置数”,把 F7~0 放进来。 之后再进行左移一位。
当借位为 1 时,经过反相为 0,就控制移位电路进行 “左移一位”,这就不再理会差值是多少了。
电子线路的设计方案,用通俗的语言来介绍,还是很有一些词不达意的。 如果说的不明白,或者看不明白,欢迎留言讨论。
--本文完--