一种基于FPGA的浮点运算方法技术

技术编号:11557752 阅读:108 留言:0更新日期:2015-06-04 18:19
本发明专利技术提供了一种基于FPGA的浮点运算方法,该方法包括:将具有指数相同,而尾数不同的一组数据作为数据块进行处理,运算中的数据采用定点格式来表示,通过左移来调整数据精度,并通过右移来避免定点运算出现溢出错误,在运算结束之后将结果数据除以预设增益,得到正确数据。本发明专利技术提出了一种浮点运算方法,解决了定点算法和浮点算法之间的矛盾,提高了浮点运算效率,降低了成本。

【技术实现步骤摘要】
一种基于FPGA的浮点运算方法
本专利技术涉及可编程处理器,特别涉及一种基于FPGA的浮点运算方法。
技术介绍
在通讯和雷达信号处理中,FFT是一种常用的工具,在速度要求比较高或集成度较高的情况下大多使用FPGA完成。绝大多数的处理器处理数据采用定点数据格式,这样虽然使得处理结构相对简单,但是溢出现象则比较严重,而采用简单的定点截位又会将小信号淹没在大信号之中,使结果数据失去必要的精度。随着对数据精度的要求越来越高,一般的定点算法已经无法满足高精度的要求,需要求助于浮点处理器来进行运算,以避免应用中的溢出问题。国外的FFTCore大多采用定点运算或块浮点运算,国外的FFTCore一般采用小于24位定点或小于24位块浮点。但是浮点处理器消耗资源比较大,包含有复杂的硬件结构(浮点执行单元),从而大大地增加了设计成本和功耗,降低了计算效率。在同样的处理速度下,浮点处理器相对昂贵,功耗较大。浮点运算执行单元只能自行设计,在设计过程还要考虑运算精度、运算速度、资源占用、设计复杂度的折衷等。因此相对定点运算而言,浮点运算具有开发难度大、研发周期长、研制费用高等缺点。因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
技术实现思路
为解决上述现有技术所存在的问题,本专利技术提出了一种基于FPGA的浮点运算方法,包括:将具有指数相同,而尾数不同的一组数据作为数据块进行处理,运算中的数据采用定点格式来表示,通过左移来调整数据精度,并通过右移来避免定点运算出现溢出错误,在运算结束之后将结果数据除以预设增益,得到正确数据。优选地,所述数据采用定点格式来表示,进一步包括:在数据表示上,采用定点数制表示方式,数据存储器RAM位宽为M位,最高位M位为符号位,其余位为有效数据位,运算过程中采用定点的运算器,中间加法结果保持精度不截位,为了防止加减溢出在每一级运算后都进行判决,检测是否在有效的数据表示范围内,以决定下一级的蝶形运算读取数据的位数选择。优选地,该方法还包括:在基二DIF形式FFT运算中,每一级的蝶形输入的原始数据之间首先进行的是简单的加减运算,将每级所有数据在进入蝶形时需要左移/右移,如果是将所有数据右移一位,那么就使该级输出数据格式相对于该级输入数据格式来说多了一位小数位,每级运算后为前一级的1/2,并将其称为浮点因子,经过m级的蝶形迭代后,如果总共右移了m位,即浮点因子位m,则计算结果数据放大2m倍后得到最终结果。本专利技术相比现有技术,具有以下优点:本专利技术提出了一种浮点运算方法,解决了定点算法和浮点算法之间的矛盾,提高了浮点运算效率,降低了成本。附图说明图1是根据本专利技术实施例的基于FPGA的浮点运算方法的流程图。图2为根据本专利技术实施例的块浮点FFT结构图。图3为根据本专利技术实施例的三位块浮点因子判决程序流程图。具体实施方式下文与图示本专利技术原理的附图一起提供对本专利技术一个或者多个实施例的详细描述。结合这样的实施例描述本专利技术,但是本专利技术不限于任何实施例。本专利技术的范围仅由权利要求书限定,并且本专利技术涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本专利技术的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本专利技术。本专利技术的一方面提供了一种基于FPGA的浮点运算方法。图1是根据本专利技术实施例的基于FPGA的浮点运算方法流程图。FFT是将原有N点序列分解成为两个或更多的较短序列,这些短序列的DFT可重新组合成原序列的DFT,而总的运算次数确比直接的DFT少的多,可以极大的降低计算量,从而达到提高运算速度的目的。基二DIF形式FFT是将频域X(k)按序号k的奇、偶分开,假设N=2m,则第一次分开得到两个N/2点的DFT,称为第一级(Classm);再将其分别分解可得到四个N/4点的DFT,称为第二级(Classm-1);依次类推,直到得到两点的DFT。FFT运算的基本单元是蝶形运算单元,基二DIF的蝶形运算单元运算式如下所示:x′a+jy′a=xa+xb+j(ya+yb)x′b+jy′b=(xa-xb)wr-(ya-yb)wi+j[(xa-xb)wi+(ya-yb)wr]即:x′a=xa+xby′a=(ya+yb)x′b=(xa-xb)wr-(ya-yb)wiy′b=(xa-xb)wi+(ya-yb)wr从上式可以得出,基二蝶形运算只需一次复数乘法和两次复数加法,则N=2n个点的DFT复数乘法量由N2次降为次,复数加法由N(N-1)次降为Nlog2N。所以在大点数DFT运算时,使用FFT将会极大的降低运算量,提高运算效率。二进制小数点在数码中位置固定不变的称为定点制。定点制中,小数点右边各位表示数的小数部分,左边各位表示数的整数部分。通常为了方便,采取了两种方法,一种就是把所有数据都表示为整数;另一种就是把数值限制在-1.0到+1.0之间的小数形式。在第二种方法中,小数点固定在第一位二进制码之后,整数位作为“符号位”,数的本身只有小数部分。相对而言第二种方法比较常用,在定点数运算中,所有结果的绝对值都不能超过1。如果运算过程中数的绝对值超过1,整数部分的符号位就会出现错误进位,称为溢出,这在定点算法中是无法避免出现的情况,一般采用简单的截位来解决,但是这样就会时一些小数据被淹没在大数据之中。浮点制将一个数的表示分为阶码部分和尾数部分。阶码是一个有符号的整数,它表示了尾数中的二进制小数点位置应该朝左或右移动以得到原数的大小;尾数有两部分:一个一位二进制整数(也被引用为J-bit)和一个二进制小数,J-bit通常不表示出来,而是作为隐含值。四种浮点格式包括单精度格式、扩展单精度格式、双精度格式和扩展双精度格式,它能表示的值的范围要宽得多,可以避免大多数应用中的溢出问题。在大多数情况下,处理器以规格化的形式表示实数。也就是说,除了零之外,尾数总是由一个整数和一个小数构成,如下所示:对于小于1的值来说,主要消掉高位零,即可成为规格化数。(每消掉一个高位零,阶码都要减1)以规格化形式来表示数据,使装入给定宽度的尾数的有效位个数最多。总之,规格化数的尾数表示在1到2之间的实数,而由阶码给出实际的小数点的位置。浮点格式表示数据的动态范围比定点数大,在计算过程中可以使得指数部分加减“1”来扩展数据,这样对小数据在运算中可保持更高的精度,有利于保护小数据。在硬件实现时,需要设置专用的浮点运算执行单元来进行浮点加减乘除运算,由于在运算中要分别考虑到数据的阶码和尾数,所以浮点执行单元的结构和控制都比较复杂,严重影响到浮点运算的效率。无论使用哪种硬件处理器来实现算法,绝大多数的处理器使用定点运算算法,处理数据采用定点数据格式,这样虽然使得处理结构相对简单,但是溢出现象则比较严重,而采用简单的定点截位又会将小信号淹没在大信号之中,使结果数据失去必要的精度。随着对数据精度的要求越来越高,一般的定点算法已经无法满足高精度的要求,需要求助于浮点处理器来进行运算,以避免应用中的溢出问题。但是浮点处理器消耗资源比较大,包含有复杂的硬件结构(浮点执行单元),从而大大地增加了设计成本和功耗,降低了计算效率。在同样的处理速度下,与定点处理器相比较,浮点处理器相对昂贵,功耗较大。在使用ASIC器件本文档来自技高网...
一种基于FPGA的浮点运算方法

