单精度浮点乘法器的FPGA实现
- 格式:doc
- 大小:130.50 KB
- 文档页数:4
基于FPGA的流水线单精度浮点数乘法器设计彭章国;张征宇;王学渊;赖瀚轩;茆骥【摘要】针对现有的采用Booth算法与华莱士(Wallace)树结构设计的浮点乘法器运算速度慢、布局布线复杂等问题,设计了基于FPGA的流水线精度浮点数乘法器.该乘法器采用规则的Vedic算法结构,解决了布局布线复杂的问题;使用超前进位加法器(Carry Look-ahead Adder,CLA)将部分积并行相加,以减少路径延迟;并通过优化的4级流水线结构处理,在Xilinx(R)ISE 14.7软件开发平台上通过了编译、综合及仿真验证.结果证明,在相同的硬件条件下,本文所设计的浮点乘法器与基4-Booth算法浮点乘法器消耗时钟数的比值约为两者消耗硬件资源比值的1.56倍.【期刊名称】《微型机与应用》【年(卷),期】2017(036)004【总页数】5页(P74-77,83)【关键词】浮点乘法器;超前进位加法器;华莱士树;流水线结构;Vedic算法;Booth 算法【作者】彭章国;张征宇;王学渊;赖瀚轩;茆骥【作者单位】西南科技大学信息工程学院,四川绵阳621010;西南科技大学信息工程学院,四川绵阳621010;中国空气动力研究与发展中心,四川绵阳621000;西南科技大学信息工程学院,四川绵阳621010;西南科技大学信息工程学院,四川绵阳621010;西南科技大学信息工程学院,四川绵阳621010【正文语种】中文【中图分类】TP331.2浮点乘法器(eFloating Point Multiplier,FPM)是数字信号处理(eDigital Signal Processing,DSP)、视频图像处理以及信号识别等应用邻域重要的运算单元。
尤其是在视频图像处理领域,随着对高速海量图像数据处理的实时性要求逐渐提高,设计一种具有更高速率、低功耗、布局规律、占用面积小和集成度高的浮点乘法器极其重要。
阵列乘法器是采用移位与求和的算法而设计的一种乘法器[1]。
基于FPGA的全流水浮点乘累加器的设计及实现作者:李世平陈铠来源:《电子技术与软件工程》2016年第02期摘要为提升浮点乘累加的流水性能,本文提出了一种基于FPGA全流水浮点乘累加器的设计和实现方法。
通过无阻赛流水累加和串形全加等技术,实现了任意长度单精度浮点复向量的乘累加计算,且相邻两个向量之间无流水间隙。
该累加器在Xilinx的XC7VX690T FPGA上实现,乘法器和逻辑资源消耗不到1%,最高运行频率可达279MHz。
【关键词】FPGA 浮点乘累加全流水1 引言随着半导体技术的不断发展,FPGA的功能和性能显著提升,正逐渐成为雷达、通信等诸多领域数字系统设计的重点,通常被用做复杂信号处理算法的硬件加速。
浮点乘累加作为信号处理算法中的常用基本单元,在矩阵乘、矩阵协方差、FIR等计算过程中都有着广泛应用。
传统累加器是通过将加法器的输出反馈到输入端来实现,对于浮点运算而言,由于浮点加法计算较复杂,需要经历对阶、尾数运算、结果规格化、舍入处理和溢出判断五个步骤,一般会有7~14级的流水延迟,进而会导致流水线阻塞,因此需要研究采用合理的累加结构来提高流水性能。
Ling Zhuo等人提出了一种面向矩阵运算的流水累加结构,提高了流水性能,但该结构控制机制复杂,且缓存资源消耗大,正比于流水延迟量的平方;袁松等人采用了分级流水线方法,缓存消耗较小,但在中小规模矩阵累加时会出现流水线暂停,而且输出时延较大,与矩阵总数据个数成正比。
本文提出了一种基于FPGA的全流水浮点乘累加器结构,能够实时完成任意长度单精度浮点复向量的乘累加计算,且相邻两个向量之间无流水间隙,该累加器在Xilinx的XC7VX690T FPGA上实现,乘法器和逻辑资源消耗不到1%,最高运行频率可达279MHz,目前已成功在矩阵协方差、求逆等算法实现过程中推广应用。
2 方案设计基于FPGA的全流水乘累加器结构如图1所示。
A和B为两个等长度的浮点向量,valid 表示输入数据有效,last表示当前处理向量的最后一个数据;Q为输出累加结果,Qvalid为累加结果的有效标志。
Electronic Technology •电子技术Electronic Technology & Software Engineering 电子技术与软件工程• 113●基金项目:广西自然科学基金项目(2014GXNSFAA118392);广西教育厅科研项目(YB2014209)。
【关键词】FPGA 单精度浮点运算 模块化 系统FPGA 近年来在体系结构、技术水平和持续改进的设计方面进行了提高和完善,弥补了专用处理器灵活性不足之处,FPGA 的容量、速度和资源已经有了更好的提高。
在微处理器的指令系统中,浮点数加/减和乘/除法指令都是实现2个单精度浮点数的运算,浮点数算术运算系统的设计通常采用流水线和自顶向下方式,但对于所执行的浮点数算术运算指令需要应用上一条运算指令的运算结果作为操作数的指令,则浮点数算术运算的流水线操作失去作用,影响了浮点数算术运算指令执行的速度。
本设计利用Verilog 语言,采用基于FPGA 自主设计的浮点数算术运算系统,进行浮点加减乘除运算验证和仿真,提高了运算的操作速度,具有较强的通用性和可操作性。
1 单精度浮点加减乘除运算1.1 单精度浮点数表示IEEE754标准中,一个规格化32位的浮点数表示为:X=(-1)S ×(1.M)×2e e=E-127其中用1位表示数字的符号S ,S 为0表示正数,S 为1表示负数。
IEEE754标准中规定的规格化浮点数的阶码是用移码表示,用8位来表示阶码E ,E 是带有偏移量的阶码,偏基于FPGA 单精度浮点数算术运算系统的设计与仿真文/谢四雄 李克俭 蔡启仲 潘绍明移量是127,e 是实际阶码,在计算实际阶码e 时,对阶码E 的计算采用源码的计算方式,32位浮点数的8位的阶码E 的取值范围是0到255,用23位来表示尾数M ,尾数用原码表示,其中尾数域值是1.M 。
单精度浮点数的存储格式如表1所示,因为规格化的浮点数的尾数域最左位总是1,故这一位不予存储,而认为隐藏在小数点的左边,使用的时候再恢复出来。
原创性声明郑重声明:此篇题为《基于FPGA的单精度浮点数乘法器设计》的论文,是作者在导师的指导下,于武汉大学攻读硕士学位期间,进行研究工作所取得的成果。
根据作者所知,论文中除了参考文献列举的地方外,不包含其他人已经发表或撰写过的研究成果。
本声明的一切法律结果由本文作者承担。
作者签名:旷捷毛雪莹彭俊淇导师签名:黄启俊常胜撰写日期:二零一零年三月十八日基于FPGA的单精度浮点数乘法器设计作者:旷捷毛雪莹彭俊淇导师:黄启俊常胜(武汉大学物理科学与技术学院,武汉,430072)摘要:本文设计了一个基于FPGA的单精度浮点数乘法器。
乘法器为五级流水线结构。
设计中采用了改进的带偏移量的冗余Booth3算法和跳跃式Wallace树型结构,减少了部分积的数目,缩短了部分积累加的耗时;提出了对尾数定点乘法运算中Wallace树产生的2个伪和采用部分相加的处理方式,有效地提高了的运算速度;并且加入了对特殊值的处理模块,完善了乘法器的功能。
单精度浮点数乘法器在Altera DE2开发板上进行了验证,其在Cyclone II EP2C35F672C6器件上的最高工作频率达到212.13 MHz。
关键词:改进的带偏移量的冗余Booth3算法;跳跃式Wallace树;单精度浮点数乘法器;FPGAAn FPGA Implementation of Single Precision Floating-point MultiplierAuthor: KUANG Jie, MAO Xueying, PENG JunqiTutor: HUANG Qijun, CHANG Sheng(Department of Physics Science and Technology, Wuhan University, Wuhan, 430072)Abstract:An FPGA implementation of single precision floating-point multiplier is introduced in this thesis. With the usage of modified redundant Booth3 with bias and leapfrog Wallace tree, and the application of partial addition in fixed-point multiplication, the efficiency of the 5-stage multiplier is promoted. Moreover, a module dealing with special values is introduced to perfect the function of the multiplier. The verification of the multiplier is accomplished on Altera DE2, and the Fmax on Cyclone II EP2C35F672C6 reaches 212.13 MHz.Key words: modified redundant Booth3 with bias; leapfrog Wallace tree; single precision floating-point multiplier; FPGA随着数字信号处理技术的不断发展,人们对数据的精确性和处理的实时性的要求日益提高,浮点数逐渐取代定点数,成为应用最广的数据格式。
32位单精度浮点乘法器的FPGA实现
摘要: 采用Verilog HDL语言, 在FPGA上实现了32位单精度浮点乘法器的设计, 通过采用改进型Booth编码,和Wallace 树结构, 提高了乘法器的速度。
本文使用Altera Quartus II 4.1仿真软件, 采用的器件是EPF10K100EQ 240 -1, 对乘法器进行了波形仿真, 并采用0.5CMOS工艺进行逻辑综...
摘要: 采用Verilog HDL语言, 在FPGA上实现了32位单精度浮点乘法器的设计, 通过采用改进型Booth编码,和Wallace 树结构, 提高了乘法器的速度。
本文使用Altera Quartus II 4.1仿真软件, 采用的器件是EPF10K100EQ 240 -1, 对乘法器进行了波形仿真, 并采用0.5CMOS工艺进行逻辑综合。
关键词: 浮点乘法器; Boo th 算法; W allace 树; 波形仿真
随着计算机和信息技术的快速发展, 人们对微处理器的性能要求越来越高。
乘法器完成一次乘法操作的周期基本上决定了微处理器的主频, 因此高性能的乘法器是现代微处理器中的重要部件。
本文介绍了32 位浮点阵列乘法器的设计, 采用了改进的Booth 编码, 和Wallace树结构, 在减少部分积的同时, 使系统具有高速度, 低功耗的特点, 并且结构规则, 易于VLSI的实现。
1 乘法计算公式
32 位乘法器的逻辑设计可分为: Booth编码与部分积的产生, 保留进位加法器的逻辑, 乘法阵列的结构。
1.1 Booth编码与部分积的逻辑设计
尾数的乘法部分,本文采用的是基4 Booth编码方式, 如表1。
首先规定A m和B m 表示数据A和B的实际尾数,P 表示尾数的乘积, PP n表示尾数的部分积。
浮点32 位数, 尾数是带隐含位1 的规格化数, 即: A m=1×a22a21….a0和B m = 1
×b22b21.…b0, 由于尾数全由原码表示,相当于无符号数相乘, 24 × 24 位尾数乘积P 的公式为:
1.2 乘法器的阵列结构
本文采用的是3 -2 加法器, 输入3 个1 位数据: a, b,ci; 输出2 个1 位数据: s, Co。
运算式如下:
其逻辑表达式如下:
当每个部分积PP n产生之后, 将他们相加便得到每个乘法操作的结果。
相加的步骤有很多, 可采用的结构和加法器的种类也很多。
比如串行累加:
而Wallace 树的乘法阵列如下:
加法器之间的连接关系如图1, 图2 所示, 或者从公式(7) 与(8) 中可以看出, 图1中串行累加的方法延迟为11个3-2 加法器的延迟, 而图2中, Wallace树延迟为5个3 -2加法器的延迟。
图1的延迟比图2的延迟大。
图1 串行累
加图2 Wallace 树
2 32 位浮点乘法器的设计
本文是针对IEEE754 单精度浮点数据格式进行的浮点乘法器设计。
IEEE754 单精度浮点格为32位, 如图3 所示。
设A ,B均为单精度IEEE754格式, 他们的符号位, 有效数的偏移码和尾数部分分别用S , E 和M来表示。
双精度和单精度采用的运算规则是一致的, 只是双精度的位长增加了一倍, 双精度是64位, 其中尾数52位, 指数11位, 1位符号位。
所以提高了精度范围。
图3 32 位浮点数据格式
32 位浮点数据格式: A = (- 1) S×M ×2E-127。
其中乘法器运算操作分4步进行。
(1) 确定结果的符号, 对A 和B 的符号位做异或操作。
(2) 计算阶码, 两数相乘, 结果的阶码是两数的阶码相加, 由于A 和B 都是偏移码, 因此需要从中减去偏移码值127,得到A 和B 的实际阶码, 然后相加, 得到的是结果的阶码, 再把他加上127, 变成偏移码。
(3) 尾数相乘,A 和B 的实际尾数分别为24位数, 即1×M a 和1×M b, 最高位1是隐藏位, 浮点数据格式只显示后23位, 所以尾数相乘结果应为一个48位的数据。
(4) 尾数规格化, 需要把尾数相乘的48位结果数据变成24 位的数据, 分3步进行:
① 如果乘积的整数位为01, 则尾数已经是规格化了;如果乘积的整数位为10, 11, 则需要把尾数右移1位, 同时把结果阶码加1。
② 对尾数进行舍入操作, 使尾数为24位, 包括整数的隐藏位。
③ 把结果数据处理为32位符合IEEE浮点数标准的结果。
包括1位符号位, 8位结果阶码位, 结果23尾数位。
3 32 位浮点乘法器的实现与仿真
图4 列出本设计的FPGA 仿真结果。
图中data1是被乘数, data2是乘数, reset 是清零信号, 高有效。
start 是开始信号, 也是高有效。
dataout10是两个浮点32 位数相乘, 进行规格化以后的结果, 是一个32 位数。
Product 是24位尾数相乘的结果, 是一个48位数。
图4 32 位浮点乘法器的仿真结果
整个设计采用了VHDL和Verilog HDL语言进行结构描述, 如果采用的是上华0.5 的标准单元库, 并用Synopsys DC 进行逻辑综合, 其结果是完成一次32位浮点乘法的时间为30ns, 如果采用全定制进行后端版图布局布线, 乘法器性能将更加优越。
4 结语
本文给出了32 位浮点乘法器的设计, 浮点算法具有高精度性以及较宽的运算
范围, 使得乘法的设计更能够满足工程和科学计算的要求, 电路的设计、模拟和实现均采用Altera Quartus II 4.1开发工具。
采用的器件EPF10K100EQ 240-1, 逻辑单元是1914个, PIN的数量是147,本设计采用了一系列的算法和结构, 如采用Booth编码的方法和Wallace树的结构, 使得系统具有高速度特点, 并且易于ASIC的后端版图实现。