运算器设计

上传人:jiups****uk12 文档编号:55463434 上传时间:2018-09-30 格式:PPT 页数:37 大小:1.72MB
返回 下载 相关 举报
运算器设计_第1页
第1页 / 共37页
运算器设计_第2页
第2页 / 共37页
运算器设计_第3页
第3页 / 共37页
运算器设计_第4页
第4页 / 共37页
运算器设计_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《运算器设计》由会员分享,可在线阅读,更多相关《运算器设计(37页珍藏版)》请在金锄头文库上搜索。

1、第二部分 运算器设计,数据解算,数据存贮,通信 接口,系统管理和控制,运算电路包括加法、减法、乘法、除法运算,按数据宽度可以有4bit、8bit、16bit、32bit、64bit等,有整数运算也有浮点数运算。 掌握以下三种运算模块:,一、加法器电路设计二、平行乘法器设计三、Booth编码乘法器设计,A、B : 加数 input Cin : 进位 inputSum : 和数 outputCout: 进位 output,Sum=ABCin Cout=AB+Cin(A+B),I/O口描述,逻辑描述,Verilog描述(数据流描述),module fulladd(A,B,Cin,Cout,Sum)

2、input A,B,Cin; output Cout,Sum;assign Sum=ABCin; assign Cout=(A&B)|(A&Cin)|(B&Cin) endmodule,一、加法器电路设计,bit 全加器,电路描述,Ai,Bi,Cin,Ci,Sout,电路网表,Sum,+,Ai,Bi,Sout,Cin,Cout,Symbol,给出结构化erilog描述?,bit 全加器,1、串行加法器实现(4bit),+,+,+,+,A0,B0,A1,B1,A2,B2,A3,B3,Sum3,Sum2,Sum1,Sum0,Cin,C1,C2,C3,Cout(C4),分析:用同样的结构可以扩展到8

