欢迎来到天天文库
浏览记录
ID:8253079
大小:32.00 KB
页数:8页
时间:2018-03-13
《基于改进型选择进位加法器32位浮点乘法器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于改进型选择进位加法器32位浮点乘法器设计 摘要:在修正型Booth算法和Wallace树结构以及选择进位加法器的基础上,提出了一种新型32位单精度浮点乘法器结构。该新型结构通过截断选择进位加法器进位链,缩短了关键路径延时。传统选择进位加法器每一级加法器的进位选择来自上级的进位输出。提出的结构可以提前计算出尾数第16位的结果,它与Wallace树输出的相关位比较就可得出来自前一位的进位情况进而快速得到进位选择。在Altera的EP2C70F896C6器件上,基于该结构实现了一个支持IEEE754浮点标准的4级流水线浮点乘法器,时序仿真表明,该方法将传统浮点乘法器结构关键
2、路径延时由6.4ns减小到5.9ns。关键词:修正Booth算法;Wallace树结构;选择进位加法器;浮点乘法器中图分类号:TN702?34文献标识码:A文章编号:1004?373X(2013)16?0133?04浮点乘法器是数字处理器的重要组成单元,它的性能直接关系到整个数字系统的性能。所以浮点乘法器一直以来是人们研究的热点。而乘法器的设计主要是对速度、面积、功耗等因素的优化与折中。Booth8算法大大缩小了部分积数量;Wallacetree、daddatree等压缩树结构实现部分积的并行求和提高了乘法器的速度,进位保留加法器(CarrySaveAdder,CSA)则实
3、现最终两个部分积的快速求和。文献[1]基于乘法器各级核心器件是加法器的思想,通过优化加法器减小了乘法器的延时。文献[2]设计了一种改进的基4Booth编码和华莱士树的24位符号定点乘法器,在功耗和面积降低的同时,延时也得到了减小,做到了芯片性能和设计复杂度之间的良好折中。文献[3]提出了一种适用于FPGA结构的改进型Wallacetree架构乘法器,实现了资源和性能的合理平衡。本文提出了一种新的结构,该结构通过截断选择进位加法器进位链,缩短了最终两个部分积相加的进位传播延时。1传统浮点乘法器本文中乘数、被乘数以及最终结果均采用IEEE754标准[4]的32位单精度浮点格式。
4、1.1单精度浮点格式根据IEEE754标准,32位单精度浮点分为3个部分:符号位S(Sign),指数位E(Exponent),尾数位M(Mantissa)其结构图如图1所示。8符号位S位宽为1,S为0表示浮点数为正,S为1则表示浮点数为正;指数位E位宽为8,其包含一个127的偏置所以原浮点数的指数为E-127;尾数M位宽为23,表示浮点数的小数部分,其隐含了为1的整数部分所以单精度浮点数表示方法为:[F=-1S×1.M×2E-127](1)1.2单精度浮点格式传统浮点乘法器主要可以分成3个部分:符号计算、指数计算以及尾数计算[5]:(1)符号计算。将乘数和被乘数的符号位相异
5、或即可得到结果的符号位。(2)指数计算。乘数与被乘数指数部分减去偏置后相加,然后根据溢出情况以及尾数的最高位对指数进行相应的调整;最后将指数加上偏置并规范化处理得到最终结果的8位指数部分。(3)尾数部分计算。首先乘数和被乘数的尾数经修正Booth编码单元产生13个部分积,再由4?2压缩单元构成的Wallace树将这13个部分积压缩至Carry,Sum形式,接着通过CSA对其加权求和(Carry左移一位后与Sum相加)经尾数调整并规范化后得到结果的23位尾数[6]。整体结构如图2所示。2浮点乘法器关键部件设计尾数运算部分所耗资源最多且延时最长,是浮点乘法器设计的关键。尾数运算
6、包括Booth编码产生部分积、Wallacetree以及CSA三部分,下面介绍该关键部件设计。82.1修正Booth编码产生部分积修正Booth算法可以用如下数学模型表示:[P=A×B=A×i=023bi·2i=A×n=112b2n-1+b2n-2b2n+1](2)[Pn=A×b2n-1+b2n-2b2n+1?22n](3)每次交叠取乘数的3位来产生部分积,根据每组编码结果不同选择被乘数的倍数[7]{0,M,-M,2M,-2M}。具体操作是:先将乘数进行扩充(末尾添‘0’,首位添加符号位‘0’,为了保证扩展后的乘数位宽为奇数故在最前面再添‘0’);接着根据交叠所取的3个位按
7、照表1所示的真值表选取相应的被乘数倍数左移2n位并进行符号扩展得到48位的部分积。表1修正Booth编码真值表2.2Wallace树型结构Booth编码产生了13个48位宽的部分积,将这13个部分积相加即得到尾数相乘的结果,为了提高部分积求和速度,Wallace树被广泛采用,它的基本单元是4?2压缩器。4?2压缩器有5个输入(A、B、C、D、Cin)和3个输出(Sum,Cout,Carry)。它的逻辑表达式如下:[Sum=ABCDCin](4)[Cout=A·B+A·C+B·C](5)[Carry=ABC·D
8、Ci
此文档下载收益归作者所有