首页天道酬勤三位加法器,加法器设计

三位加法器,加法器设计

张世龙 05-12 22:45 71次浏览

1、半加成

半加由“异或”门和“与”门组成,“异或”门赋值,记录与门的记录是否发生进位。 但是,半加法器不能完成加法运算。

需要完成加法运算,需要全加法器

2、全加法器

全加法器由两个半加法器构成,绿色的是一个半加法器,橙色的是另一个半加法器。 三个输入,两个输出。

两个输出表明,与他能表达的范围为0、1、2、3对应的二进制是表的Cout和s

例如在进行111运算的情况下

首先看看s的输出:

A端输入1,B端输入1,C端输入0(最低位加法运算默认为0),1(A)异或1(B) 结果为0(记为D)0(D)+0(Cin)结果是0,所以绿色的异或门输出(S)为0,说明该位的运算结果为0。

看看Cout (进位)的输出。

1(A)与1(B) 结果为1,说明产生了进位,橙色的与门输出1。由S的输出过程可得绿色的与门的输入为0,0,绿色的与门输出为0,这个时候需要一个或门即可判断两次加法(A+B和B+Cin)是否产生了进位,只要其中一个产生的进位,Cout置1。

运算结果:

连接Cout和s的话,是10,也就是2。

减法实现:减法其实是指加法A-B可以用补数表示 A+ (-B)这个-B。

如上图所示,sub-mode负责加减运算的选择,与最低位的Cin侧连接。

在相加情况下,如果sub-mode为0,则直接进行相加

减法运算时,sub-mode为1,最低位的数字CIN(c0侧)设定为1,同时控制电路对b的各位为输入数字进行反转处理,从而完成(-B )补数的“逐位反转,最后一位加1”操作然后加起来就可以了

3、行波进位加法器行波进位加法器由n个全加法器构成,可以运算n位的加法。

例如计算: 1101 0110。 将每个低位的Cout (进位输出)设为与高位对应的Cin (进位输入)。

这里,Cout的最高有效位为1,但当假设当前寄存器的位数为4位时,发生溢出。

溢出与进位差异:溢出:表示数据超出正常显示范围,采用浮点显示可分为上溢出和下溢出。

进位: n进制位这是所有的n进制

请注意,溢出和进位没有直接关系。溢出的发生只在有符号位时发生也就是说,如果您的机器数量有符号,可能会发生溢出。

判断溢出的方法: 1、如果最高位的数值和符号位都发生进位,或者发生都不产生进位,则不存在溢出。 最高位的数值和符号位的一方发生进位,另一方没有进位的话就发生溢出。 计算机实现用异或电路

例如,1,110,100-10011 (舍去最高位),最终结果为0,011,不发生进位

如果采用2、2位表示,原理和方法1一样,为了记录原来的1位代码位和最高数值位的进位情况,将采用2位代码位,不再需要使用异或电路。 如果编码比特为00或11则不溢出,如果为01则为正的溢出,如果为10则为负的溢出,如果为01则为正的编码比特为正,如果为10则为负的溢出,在此情况下,真的符号为负

行波进位加法器的运算过程:在进行加法运算时,首先准备的是(从右向左依次为1、2、3、4号) 1号全加法器的3个input。 另一方面,第2、3、4个全加法器的Cin都来自前一个全加法器的Cout,直到第1个全加法器的运算结束,第2、3、4个全加法器依次进行进位运算,最终得不到结果。 这种进位输出,像波浪一样,是从低到高依次传递并最终产生结果的加法器,因此也被称为http://www.Sina.com/(ripple-carry adder,RCA )。

RCA的优点是电路行波进位加法器,我们只要设计全加法器,连接就可以构成多位加法器。 但缺点也很明显,为布局简单,设计方便,增加了加法器整体的延迟时间。 那么,RCA的效率如何呢? 让我们计算一下:

打开所有4bit的RCA内部结构后,可以得到如图2所示的4-bit RCA的栅极电路图。 分析一个电路的性能,必须找到其中最长的路径。 也就是说,在从输入到输出的所有电路连接中,找出所经由的门数量最多的电路连接也称为关键路径(参照下图)。

判断延迟的两个指标是: (1)门延迟通过各门实际上是高位的运算必须等待低位的运算完成

)线间延迟输入信号进入该电路后,在连接线上传输需要时间。门延迟