【技术保护点】
一种基于FPGA的浮点运算方法,其特征在于,包括:将具有指数相同,而尾数不同的一组数据作为数据块进行处理,运算中的数据采用定点格式来表示,通过左移来调整数据精度,并通过右移来避免定点运算出现溢出错误,在运算结束之后将结果数据除以预设增益,得到正确数据。

【技术特征摘要】
1.一种基于FPGA的浮点运算方法,其特征在于,包括:将具有指数相同,而尾数不同的一组数据作为数据块进行处理,运算中的数据采用定点格式来表示,通过左移来调整数据精度,并通过右移来避免定点运算出现溢出错误,在运算结束之后将结果数据除以预设增益,得到正确数据;调整FFT输入的信号功率,而且根据内部每一级的计算结果进行数据调整所属FFT是在一个数据块上实现浮点,即一组数据共用一个移位因子,在硬件上以独立的数据字段存储;数据块的移位因子取决于整个数据块中所有数据的最大值;如果数据块中有一个数较大,该数据块共用一个较大的因子;如果数据块中数据都较小,该数据块就共用一个较小的因子;在数据表示上,采用定点数制表示方式,数据存储器RAM位宽为M位,最高位M位为符号位,其余位为有效数据位,运算过程中采用定点的运算器,中间加法结果保持精度不截位,为了防止加减溢出在每一级运算后都进...

【专利技术属性】
技术研发人员:黄建喜刘宇波
申请(专利权)人:成都金本华科技股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1