您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 基于FPGA-的浮点运算单元的设计方法
-17-基于FPGA的浮点运算单元的设计方法121.4660012.466001【摘要】【关键词】【中图分类号】【文献标识码】【文章编号】(一)引言目前,随着信息应用领域对数据运算精度要求的不断提高和数值运算范围的不断扩大,使得在当今CPU的设计中,浮点运算单元(Floating-pointUnit,简称FPU)的研究显得越来越重要。而早期的有些CPU没有浮点运算的硬件支持,完全靠软件来实现,这样的方式加重了编译器的负担。本设计采用硬件来实现浮点非规格化数据的规格化设计及运算,改进了传统浮点运算的规格化设计、依靠软件实现的弊端,提高了浮点数计算的速度和并行性;自顶向下的模块化数字系统设计方法增强了系统的可移植性及可改进性,对以后运算单元各个模块的修改、增减非常方便;在仿真结果正确的情况下,利用FPGA来综合实现,验证结果表明,该设计方法有效的提高了数据处理的速度,改善了资源的占用面积。(二)浮点数标准浮点数的表示遵循IEEE754标准,一个浮点数是由四部分组成的:符号、尾数(有效数)、指数及基。浮点数的IEEE754标准表达式如下式:(1)*1.*2sebiasXf+=−(2-1)在式(2-1)中,S为符号位,当S=0时,此表达式表示的是一个正值;当S=1时,此表达式表示的是一个负值。e是使用原码表示的,bias是偏移量,对单精度数而言bias=127,按照IEEE754标准,通常浮点数的指数用移码表示即使得E=e+bias,E是使用移码表示的。1.f表示的是尾数,尾数通常用原码表示,且规格化后的尾数其第一位数为1。一个32位的单精度规格化浮点数,其位数分配情况如下图1所示。1从图中可以看出,第31位为符号位,第30~23位为阶码位,第22~0位为尾数位。按照IEEE754标准,浮点数所表示的数据类型分为以下五种:1.255,0,EfVNAN=≠且是;(非数,NotaNumber)2.255,0,1sEfV===−∞且();3.1270255,(1)2(1.)sEEVf−=−;4.1260,2(0.)EEf−=≠s并且f0,V=(-1);(反规格化数)5.0,0,(1)0sEfV===−并且;(零)上述所说的单精度浮点数值的五种情形具体可做如下解释:1.表示没有数学解析的操作(例如0/0,∞+∞),将产生一个非数。2.表示正负无穷大数。3.表示规格化的数,它定义为非0的浮点数,且昀左有效位为1。4.表示一个反规格化的数,它的指数为昀小值,且有效尾数非0,昀左有效位为0。5.表示0,它的指数为昀小值,且有效数为0。由于浮点有效数采用原码表示,所以有两个0,即+0和-0。(三)系统结构框图本设计的浮点单元按照IEEE754浮点标准,采用单精度格式,利用模块化设计方法,实现浮点的加/减、乘、除运算功能。在设计中,通过可参数化警戒位位数及就近舍入的舍入策略可满足不同应用中的运算精度要求。整个系统结构包括:加/减法、乘法、除法各运算模块和异常功能处理模块。系统结构框图如下:2系统在分别设计加/减法和乘、除法运算模块的基础上进行系统的设计,这种结构只要设计好输入、输出与功能模块间的连接就可完成浮点单元功能改进,利于模块的修改和【收稿日期】【作者简介】-18-增减。在本设计中加/减、乘、除法运算包括下面几个步骤:1.运算前规格化模块:将要进行运算的浮点数进行规格化处理,包括符号位的确定、指数的调整、尾数的整数位的扩展等;2.各种算法模块:将前面处理后的运算值的尾数进行基本的算术运算处理;3.后规格化及舍入模块:对计算的结果进行后规格化及舍入处理,根据警戒位、舍入位的值来进行计算结果的舍入处理,昀后将规格化后的结果存储为标准的IEEE754浮点数结构;4.异常单元模块:对运算结果规格化过程中发生异常的情况来进行处理。(四)浮点数加/减法、乘、除法运算模块设计1.加/减法运算模块设计(1)运算原理浮点数X和Y,它们分别是:2xExxXSM=∗∗(4-1a)2yEyyYSM=∗∗(4-1b)其中xS、yS为符号位,xE、yE为阶码,xM、yM为尾数。两个浮点数加法运算就可以表示为:(,2)exxyXYEMM−+=±0xyeEE=−≥(4-2a)(,2)exxyXYEMM−+=±0xyeEE=−(4-2b)假设运算结果为Z,其规格化之后的值可以表示为:0123(1)2()zzpSEZzzzzz=−∗⋅⋅⋅⋅(4-3)其中规格化之后的Z中0z为1。(2)设计流程图3/从图3中,可以看到浮点加/减法的运算规则为:第一级的操作主要是将操作数中的符号、指数和尾数分开,并把尾数中隐含的整数位加入被操作数场中,完成一些例外情况检查;同时确定指数差的绝对值。把较大的指数选作结果指数,并进行有效数的移位,即将指数较小的浮点数的有效数进行对准移位。第二级是有效数的加法。第三级是规格化,对计数结果中前导0/1的个数进行编码,用作移位次数与指数调整,通过移位将昀终结果调整为规格化的浮点数。第四级是舍入级,因为舍入可能引起非规格化,因此,这里也包含了另一个规格化级,每次规格化移位都要求调整一次指数。昀后一级判断结果是否溢出,对结果进行检测。主要是进行昀终结果的上溢、下溢等异常判断和处理,并对相应的标志位进行置位,同时将符号位、指数与尾数组合成一个符合IEEE754标准的浮点数据。2.乘法模块设计(1)运算原理设两浮点数:2xExxXSM=∗∗(4-4a)2yEyyYSM=∗∗(4-4b)其中xS、yS为符号位,xE、yE为阶码,xM、yM为尾数。两个浮点数乘法运算就可以表示为:12701232()()2xyEExypXYSSccccc+−∗=⊕∗⋅⋅⋅∗(4-5)假设运算结果为Z,其规格化后可以表示为:01232()zpEzZSzzzzz=∗⋅⋅⋅⋅(4-6)其中规格化之后的Z中0z为1。(2)设计流程图4根据流程图,浮点乘法可以归纳为以下几个步骤:1)零操作数检查;2)阶码相加:阶码相加结果采用移码表示,并对相加结果判断是否溢出,一旦发生正溢出,则需报告溢出;若发生负溢出,则将结果置为机器零;3)尾数相乘;4)规格化:可能需要左规1位;5)舍入:尾数相乘的结果是尾数长度的两倍,必须对低位进行舍入后才能存储乘积结果。3.除法模块设计(1)运算原理假设两个浮点数:2xExxXSM=∗∗(4-7a)-19-2yEyyYSM=∗∗(4-7b)其中xS、yS为符号位,xE、yE为阶码,xM、yM为尾数。则127()2()xyEExxyxyyMXSSSSQYM−+=⊕∗=⊕和R(4-8)其中|R|一定小于Y。假设运算结果为Z,其规格化后可以表示为:01232()zpEzZSzzzzz=∗⋅⋅⋅⋅(4-9)其中规格化之后的Z中0z为1。(2)设计流程图5由上图可归纳浮点除法的运算步骤:1)0操作数检查:当除数为0,结果商为无穷大;当被除数为0,则商为0。2)阶码相减:阶码相减的结果可能会出现溢出,若发生正溢出,则需报告浮点数溢出;若发生负溢出,则将结果置为机器零。3)尾数相除。4)结果规格化。5)舍入处理。(五)实验结论本设计使用仿真软件Modelsim6.0,综合软件Synplify8.1,选用型号为CycloneⅡEP2C35FC684C6的FPGA,对系统进行综合和时序仿真。综合结果表明,系统的昀高的时钟频率可达47.4MHz,消耗LE(logicelement)为2280,110个pins。进行时序仿真验证运算的准确性,进行一次的加/减法运算需要经过8个时钟周期,一次的浮点乘法运算需要14个时钟周期,浮点除法需要24个时钟周期。浮点运算单元的仿真时序如图6所示。6【参考文献】复杂的需求。网络摄像机的引入,通过进行网络音视频互动交流解决了这一难题。网络摄像机是一种结合传统摄像机与网络技术所产生的新一代摄像机,内置麦克风和扬声器。可将实时图像声音通过网络传送到远处任何一台计算机。使用通用的浏览器即能接受前端实时的音视频信息。且能方便地通过麦克风进行语音交流。可选择使用专门设计的支架,让网络摄像机即可固定使用也可随时取下在一定范围内移动使用。3多台网络摄像机可使用中心的集中式管理或形成无中心的分布式监控网,其优点明显,能让远程指导者与现场实施者进行无障碍的音视频交流互动。而且网络摄像机内置实时操作系统,外设RJ-45标准以太网接口,安置点无需计算机。具有安全机制,可以对操作本摄像机地用户进行分级别的权限验证等等。缺点是需无故障的网络支持,视频只能单向提供,有些时候这种“说看式”的交流不能完全替代指导人员在现场操作。(三)结束语广播电视监测工作服务于广播电视事业。要保障广播电视监测工作的高质量不间断运行,就要做到监测站点的稳定运行和故障及时排除,而监测站点远程维护技术就是实现保障的重要技术手段之一。随着科学技术的不断发展和新技术的不断应用,监测站点的远程维护技术也必将趋向更加先进、功能更加强大实用的方向不断发展。
本文标题:基于FPGA-的浮点运算单元的设计方法
链接地址:https://www.777doc.com/doc-7216637 .html