http://www.Sina.com/http://www.Sina.com /

.从第一个全加法器的A-S这一路径来看,要产生第一个s输出,需要通过两个门的延迟。 所以显然不是最长的路径。 当然,从a开始

出发或着从B出发都是一样的, 所以对于第一个全加器,它的最长路径,是红色线标记的那条,后面的全加器关键路径同理可得。

那么,假设经过一个门电路的延迟时间为T,那么经过4个全加器所需要的总延迟时间就是:2T x 4 + T(第一个全加器产生3个T) = 9T。所以推出,经过n个全加器所产生的总延迟时间为2T x n + T = (2n+1)T。

对于一个32bit的RCA,有总延迟时间:(2n+1)T =(2×32+1)×T =65T,这是什么概念呢?举个例子,iPhone 5s的A7 SoC处理器采用28nm制造工艺,主频1.3GHz(0.66ns  CPU时钟周期中每两个上沿所隔的时间)。按照这个工艺水平,门延迟T设为0.02ns,那么32-bit RCA的延迟时间为1.3ns ,时钟频率为769MHz,远超A7处理器的主频延迟时间,更别说这个32bit的RCA只是一个加法运算器,更更别说,我们在计算过程中只考虑了门延迟,还有线延迟等各种延迟没有加入计算……

 

4、超前进位加法器

从上面可以看到,影响行波进位加法器(RCA)运算效率的主要因素是高位的运算必须等待低位的“进位输出信号”,那我们的优化思路就是‘能否提前计算出“进位输出信号’ ?”

答案是有的,如图所示。

全加器有三个输入,当其中的两个为1时,必定产生进位。这样就有了如下的公式:

Ai Bi Ci 分别是全加器的三个输入,Ci+1为进位输出 Ci为进位输入。

如果是最低位,则Ci=C0,C0根据加法或是减法置为0或者1。

简化公式得:

如果表示4个全加器的进位输入输出:

可以得到由每个低位全加器的进位输出得到每个高位全加器的进位输入。

最终我们需要得到的是C4,经过换算,C4=G3+P3·G2+P3·P2·G1+P3·P2·P1·G0+P3·P2·P1·P0·C0,而这些参数,全部已知!并不需要前一个全加器运算输出,由此我们得到了提前计算进位输出的方法, 用这样的方法实现了加法器就被称为超前进位加法器(Carry-Lookahead Adder,CLA)。

这样就实现了提前获得进位输入的能力,这样就大大提高了加法运算的效率。但有得必有失,这样的代价是电路比较复杂。

 

超前进位加法器的实现

C4的结果由或门实现,把每个多项式进行求和,乘用与门实现。

延迟分析

使用CLA来进行加法运算的效率如何呢?还是按照Apple A7处理器的工艺水平,单个CLA的延迟为0.08ns,4级CLA的延迟为0.26ns,时钟频率3.84GHz,都远远小于主频的延迟,完全符合标准。然而,由图可见,计算4bit的二进制数,就要平行排列4个全加器,那么要是计算8bit,16bit,32bit……的呢?可能就需要更复杂的布线方式,这就是CLA的缺点。

比较一下RCA和CLA的优缺点:

 行波进位加法器(RCA)超前进位加法器(LCA)结构特点低位全加器的Cout连接到高一位全加器Cin每个全加器的进位输入并不来自于前一级的全加器,而是来自超前进位的逻辑电路优点电路布局简单,设计方便计算Ci+1的延迟时间固定为三级门延迟,与加法器的位数无关缺点高位的运算必须等待低位的运算完成,延迟时间长如果进一步拓宽加法器的位数,则电路变得非常复杂

 

 

 

 

 

 

 

32位的加法器如果采用行波进位的方式,我们已经分析过需要65级的门延迟, 那如果采用超前进位的方式,理想情况下也只需要四级的门延迟,但可惜的是, 这也只是一个理想。因为要实现32位的完全的超前进位,电路就会变得非常的复杂。 因此通常的实现方法, 是采用多个小规模的超前进位加法器拼接而成一个较大的加法器,例如,用4个8-bit的超前进位加法器连接成32-bit加法器。

 

 

 

加法器设计实验报告,16位快速加法器原理 74283加法器原理,我的生物黑科技顶点小说