在上一篇博文(计算机组成原理--加法器的速度-CSDN博客)中,讨论了 “级联式” 加法器的速度问题。
“级联式” 加法器的各级加法运算,是从低位到高位逐位进行的。这种方法虽然完全符合人类的算法,但是,也带来了速度低的缺点。而且,相加的位数越多,速度就越低。
为了提高加法器的工作速度,就要抛弃 “逐位进行” 的算法,而是让各个二进制位同时相加。那么,各个位的和,就会在同一步调下产生。因此就必须抛弃全加器原来的电路了,重新设计每个位的进位算法与电路。
在上一篇博文中,已经给出了四位加法器的四个进位(C4C3C2C1)的电路。再用它们与每一位的输入进行运算,即可同时算出四个位的和(S4S3S2S1)。
这种加法器电路,可以称为:同步加法器。四位的同步加法器电路如下:
这种电路,在计算机专业的教材中,称为 “超前进位加法器”。
超前,是什么意思呢? 超的什么前?
大概是比 “级联式加法器” 超前? 那么,“级联式” 就应该叫做 “滞后” 才对呀!
另外,图中的 Pi,是 Ai + Bi,而在某些教材中,写的是 Pi = Ai ⊕ Bi。写成异或运算,对于推导后面的逻辑电路图,似乎是可以简练一点。
但是,大家都知道,“异或运算”显然要比 “或运算” 速度低。Pi 函数将与 Gi = Ai Bi 函数同时进行运算。如果 P 使用异或运算,必然就跟不上 G 的速度,就会对以后的运算产生干扰。
各位网友可能不太相信做而论道的说法,这个没有关系。看看成品的四位加法器 74LS283 的内部电路,就可以理解了。
74LS283 是四位同步加法器,功能是:C4S4S3S2S1 = A4A3A2A1 + B4B3B2B1 + C0。
加法过程中的各个进位(C4C3C2C1),在 74LS283 中,就是采用 “同步” 的算法算出来的。因此,四个位的和(S4S3S2S1)就能够同步输出。
其内部电路图如下:
本图摘自 74LS283 的 PDF 文件,侵删。
本来,每个位的和的算法应该是:Si = Ai ⊕ Bi ⊕ Ci-1,应该由两个异或门来实现。但是在上图中可以看到:每一位仅有一个异或门。因为,在形成 P 函数的运算中,并没有使用异或门。
这就是说:计算机专业教材中所写的 Pi = Ai ⊕ Bi 并不恰当,由这个异或函数画出的电路图,也是败笔。并不符合实际的情况。
在 Pi 中,用或运算(Ai + Bi),代替计算机教材中的异或运算,是不是正确呢?
你用 PROTEUS 软件仿真运行一下,便知真伪。
为了简单,下面用两位数的加法器电路,来说明这个问题。
两位加法器的功能是:C2S2S1 = A2A1 + B2B1 + C0。其中的 C2,如果用 “同步进位” 的算法,就是:
C2 = A2B2 + B2C1 + A2C1
= A2B2 + (A2 + B2) C1
= G2 + P2C1
= G2 + P2 (G1 + P1C0)
= G2 + P2G1 + P2P1C0, 式中 Gi = AiBi,Pi = Ai + Bi。
即,C2 是由三项相或而成,可见下图中框内部分。
(由于在软件中,没有 “三输入或门”,所以就用 “三或非门”,再 “非” 了一下。)
你可用图中左上角的拨动开关来输入数据,同时观察 LED 的变化,以检验本电路的功能。
在图中,各开关输入的数据是:A2A1 = 11、B2B1 = 11、C0 = 1。
经过电路的运算,输出则是:C2S2S1 = 111。
经过全面检测可知,本电路,完全满足两位加法器的功能要求。
做而论道设计的电路,虽然与 74LS283 的内部电路不尽相同,但是,可谓是异曲同工不谋而合。而且本电路要比计算机教材中的 “使用两个异或门的电路” 更为合理,可供实用。
本文完