怎么设计一个32位超前进位加法器?.docx
《怎么设计一个32位超前进位加法器?.docx》由会员分享,可在线阅读,更多相关《怎么设计一个32位超前进位加法器?.docx(17页珍藏版)》请在第一文库网上搜索。
1、怎么设计一个32位超前进位加法器?最近在做基于MIPS指令集的单周期CPU设计,其中的A1U模块需要用到加法器,但我们知道普通的加法器是串行执行的,也就是高位的运算要依赖低位的进位,所以当输入数据的位数较多时,会造成很大的延迟,影响整个CP1J的性能,为了减小这种延迟,遂采用超前进位加法器(也叫先行进位加法器),下面来介绍一下设计的原理:设二进制加法器第i位为晅,Bi,输出为Si,进位输入为Ci,进位输出为C(i+1),则有:Si=AiBiCi(1-1)C(i+1)=Ai*Bi+Ai*Ci+Bi*Ci=Ai*Bi+(Ai+Bi)*Ci(1-2)令Gi=Ai*Bi,Pi=Ai+Bi,贝J:C(i
2、+1)=Gi+Pi*Ci当Ai和Bi都为1时,Gi=1,产生进位C(i+1)=1;当Ai和Bi有一个为1时,Pi=1,传递进位C(i+D=Ci;(说明:“*”表示与逻辑、表示或逻辑、“”表示异或逻辑)因此Gi定义为进位产生信号,Pi定义为进位传递信号。Gi的优先级比Pi高,也就是说:当Gi=1时(当然此时也有Pi=1),无条件产生进位,而不管Ci是多少;当Gi=O而Pi=1时,进位输出为Ci,跟Ci之前的逻辑有关.第一步:设计4位超前进位加法器(至于为什么要先设计4位的,后面有详解)举例:设4位加数和被加数为A和B,进位输入为C_in,进位输出为C_out,对于第i位的进位产生Gi=Ai*Bi
3、,进位传递Pi=Ai+Bi,i=0,1,2,3O于是各级进位输出,递归的展开Ci,有:CO=C_inC1=GO+P0*C0C2=G1+P1*C1=G1+P1*GO+P1*PO*C0C3=G2P2*C2=G2+P2*G1+P2*P1*GO+P2*P1*P0*C0C4=G3P3*C3=G3+P3*G2+P3*P2*G1+P3*P2*P1*GO+P3*P2*P1*P0*C0(1-3)C_out=C4由此可以看出,各级的进位彼此独立,只与输入数据Ai、Bi和C_in有关,而且并行产生,不就达到了设计目的一一将各级间的进位级联传播给去掉了,减小了串行进位产生的延迟。实现上述逻辑表达式(1-3)的电路称为
4、超前进位部件(Carry1ookaheadUnit),也称为C1A部件。通过这种进位方式实现的加法器称为超前进位加法器。因为各个进位是并行产生的,所以是一种并行进位加法器。4位C1A部件电路如图1所示:图1:4位C1A超前部件电路(可能有人就想到,如果要设计32位超前进位加法器,是不是可以按照同样的方法直接推导到C32,就可以一次性并行产生所有位的进位。但是,我们想想,根据表达式,进位越往后,比如C5、C6C31C32,表达式会越来越复杂,这是因为增加了逻辑门的输入端个数,将会使得电路中需要具有大驱动信号和大扇入门,这会大大增加门的延迟,起不到提高电路性能的作用,这种方法叫做全先行进位,而当位
5、数较多时,很显然这种方式并不现实,因此更多位数的加法器可通过4位C1A部件和4位超前进位加法器来实现,后面再细说)*4位超前部件完成了,现在来完成4位超前进位加法器:首先每一位都会产生进位传递信号和进位产生信号,然后将四位数据分别产生的进位传递信号和进位产生信号送到4位C1A部件,供C1A并行产生每一位的进位信号Ci,然后再送回给每一位的低进位(C_in),就完成了4位超前进位加法器,听不懂,没关系,看下图:AiBi图2:1位加法器图3:4位超前进位加法器说明:1位加法器如图2所示,输入有A、B两个加数,还有来自低位的进位C_in,输出有得到的和Si,还有进位产生信号Gi和进位传递信号Pi,之
6、所以引出这两个信号,是为了为后面的4位超前进位加法器做铺垫,有人可能奇怪为什么没有向高位的进位位,这是因为每一位的进位位是由C1A部件产生的,我们用四个如图2所示的1位加法器和一个如图1所示的4位超前进位部件,就组成了图3所示的4位超前进位加法器,至此我们也就完成了4位超前进位加法器的设计。那么,问题来了,4位超前进位加法器和我们最初要设计的32位超前进位加法器有什么联系呢?有经验的朋友很快就能反应过来,是不是可以用八组4位超前进位加法器级联起来,完成32位的设计,但是,如果仅仅按照普通的级联,也就是将八组4位超前进位加法器串联起来,整个设计相当于组内超前进位,组间串行进位,这种方法是可行的,
7、但不是我们的目的,因为它还是会影响整个系统的性能,为了达到最优的设计方法,我们采用组内超前进位,组间也是超前进位的方法进行设计,这种方法叫做两级或多级先行进位加法器。问题又来了,采用组内和组间都是超前进位的方式,到底该怎么设计呢?其实我们可以类比4位加法器的设计,为了完成4位的超前进位加法器,我们把1位加法器引出了它的进位产生信号Gi和进位传递信号Pi,供4位C1A使用,那么我们是否可以把4位超前进位加法器的进位产生信号Gm和进位传递信号Pm也引出来,然后用四组4位超前进位加法器和一个4位C1A完成16位超前进位加法器的设计呢,答案当然是可以的。首先,我们对图3所示的4位超前进位加法器进行封装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 怎么 设计 一个 32 超前 进位 加法器