专用集成电路设计授课教师:张立文电子信息工程学院河南科技大学2009-10-3022020/2/3第五章数字集成电路系统设计5.1二进制加法器(Adder)主要内容:1、一位加法器——半加器(HalfAdder)与全加器(FullAdder)2、n位并行加法器3、浮点数加法器(FloatingPointAdder)32020/2/3定义:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。5.1.1一位加法器——半加器(HalfAdder)与全加器(FullAdder)1、半加器如在第i位的两个加数Ai和Bi相加,它除产生本位和数Si之外,还有一个向高位的进位数Ci。因此,半加器输入信号:加数Ai,被加数Bi;输出信号:本位和Sumi,向高位的进位Ci。42020/2/3根据二进制的运算规则(逢二进一),两个一位二进制数相加的真值表如表5-1所列。表5-1一位半加器真值表根据该真值表,可以得到一位半加器的逻辑运算表达式:Sum=AXORB=A+BCarry=AANDB=AB半加器真值表及逻辑运算表达式:52020/2/3半加器逻辑电路及CMOS实现图:CAAV1V2V5V6V3V4BUDDGNDBAFSumABCSum半加器逻辑电路图半加器CMOS实现图Sum=AXORB=A+BCarry=AANDB=AB62020/2/3定义:不仅考虑两个一位二进制数相加,而且还考虑来自低位进位数相加的运算电路,称为全加器。2、全加器因此,在第i位二进制数相加时,输入信号:加数Ai、被加数Bi、来自低位的进位Cini-1;输出信号:本位和Sumi,向高位的进位Couti。表5-2一位全加器真值表72020/2/382020/2/3全加器的逻辑运算表达式Sum和Cout的卡诺图,分别如下图a、b所示。ABCinCABABCCBABCACCBACABCBAABCSininininoutininininumSumABCinCout一位全加器的逻辑运算表达式为:ininBCACAB92020/2/3一位全加器实现方案--1ininininumCBACABCBAABCSB)(ACABBCACABCinininout确定逻辑结构:inoutumABCCC)BAS(B)(ACABCinoutABCinOR2AND2OR3AND3AND2AND2NOR2NOR2INVINVCarrySum102020/2/3一位全加器实现方案--2逻辑变换和化简:Cout112020/2/3CoutiSumiCout一位全加器实现方案--2122020/2/3一位全加器实现方案--3ABB)CACABABCCBABCACCBACBACABCBAABCSinininininoutinininininum(iiiCBACBACBAS)()(BABABACiCoBACiS(a)(b)213456CoSiiiCBACBACBAS)()(BABABACiCoBACiS(a)(b)213456CoS10BABA;3、5导通;4、6导通图4-37全加器电路132020/2/31)、根据真值表写出逻辑表达式;2)、进行适当的逻辑变换和化简;3)、确定电路的逻辑图和具体实现的电路。一般组合逻辑电路的设计流程:142020/2/35.1.2n位并行加法器几个概念:n位并行加法器由n个一位全加器相互连接构成,其连接方式决定了该加法器的电路复杂程度和运算速度。所谓并行相加,是指n位被加数中的每一位与n位加数中的各个对应位同时相加。所谓行波进位又叫串行进位,是指其相加的进位是逐级形的,每一级进位直接依赖前一级进位。所谓并行进位,是指同时形成其各级进位信号。152020/2/3设两个n位操作数为:A=An-1An-2...A1A0,B=Bn-1Bn-2...B1B01.行波(串行)进位加法器(RippleCarryAdder)将n个一位全加器以下图所示形式连接在一起(最低位可使用一位半加器),就构成了一个n位行波进位加法器。图5-2n位行波进位加法器SumBCarryC_INC0A0B0C1SumBCarryC_INA1B1C2Sum0Sum1SumBCarryC_INA2B2C3Sum2…SumBCarryC_INA(N-2)B(N-2)Sum(N-2)C(N-2)C(N-1)SumBCarryC_INA(N-1)B(N-1)Sum(N-1)CN该加法器每一位的进位输入均由相邻的低位送来,在最高位(n-1)得到最后的进位输出Cout,输出的和(Sum)则从各个相应位取得。162020/2/3行波(串行)进位加法器的优缺点:优点:电路简单、IC版图易于设计和实现。缺点:电路延迟时间长,运算速度慢。这是因为每一位相加时必须等待低一位的进位结果,最高位完成相加必须等到其他所有位相加完毕后才能进行。假设一位全加器的延迟时间为Tc,则整个n位并行器的总延迟时间就为nTc。尤其是在n值比较大的时候,延迟更大。n位并行加法器适用于相加位数较少或对运算速度要求不高的情况。172020/2/3选择进位加法器:将需要相加的n位二进制数分成具有相同位数(p位)的m组,每组的相加电路由两个p位的行波进位加法器和一个多路数据选择器(MUX)构成。2.选择进位加法器(CarrySelectAdder)工作原理:利用二进制加法特点,进位为逻辑1,或者为逻辑0,二者必居其一。对除去包含最低位计算的加法结构复制成两组,其进位输入分别预定为逻辑1和逻辑0,于是M块加法器可以同时并行进行各自的加法运算,然后根据各自相邻低位加法运算结果产生的进位输出,由多路数据选择器(MUX)选择正确的一组加法结果输出。借鉴并行计算的思想,人们提出了进位选择加法器结构。算法的实质是增加硬件面积换取速度性能的提高。182020/2/3图5-316位选择进位加法器行波进位加法器C15Cout1Cout210数据选择器行波进位加法器10数据选择器行波进位加法器10数据选择器行波进位加法器0S15S13S14S12S11S9S10S8S7S5S6S4S3S1S2S0Cout1Cout2Cout1Cout2各个分组的数据相加以并行的方式进行,不需等待下一组送来的进位。下一组的进位只用于控制多路数据选择器从两个加法器的“和”中选择一个作为最终输出。因此,其总的延迟时间为:Ta=p×Tc+TMUX+TselTc是一位全加器的进位延迟时间;TMUX是多路数据选择器的延迟时间;Tsel是多路数据选择器选择控制信号的生成延迟。1192020/2/3前面介绍的两种多位并行加法电路构成的基本单元都是行波进位加法器(串行),只不过依据结构的不同行波进位的位数有所不同而已。3.超前进位加法器(CarryLookaheadAdder)在进行计算时,前面两种电路所产生的最大延迟均为进位传递时间。为了进一步提高运算速度,关键在于解决进位传递时延较大的问题。为此设计了超前进位加法电路。所谓超前进位,是依据低位的加数和被加数的状态来判断本位是否有进位,而不必等待低位送来的实际进位信号,从而大大提高了多位加法的运算速度。202020/2/3假设有:被加数An-1An-2…A2A1A0、加数Bn-1Bn-2…B2B1B0相加,从各位产生进位信号分别是Cn-1Cn-2…C3C2C1C0,于是有:CBAS-1iiii(5-4a)-1iiiiiiCBABAC)((5-4b)超前进位加法器的构成原理是:定义两个辅助公式:Gi=AiBi(5-5a)Pi=Ai+Bi(5-5b)将以上两式代入式(5-4b)得Ci=AiBi+(Ai+Bi)Ci-1=Gi+Pi·Ci-1(5-6)212020/2/3Ci=AiBi+(Ai+Bi)Ci-1=Gi+Pi·Ci-1(5-6)-101230123123233-1012012122332333-1012012122-101011221222-101011-100110111CPPPPGPPPGPPGPG)CPPPGPPGP(GPGCPGCCPPPGPPGPG)CPPGPGPGPGCCPPGPG)CPGPGPGC((CC11imkkkPGGC(5-7)C0=G0+P0·C-1(C-1是加于最低位的进位输入信号)每一位的进位可以由本位以及比它低的各位加数、被加数和C-1的状态判定。222020/2/311imkkkPGGC(5-7)由上式可见:任意一位的Gi=AiBi=1时,无论其地位处以何种状态,都产生进位,因此将G称为进位信号产生函数。当本位的Pi=Ai+Bi=1时,低一位产生的进位信号才有可能传递上来参与生成Ci,则P称为进位信号传递函数。缺点:每一位进位信号都包括所与比它低的各个位的P和G函数,当参与运算的位数较多时,驱动负载会过重,则整个超前进位形成逻辑电路就会很复杂,难以实现。一般以4位为基础。优点:提高加法运算速度。232020/2/3图5-44位超前进位形成逻辑电路Cn3P3G2P2G1P1G0P0GCn+xCn+yCn+zGPC0C1C2C-1Co=GoPo+GoC-1=Go(Po+C-1)=Go+(Po+C-1)=Go+PoC-1G和P是超前进位扩展端:P=P1P2P3P4G=G3+P3G2+P3P2G1+P3P2P1G0242020/2/34位超前进位加法器电路:CoutD3D2D1D09101314B3A3B2A2B1A1B0A0Cin75632VCC-Pin16GND-Pin8141512114位超前进位逻辑电路全加器电路图5-5xX=(A+B)AB=(A+B)(A+B)=AB+AB=A+B=A+B=A+B+C252020/2/3超前进位形成逻辑可以递归使用,从而构成位数更高的加法器电路而不过多地增加电路的复杂程度。图5-6就是用此方法构成的16位超前进位加法器。图5-616位超前进位加法器电路4位加法器A12~15B12~15S12~154位加法器A8~11B8~11S8~114位加法器A4~7S4位加法器超前进位逻辑B4~7A0~3B0~3SGGPGCSGGPGC4~7S0~3G3P3C3G2P2C2G1P1C1G0P0GGPGC0SGGPGCSGGPGC262020/2/3在浮点数中,小数点的位置可以左右移动,其表示方法为N=M×RE(5-8)式中:M(Mantissa)——浮点数的尾数;R(Radix)——浮点数中阶的基数;E(Exponent)——浮点数中阶的阶码。5.1.3浮点数加法器(FloatingPointAdder)1.浮点数的表示方法计算机中规定,基数R一般为2、8或16,在实际应用中主要为2。由于R为固定值,所以不需要在浮点数中明确地表示出来。272020/2/3(1)给出尾数M,它通常使用定点小数形式表示,其位数决定了浮点数的精度。当M0.5,左右移动尾数并修改阶码。要表示浮点数,必须满足以下条件:(2)给出阶码E,它通常用整数形式表示,用以指示小数点在数据中的位置,其位数决定了浮点数的表示范围。浮点数的阶码一般采用整数形式的移码来表示,其定义为:[X]=2n+X(-2n≤X2n)移码具有如下性质:最高位为符号位,其取值与原码和补码相反,即1表示正数,0表示负数。对移码进行加/减运算完成后需要对所得结果加以修正,修正量为2n,即要对符号位的结果求反后才是移码形式的最终结果。282020/2/3(3)浮点数的符号位Ms,0表示正数,1表示负数。Ms(1bit)符号位Exponent(Mbit)阶码Mantissa(Nbit)尾数为了进一步统一浮点数的表示与运算方法,IEEE对浮点数的表示方法规定了一个标准的格式,如下表5-3所列。浮点数的格式如下:292020/2/3由上述运算规则得出浮点数的加减运算步骤如下:(1)阶码相减(ES):计算两个数阶码之