加法器的原理、类型与优化设计

2017-08-18 101 0

一、加法器的简介

加法器是为了实现加法、产生数的和的装置。加数和被加数为输入、和数与进位为输出的装置为半加器;若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。加法器常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。

对于 1 位的二进制加法,相关的有五个量:

(1)被加数 A;(2)加数 B;(3)前一位的进位 CIN;(4)此位两数相加的和 S;(5)此位两数相加产生的进位 COUT。

前三个量为输入量,后两个量为输出量,五个量均为 1 位。

加法器的原理、类型与优化设计

图 1 二进制加法器的输入输出量

二、加法器的原理

对于 32 位的二进制加法,相关的也有五个量:被加数 A(32 位)、加数 B(32 位)、前一位的进位 CIN(1 位)、此位两数相加的和 S(32 位)、此位两数相加产生的进位 COUT(1 位)。

要实现 32 位的二进制加法,一种自然的想法就是将 1 位的二进制加法重复 32 次(即逐位进位加法器)。这样做无疑是可行且易行的,但由于每一位的 CIN 都是由前一位的 COUT 提供的,所以第 2 位必须在第 1 位计算出结果后才能开始计算,第 3 位必须在第 2 位计算出结果后才能开始计算,以此类推;最后的第 32 位必须在前 31 位全部计算出结果后才能开始计算。这样的方法,使得实现 32 位二进制加法所需的时间是实现 1 位二进制加法时间的 32 倍。

可以看出,上述方法是将 32 位加法逐位串行进行的,要缩短时间就应设法使上述过程并行化。逐位进位加法器在每一位计算时都在等待前一位的进位,那么不妨预先考虑进位输入的所有可能——对于二进制加法来说就是 0 与 1 两种可能——并提前计算出若干位针对这两种可能性的结果;等到前一位的进位来到时,通过一个双路开关选出输出结果,这就是进位选择加法器的思想。

提前计算多少位的数据为宜?同为 32 位的情况:线形进位选择加法器的方法是分 N 级、每级计算 32/N 位;平方根进位选择加法器则考虑到使两个路径(一是提前计算出若干位针对两种可能性结果的路径,二是上一位的进位通过前面结构的路径)的延时达到相等或近似,其分级方法或为 2-3-4-5-6-6-6(即第一级相加 2 位、第二级 3 位、第三级 4 位、第四级 5 位、第五级 6 位、第六级 6 位、第七级 6 位),或为 3-4-5-6-7-7(即第一级相加 3 位、第二级 4 位、第三级 5 位、第四级 6 位、第五级 7 位、第六级 7 位)。

进一步分析加法进行的机制,可以使加法器的结构进一步并行化。令 G = AB、P = A⊕B,则 COUT(G, P) = G + PCIN、S(G, P) = P⊕CIN。由此,A、B、CIN、S、COUT 五者的关系变为 G、P、CIN、S、COUT 五者的关系。再定义点运算(*):(G, P) * (G′, P′) = (G + PG′, PP′),据此可以把 (G3:2, P3:2) 分解为 (G3, P3) * (G2, P2)。

点运算服从结合律,但不符合交换律;点运算只与 G、P 有关而与 CIN 无关,也就是可以通过只对前面若干位的 G、P 进行点运算,就能得到第 N 位的 GN:M、PN:M 值。当取 M 为 0 时,获得的 GN:0、PN:0 即可与初始的 CIN 一起代入 COUT(G, P) = G + PCIN、S(G, P) = P⊕CIN,得到此位的 COUT、S;而每一位的 G、P 值又只与该位的 A、B 值即输入值有关,所以在开始进行运算后就能并行地得到每一位的 G、P 值。以上分析产生了超前进位加法器的思想,即三步运算:① 由输入的 A、B 算出每一位的 G、P;② 由各位的 G、P 算出每一位的 GN:0、PN:0;③ 由每一位的 GN:0、PN:0 与 CIN 算出每一位的 COUT、S。其中第 1、3 步显然可以并行处理,计算的主要复杂度集中在了第 2 步,第 2 步的并行化也就是实现 GN:0、PN:0 点运算分解的并行化。

三、加法器的优化设计

逻辑改造后,电路也应该相应地进行优化设计,因为如果用普通的门电路来实现相关逻辑,晶体管数目(面积)会增加;另外在电路级也可以采用减少节点翻转和寄生电容的方法来降低功耗。

加法器的原理、类型与优化设计

图 2 两种同或门版图对比

相关逻辑中多处要用到同或门,设计中采用基于旁路的静态逻辑实现产生同或门的电路(图 2)。旁路逻辑通过由附加管形成的旁路,可以把“串并交错”的电路结构简化为单一的串或者并的形式,其电路和版图都有很好的规整性,并且可以减小寄生电容:图 2 是两种同或门版图不同部分的比较,(b)是基于旁路逻辑实现的,与(a)相比少了一条金属连线和两个金属接触,使版图变得十分规整、扩散区不会被隔断。

在拓扑上,两条分支用公共的漏区,达到最少的接触孔和金属互连,比“串并”和“并串”的晶体管配置方式规整,且寄生电容小。旁路逻辑不能实现传输门,因而不能用传输门实现同或和异或,但容易证明三态门在速度和功耗方面都比传输门优越。参照传输门的结合方式,用两个三态反相器和一个反相器实现了同或门,实现了相应括号内的两个同或逻辑,平均只需要 1 级门延时,而用普通门实现的“与非或与非”形式的同或门需要 2 级或 3 级门延时。由上述同或门设计得到启发,根据形如相应形式的逻辑,设计了一个 10 管单元 uTIandor2。

该单元电路只需把括号部分从 CK 和 CKN 输入,输出就相应得到了 s0~s3。仅当 CKN 为特定电平时,电路两边均是三态反相器,构成图 2(b)的同或门,两个反相器交替导通,s = c0⊙CK;当 CKN = CK 时(发生几率比较大),左边 P 管和右边 N 管,或者左边 N 管和右边 P 管交替导通,输出 s = CK,从而屏蔽了 c0 的变化。考察第一组 4 位 CLA 中的进位产生逻辑最复杂的 s3:当 g2、g1、g0 均为 0,p2、p1、p0 均为 1 时,s3 = gs3⊙c0,这是一种特殊情况,即低位各位都不产生进位但可以传递进位时,直接把 c0 传至高位与 gs 同或即可产生和。c0 在各位和生成逻辑的最后一级才加入,可以消除过早加入带来的不必要的翻转;左右两块交替导通,只存在下拉或上拉延时,具有类似动态电路延迟小的优点;整个单元仅用了 10 个晶体管,比常规门实现的积之和节省 8 个。

四、加法器的类型

全加器引入了进位值的输入,以计算较大的数;为区分全加器的两个进位线,在输入端的记作 Ci 或 Cin,在输出端的则记作 Co 或 Cout。半加器简写为 H.A.,全加器简写为 F.A.。

半加器:有两个二进制输入,将输入的值相加,并输出结果到和(Sum)和进位(Carry)。半加器虽能产生进位值,但半加器本身并不能处理进位值。

全加器:有三个二进制输入,其中一个是进位值的输入,所以全加器可以处理进位值。全加器可以用两个半加器组合而成。

相关文章

压敏电阻的参数、特性与应用
基于 STC12C 与 SIM300 的智能家电防盗系统电路设计
基于 nRF24L01 与 DHT11 的无线温湿度测试系统电路设计
电冰箱电子温控器的原理与半自动除霜电路
基于 586-Engine 的无人机飞行控制器电路设计
三极管开关电路的改进接法:加速电容、图腾柱与驱动电路

发布评论