版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1ALU设计简介及源代码行波进位加法器gi=ai
·
bi
(0≤i≤n-1)
pi=ai
bi
(0≤i≤n-1)
ci+1=gi
+
pi
·ci
(0≤i≤n-1)
si=ai
bi
ci=pi
ci
(0≤i≤n-1)第2页/共39页第1页/共39页ALU设计—gipi生成S3S2S1S0MC0100110011011第3页/共39页第2页/共39页ALU设计—gipi生成逻辑M第4页/共39页第3页/共39页采用行波进位的ALU逻辑第5页/共39页第4页/共39页无符号数除法算法-不恢复余数除法举例A=14=1110除B=001100000111000001110左移一位
-00011减(B)─────────111101100P是负的,商“0”11101100左移一位
+00011加(B)─────────000001001P是非负的,商“1”00001001左移一位
-00011减(B)─────────111100010P是负的,商“0”11100010左移一位
+00011加(B)─────────111110100P是负的,商“0”+00011余数是负的,作最后恢复─────────
00010商是0100,余数是0010Pnan-1……a0加法器bn-1……b00P:余数寄存器a:被除数寄存器(有左移位功能)b:除数寄存器第6页/共39页第5页/共39页无符号数除法算法-不恢复余数除法举例A=-7=11001除B=-3=11101|B|=001100000011100000111左移一位
+11101加(B)─────────111011110P是负的,商“0”11011110左移一位
-11101减(B)─────────111101100P是负的,商“0”11101100左移一位
+11101加(B)─────────111101000P是负的,商“0”11101010左移一位
-11101减(B)─────────111110100P是负的,商“0”+00011余数是负的,作最后恢复─────────
00010商是0100,余数是0010Pnan-1……a0加法器bn-1……b00P:余数寄存器a:被除数寄存器(有左移位功能)b:除数寄存器第7页/共39页第6页/共39页借助ALU实现除法运算ALUSRdstsrc1src2左移一位SignA总线B总线C总线S[3:0]MC0第8页/共39页第7页/共39页无符号数除法计算过程无符号整数除法占用35个时钟周期。第一个周期完成被除数初始化操作:
dst←0
同时为了与有符号整数除法一致,在A、B总线上要分别读出src1和src2/lit的值。第二个周期将被除数送到移位寄存器SR中:
SR←(src1)中间32个周期完成下列重复动作:
dst←21·(dst)&(SR)-(-1)sign(dst)(src2)│litSR←21·(SR)&!sign(dst),上商当前余数(在dst寄存器中)左移1位时最低位移入SR的最高位。上商规则是本次计算结果为正则商1,否则商0。最后一个周期将商从SR送到dst中。第9页/共39页第8页/共39页有符号数除法计算过程对有符号整数,将符号数转换为无符号数再按无符号数方法计算。第一步:目的寄存器送全“0”,同时记录src1和src2的符号,
dst←0,判(src1)、(src2)│lit的符号第二步:将被除数src1送SR寄存器。若被除数为负,将其求补后再送SR寄存器。第3~34步:重复执行如下操作:
dst←21·((dst)&(SR))+(-1)sign(dst)·(-1)sign((src2)│lit)·((src2)│lit)SR←21·(SR),上商上商的规则与无符号数除法相同。第35步:送结果到目的寄存器。若结果为负则求补后再送目的寄存器。
dst←(-1)sign((src2)│lit)^sign(src1)·(SR)(通过减法或传送实现)第10页/共39页第9页/共39页ALU--HDL实现modulealu_core(opA,opB,S,Cin,M,DO,C,N,Z,V);inputwire[32:0]opA,opB;inputwire[3:0]S;inputwireM,Cin;outputreg[31:0]DO; outputregC,V,N,Z;reg[32:0]LT3,LT2,LT1,LT0,P,G;reg[32:0]Dout;integeri;reg[32:0]zero;reg[33:0]CA;always@(opAoropBorS)for(i=0;i<33;i=i+1)beginLT3[i]=S[3]&opA[i]&opB[i]; LT2[i]=S[2]&opA[i]&~opB[i];LT1[i]=S[1]&~opA[i]&opB[i];LT0[i]=S[0]&~opA[i]&~opB[i];end
always@(LT3orLT2orLT1orLT0orM)for(i=0;i<33;i=i+1)beginP[i]=~(LT3[i]|LT2[i]|LT1[i]|LT0[i]);G[i]=LT3[i]|LT2[i]|~M;endalways@(PorGorCin)beginCA[0]=Cin; //CA[i]:carrytoibitfor(i=0;i<33;i=i+1) beginCA[i+1]=G[i]|(P[i]&CA[i]);Dout[i]=P[i]^CA[i];end{C,DO}=Dout;V=Dout[32]^Dout[31];if(DO)Z=0;elseZ=1;N=DO[31]; endendmodule第11页/共39页第10页/共39页定点乘法器设计第12页/共39页第11页/共39页定点乘法器设计乘法器是高性能微处理器中的关键部件,是进行高速计算特别是信号处理等方面应用时所必须的。定点乘法器应支持有符号数和无符号数乘法。本章主要介绍32位定点乘法器设计方法:假定:
被乘数:A=an-1an-2
…a0
乘数:B=bn-1bn-2…b0
乘积:P=AB第13页/共39页第12页/共39页乘法计算方法用笔算进行乘法计算的方法为:01011010000001010000010100110010乘积部分积乘数被乘数术语乘法计算过程产生部分积部分积相加第14页/共39页第13页/共39页乘法运算的关键要提高乘法计算速度,需要:加快部分积的形成减少部分积数目采用多位扫描、跳过连续的0/1串和对乘数重编码(如Booth算法)等处理方法加快部分积加法运算的速度一般是利用进位保留加法器(CSA)先使参与操作的部分积形成两个数(这两个数分别是伪和与局部进位)第15页/共39页第14页/共39页二阶Booth算法0011000100110001
0二阶Booth编码bi+1bibi-1重编码操作0000中间结果右移2位0011加A;中间结果右移2位0101加A;中间结果右移2位0112加2A;中间结果右移2位100-2减2A;中间结果右移2位101-1减A;中间结果右移2位110-1减A;中间结果右移2位1110中间结果右移2位01010010100001010010110111110101531h=?11-212020最低位补一位0为什么?第16页/共39页第15页/共39页二阶Booth算法乘数:B=bn-1bn-2…b0=-bn-12n-1+bn-22n-2+bn-32n-3+bn-42n-4+…+b020=-2bn-12n-2+bn-22n-2+bn-32n-2-bn-32n-3+bn-42n-4+…+b020=(-2bn-1
+bn-2+bn-3)2n-2-bn-32n-3
+bn-42n-4+…+b020乘数必须是偶数位第17页/共39页第16页/共39页二阶Booth算法—控制信号编码b2i+1b2ib2i-1重编码符号与数值分别控制直接按重新编码控制NEGB1B2YZYP1YN1YP2YN2000000010000001101001000010101001000011200100010100-210100001101-111000100110-111000100111-010010000NEG2i=b2i+1部分积取1倍的控制信号B12i逻辑是:B12i=b2Ib2i-1部分积取2倍的控制信号B22i逻辑是:对于第j位部分积产生逻辑:pp2i,j=(aj·B12i+aj-1·B22i)NEG2i第18页/共39页第17页/共39页二阶Booth算法—控制信号产生逻辑编码电路部分积产生电路第19页/共39页第18页/共39页二阶Booth算法举例0011000100110001
00101001010000101001011000111110101最低位补一位0531h=F5h(-6)+12=611010+01100001101010+0110010110x第20页/共39页第19页/共39页二阶Booth算法举例0101000000001010000000000
1110100000
0101010000
0011110101531h=F5h第21页/共39页第20页/共39页防止符号位扩展例:B=9=(001001)2,A=10=(01010)2,
AB=90=(01011010)2的执行过程。第22页/共39页第21页/共39页防止符号位扩展例:B=9=(001001)2,A=10=(01010)2,
AB=90=(01011010)2的执行过程。第23页/共39页第22页/共39页防止符号位扩展防止符号扩展的方式解决部分积是负数时可能产生的问题。假定所有的部分积都为负,那么所有符号扩展的“1”的和是:这个数可以作为一个固定的值加在部分积中。由于
2m-1=4m/2-1=3(4m/2-1+4m/2-2+…+41+40)因此符号扩展的“1”对应的二进制数可以表示为(10101…01011)2,它共有m位,最低位的权是2n。如果一个部分积实际上非负,为了消除假定它是负数所带来的影响,只需将它的符号位用“1”代替即可。第24页/共39页第23页/共39页二阶Booth算法—举例例:B=9=(001001)2,A=10=(01010)2,
AB=90=(01011010)2的执行过程。第25页/共39页第24页/共39页加法器树-保留进位加法器二阶Booth算法针对补码数操作。若进行无符号数乘法,则需要将无符号数转换为符号数,即在高位补两位0。32位乘法器产生17个部分积,再加上防止符号位扩展的补偿数,共18个部分积。加法器树采用保留进位加法器第26页/共39页第25页/共39页加法器树-保留进位加法器第27页/共39页第26页/共39页加法器树-保留进位加法器基本的加法器单元多采用(2,2)计数器(半加器)、(3,2)计数器、(5,3)计数器和(7,3)计数器等++++++++++++CLA加法器c+sp1p2p3第28页/共39页第27页/共39页加法器树—4-2压缩加法器4-2压缩器的加法器单元在乘法器的设计中得到了广泛采用。它可以较快地完成中间伪和的产生,而逻辑又比较简单
第29页/共39页第2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制定清晰目标的重要性计划
- 烟台大学《数据结构与算法》2022-2023学年第一学期期末试卷
- 2024应急管理部暗访检查粉尘涉爆企业
- 邢台学院《复变函数》2021-2022学年第一学期期末试卷
- 线管理者的回顾与展望计划
- 信阳师范大学《绘本设计》2023-2024学年第一学期期末试卷
- 篮球社团活动安排计划
- 幼儿园班级工作计划成果总结
- 西华师范大学《经典文学作品选读》2023-2024学年第一学期期末试卷
- 2024年01月11021劳动与社会保障法期末试题答案
- 服装修改行业市场需求变化带来新的商业机遇分析报告
- 入团积极分子培养考察表
- 高中体育与健康教师资格考试学科知识与教学能力2024年下半年测试试题及解答
- 0-3岁婴幼儿营养与健康智慧树知到期末考试答案章节答案2024年杭州师范大学
- UG基础培训课件
- 2024年广东省广州市荔湾区中考一模语文试题
- 人教版四年级上册数学数学复习资料
- 《女娲造人》预习资料
- 无人机喷药合作合同书模板
- TD/T 1066-2021 不动产登记数据库标准(正式版)
- 手术室不良事件警示教育
评论
0/150
提交评论