3、bit、16bit、32bit等。 但此电路的最大的约束在于进位的传递。,module add4_serial(a,b,cin,sum,cout); input3:0 a,b; input cin; output3:0 sum; output cout; wire c1,c2,c3; / 中间传递进位,定义为wire型/下面是四个模块实例语句 fulladd add1(.a(a0,.b(b0,.cin(cin),.cout(c1),.sum(sum0);add2(.a(a1,.b(b1,.cin(c1),.cout(c2),.sum(sum1);add3(.a(a2,.b(b2,.cin(c2

4、),.cout(c3),.sum(sum2);add4(.a(a3,.b(b3,.cin(c3),.cout(cout),.sum(sum3); endmodule,Verilog描述,2、超前进位链加法器S=ABCi-1 Cout=AB+Ci-1(A+B) 令Gi=AiBi, 进位产生信号 ,则 Cout=Gi+Pi Ci-1Pi=Ai+Bi 进位传输信号四位全加器的进位链逻辑可以表示为如下(进位直接由输入信号经过逻辑运算得到)C1=G0+P0C0C2=G1+P1G0+P1P0C0C3=G2+P2G1+P2P1G0+P2P1P0C0C4=G3+P3G2+P3P2G1+P3P2P1G0+P3P

5、2P1P0C0我们可以改写为(这样实现电路性能更加优化):C1=G0(P0+C0)C2=G1(P1+G0)(P1+P0+C0)C3=G2(P2+G1)(P2+P1+G0)(P2+P1+P0+C0)C4=G3(P3+G2)(P3+P2+G1)(P3+P2+G1)(P3+P2+P1+G0)(P3+P2+P1+P0+C0),module add4_exceed(a,b,cin,sum,cout); input3:0 a,b; input cin; output3:0 sum; output cout; wire c1,c2,c3; / 中间传递进位,定义为wire型 wire3:0 g,p; / 进

6、位产生和传递信号assign g=aendmodule,超前进位链的Verilog描述,实现的逻辑电路如下,电路网表实现如下,An,Bn,Pn,Gn,C0,C1,C2,C3,C4,P1,G1,P2,G2,P3,G3,P4,G4,如果不展开而用CMOS电路则面积更省,电路如下,CK,C0,P1,G1,CK,C1,CK,CK,C0,P1,G1,P2,G2,C2,CK,CK,CK,CK,C0,C0,P1,P1,P2,P2,G1,G1,G2,G2,G3,P3,P3,G3,G4,P4,C3,C4,3、Manchester进位链全加器(了解)用pass transistor作为进位传送,用domino(多

7、米诺)实现进位产生,这样电路更简单,而且版图 实现更加规则。Pi=Ai Bi, 进位传输信号Gi=AiBi , 进位产生信号1bit 的进位信号处理电路如右,,当Ai和Bi中有一个是“1”,另一个是“0”,此 Pi=1; Gi=0 ,Cout=Cin。 当Ai=Bi=1时,Pi=0,Gi=1,Cout=0,有进位。 当Ai=Bi=0时,Pi=0,Gi=0,Cout=1,无进位。,Cin,Cout,P,G,CLOCK,CK,CK,G0,G1,G2,G3,P0,P1,P2,P3,C4,4bit Manchester进位链电路图,C0,C1,C2,C3,C4,Manchester进位链Symbol,

8、C0,G0,P0,G1,P1,G2,P2,G3,P3,C4,Ai,Bi,Gi,Pi,Si,Pi,Ci-1,和输出电路,Gi、Pi产生电路,GP,GP,GP,GP,M 进 位 链,SUM,SUM,SUM,SUM,A0,B0,A1,B1,A2,B2,A3,B3,S0,S1,S2,S3,C0,C4,采用Manchester进位链结构的 加法器总体结构框图,乘法器简介在数字电路中,nn位的乘法器采用交叉相乘,部分积相加的方式完成乘法运算。图2.27的上半部分给出了对称6位乘法器的算术计算过程,下半部分表示对应6位阵列乘法器中的最后全加器结构。ASIC乘法阵列中每一个位乘积项采用如下逻辑表达式实现:Ai

9、Bj=(Ai+Bj)每一个输入位信号先经过反相器后,在同另一位经2输入或非门输出得到位乘积。即图2.27上半部分中的AiBj乘积项。对于66的阵列乘法器,前级的位乘法器需要26个输入反相器和62个2输入或非门组成。,将逐位相乘得到的部分积作为求和电路中加法器的输入数据进行求和,得到最终乘积。部分积的求和电路,一般采用全加器阵列实现。由于最低位全加器没有低位数相加,所以可以去除a0-f0一行加法器;最高位(左边)的一列全加器也没有低位数相加,a1-f1也可以去掉。留下56个全加器组成不对称的CSA阵列(包括一个半加器)。对于nn位的乘法器,可以采用不同的优化方式,提高运算速度或简化电路。具体方法

10、较多,除书中介绍的内容外,还可以参考有关的资料书籍。,二、平行乘法器 乘法运算是数字系统中的核心部件,在不同的应用系统中有各种不同结构的乘法器 N位乘以N位可以用移位加的方法实现,这样完成一次乘法需要完成N次加法,因此如果N比较大,即位数比较多时,运算速度会下降。,P7P6P5P4P3P2P1P0=(a3a2a1a0)*(b3b2b1b0),平行乘法器的基本结构以4bit为例,aibi 代表ai和bi的与项,每个与项代表一个节点,每个节点由1位全加器构成,则左边的4bit乘法运算产生16个节点,由16个全加器构成。,表示进位方向,表示和数方向,bi,Cin,Sum out,ai,Sum in,

11、每个节点的运算电路,Cout,+,其中表示1bit全加器,a3,a2,a1,a0,b0,b1,b2,b3,P7,P6,P5,P4,P3,P2,P1,P0,0,0,0,0,0,0,0,0,运算一次加法所需时间是2N个全加器加法延迟,具有流水线功能的加法器,一级流水线,三、boot编码乘法器,Booth算法(布斯算法),一个比较推荐的带符号乘法算法. 无符号数-逻辑移位 有符号数-算术移位 而booth算法里面的移位则是算术移位 Booth算法和一般按照普通乘法运算在于算部分积那一块.Booth算法的乘法器仅仅是对乘数的位重新编码以减少乘法运算周期所需要的加法运算次数.且用补码形式表示正数和负数,

12、所以不像一般讨论的那样要讨论负数运算.所以,Booth算法实现的乘法可以直接用于两个补码数相乘.,Booth编码方法 设y=y0,yly2yn为被乘数,x为乘数,yi是a中的第i位(当前位).操作的方式取决于表达式(yi+1-yi)的值, 这个表达式的值所代表的操作为: 0 无操作 +1 加x -1 减x,”比特对编码”.只不过一次对乘数检测三个位,并生成一个两位代码来决定操作方式 1)被乘数相加, 2)移一位后相加/相减再移位 3)仅仅移位运算,平行乘法器每一位就产生一个部分积,而采用改进型的Booth算法则能保证使部分积 的数目减少一半。如 X * Y , X,Y 都是用补码的形式表示。P

13、Pi为部分积,Yi+1 Yi Yi-1 PPi,0 0 0 +0,0 0 1 +X,0 1 0 +X,0 1 1 +2X,1 0 0 -2X,1 0 1 -X,1 1 0 -X,1 1 1 -0,改进型Booth算法规则,如 X * 1 1 1 1 03X=4X-X, 故 -X1 1 + 1= 2X+X+X-4X =0 , 故 0 即: X * (-1) = - X 如 X * 0 1 1 0 02X=4X-2X, 故 -2X0 1 + 1= 0+X+X =2X , 故 +2X 即: X * (6) = 6 X=8X-2X,上面的PPi=(Yi-1+Yi 2Yi+1) X 就是最小乘积项,采用

14、改进型Booth算法的8位乘法器1、产生 部分积我们先把乘数Y的LSB扩充一位Y-1=0。然后按下图分成相互重叠的四组,每组考察三位,Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0,Y-1,A+Y1,B+Y3,C+Y5,D+Y7,从前面的分析我们知道,部分积有以下几种可能 0 0 X 本身 -X X取反加1 2X X左移一位 -2X 2X取反加1 在得到部分积PPi时,我们为了方便PPi的得到,把加1运算放在加法阵列里完成。,A: 100 “-2X”, 2X取反加1 B: 101 “-X” , X取反加1 C: 011 “+2X” , 左移X一位 D: 110 “-X” , X取反加1,如X=01101001, Y=11011010 , R=XY=105 * (-38) = - 3990,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号