CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

姜老师带你设计CPU之6

已有 3334 次阅读 2014-8-2 07:44 |个人分类:计算机科普|系统分类:科普集锦| CPU设计

1.6.  加减法运算器设计

机器能够代替我们进行运算是其最神奇的部分之一,下面我们就来设计加减法运算器。

我们知道用限位数,可以将减法变成加法计算,方法是将减数用它对应的对称码代替,然后与被减数做加法即可。还知道:一个限位数的对称码等于其反码加一。为此,我们可以将全加器改造成既能够做加法,又能够做减法的一位加减运算器件。

1.6.1. 设计加减运算单元

我们先从最简单的一位数加减法考虑,我们称之为加减单元。它的设计如图1-19所示。

 

1-19  加减单元电路设计

我们在全加器的B端连接一个异或门,一个输入端仍然用B来记,另一个输入端我们用J来记。在原理图设计中,要对输入输出线加上双箭头表示的引脚。写着input的是输入引脚,写着output的是输出引脚。引脚上标注的名称就是连接导线的名称。

输入端增加的J线是加减法运算控制端。当J=1时,连接BJ端的异或门的输出值就是B的反码。这一点可以从下面异或门的真值表看出。

1-9   JB异或真值表

J

B

JB

0

0

0

0

1

1

1

0

1

1

1

0

J看成控制端,容易看出J=0时,异或门输出B的值,而当J=1时,异或门输出的是B的反码。

1.6.2. 加减单元的解释

从图19我们看到:当J=0时,输出端得到的就是A+B+C,若C=0,则输出是A+B的运算结果。但J=1时,原来全加器的B输入端现在变成了B的反码。全加器实际做的是AB的反码相加,即是A+B'+C。如果此时让C=1,则图19的电路就是在做A+B'+1,也就是在做A-B运算。

J这样的能够控制器件状态变化的导线,我们叫“控制线”。

加减单元内部结构固定之后,可以用图1-20的矩形框图简化表示。图中左面的短线是输入端,右面的短线是输出端。

 

1-20 加减单元简图

1.6.3. 加减法运算器设计

4个加减单元如图1-21那样连接起来,就组成了一个4位二进制数的加减法运算器。

1-21  4位加减法运算器

今后我们用向量的形式记录多位输入输出。这里向量A[3..0]B[3..0]S[3..0]都表示4位二进制数,其余JCD都是一位数。

由于电信号传输速度极快,输入端的信号一旦加上,各全加器就会立即得到本位和及向上的进位,故瞬间就会得到运算的结果。至于信号传输过程的延时,我们在此暂不讨论。我们认为,只要在输入端加入A[3..0]B[3..0]C的数,马上就会得到S[3..0]D的值。

总结加减法运算器的工作:

1)让J=C=0,那么做A+B;

2)让J=C=1,那么做A-B

1.6.4. 超长数计算

1-21的加减法运算器是4位的,因而能够直接计算加减法的范围是[-8,7]。能够用它计算8位数或16位数吗?回答是肯定的。

例如,计算10010101+01011101,我们将数按4位分段,先做低40101+1101,将结果0010放在一旁,记住进位C=1;接下来再做1001+0101+C=1001+0101+1=1111,这次进位C=0;那么最终的结果是11110010。这个结果是-14。由于结果的符号与第一个数符号相同,因而不溢出。

通过此例,我们看到机器计算的实际范围并不取决于位数,不是说“位数越多,越精确”。实际上我们可以依据机器运算器的位数进行分段计算,这里设计的加减法运算器,使用时只要将进位考虑到分段计算中,就能够计算任何长度的二进制数加减法。

1.6.5. 溢出判断设计

由于限位数计算总是在一定范围内进行的,当计算发生溢出,结果就是错误的。避免错误,就要知道何时产生溢出。限位数加减法运算,异号两数相加,或者同号两数相减都不会溢出。溢出只发生在同号两数相加和异号两数相减的情况下。根据前面介绍的判断溢出:结果与第一个数符号不同,则溢出。可以设计溢出判断电路(见图1-22)。注意:图中导线标注相同,则表示它们是同一条导线,我们可以将图1-22和图1-21放在一起。

1-22  溢出判断电路

只要OUT=1,则四位运算结果溢出。

如果是超长数的多段计算,溢出判断只在最高段有用。为了不出现溢出情况,多段计算时,将原数都扩展一段,就不用再考虑是否溢出了。为什么?

1.6.6. 超长数减法讨论

分段计算超长数减法,要注意低段计算时J=C=1,而其他段要令J=1Ci=Di-1,也就是要将前次的进位加上。这其中的道理,请读者用10010101-01011101为例分段计算,分析一下吧。

1.6.7. 小结

运算器的设计完全在运用限位数的理论。我们用4位加减法运算器来说明一般加减法运算器的设计,它给出了机器计算的基本原理的最核心部分。象图1-21那样,相信你会设计出8位、16位、32位或64位的加减法运算器。但是,我们已经见到数值计算的精确度不是靠机器的位数决定的,在机器基本条件具备的情况下,通过分段、小数点移位等方法,就是用4位的加减法运算器,也可以完成实数计算。

读者也许会问:“数怎么输入?”“前次运算的进位怎么保持?”这些问题需要用到寄存器的知识,以后再逐渐分解。

 

 



https://wap.sciencenet.cn/blog-340399-816543.html

上一篇:姜老师带你设计CPU之5
下一篇:姜老师带你设计CPU之8
收藏 IP: 221.222.73.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-29 14:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部