一种实现fft的运算方法

文档序号:8361414阅读:1221来源:国知局
一种实现fft的运算方法
【技术领域】
[0001] 本发明涉及可编程处理器,特别涉及一种实现FFT的运算方法。
【背景技术】
[0002] 在通讯和雷达信号处理中,FFT是一种常用的工具,在速度要求比较高或集成度较 高的情况下大多使用FPGA完成。绝大多数的处理器处理数据采用定点数据格式,这样虽然 使得处理结构相对简单,但是溢出现象则比较严重,而采用简单的定点截位又会将小信号 淹没在大信号之中,使结果数据失去必要的精度。随着对数据精度的要求越来越高,一般的 定点算法已经无法满足高精度的要求,需要求助于浮点处理器来进行运算,以避免应用中 的溢出问题。国外的FFTCore大多采用定点运算或块浮点运算,国外的FFTCore-般采 用小于24位定点或小于24位块浮点。但是浮点处理器消耗资源比较大,包含有复杂的硬 件结构(浮点执行单元),从而大大地增加了设计成本和功耗,降低了计算效率。在同样的 处理速度下,浮点处理器相对昂贵,功耗较大。浮点运算执行单元只能自行设计,在设计过 程还要考虑运算精度、运算速度、资源占用、设计复杂度的折衷等。因此相对定点运算而言, 浮点运算具有开发难度大、研发周期长、研制费用高等缺点。
[0003] 因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。

【发明内容】

[0004] 为解决上述现有技术所存在的问题,本发明提出了一种实现FFT的运算方法,包 括:
[0005] 采用块浮点运算,在运算中间将数据块进行左移或者右移,调整FFT输入的信号 功率,并且在每一级的数据运算完毕经过一个专门的块浮点运算模块,根据内部每一级的 计算结果进行数据调整,一组数据共用一个移位因子,在硬件上以独立的数据字段存储,块 浮点中数据块的移位因子取决于整个数据块中所有数据的最大值,在运算结束之后再将结 果数据除以预设增益得到正确数据。
[0006] 优选地,该方法进一步包括判断提取块浮点因子,具体过程为:
[0007] 在每一级的每次蝶形运算之后检查每一个结果数据的前四位,如果该级所有结果 数据的前四位都相同,则将所有数据全部左移三位而不溢出,最高位是符号位,左移一位丢 失的是符号位,所有的接下来的位都和最高位相等,这样移位不会改变数据的值;如果所有 数据的前三位相同都相同,则将所有数据全部左移两位;如果所有数据的前两位相同都相 同,则将所有数据全部左移一位。
[0008] 优选地,对于三位块浮点判断提取,在完成每个蝶形运算后,有一个等待过程,在 该等待过程中完成对本次蝶形运算结果数据的块浮点因子判决,对每级数据块浮点因子进 行判决采用了状态机的结构,S0、S1、S2和S3为块浮点因子的不同状态:SO代表数据在FFT 下一级运算时可以左移零位;Sl代表数据在FFT下一级运算时可以左移1位;S2代表数据 在FFT下一级运算时可以左移2位;S3代表数据在FFT下一级运算时可以左移3位;
[0009] 在FFT运算的每一级开始时将块浮点因子设为S3状态,在蝶形运算模块中,当检 测的一个数据的前四位不相同,就把块浮点因子的状态置为S2 ;同样有一个数据的前三位 不相同,块浮点因子的状态就为S1,当检测到有一组数据的块浮点因子为SO状态时,该级 剩余的蝶形运算就不再进行块浮点因子判决,如果在FFT运算的每一级将块浮点因子从S2 状态开始判断,就是两位块浮点判断提取,从Sl状态开始就是一位块浮点判断提取;
[0010] 采用并行处理,在每一个蝶形运算模块完成蝶形运算后,同时对四个数据的前四 位、前三位、前两位进行比较,最后对结果进行比较,使三位或者更多位的块浮点蝶形运算 比定点蝶形运算多一个时钟周期;当所有级FFT运算完成后,通过移位累加单元实现对每 一级移位次数的累加,给出该组数据块浮点FFT运算结束后总的移位次数,由此确定最后 结果的增益。
[0011] 本发明相比现有技术,具有以下优点:
[0012] 本发明提出了一种浮点运算方法,解决了定点算法和浮点算法之间的矛盾,提高 了浮点运算效率,降低了成本。
【附图说明】
[0013] 图1是根据本发明实施例的实现FFT的运算方法的流程图。
[0014] 图2为根据本发明实施例的块浮点FFT结构图。
[0015] 图3为根据本发明实施例的三位块浮点因子判决程序流程图。
【具体实施方式】
[0016] 下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描 述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权 利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节 以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中 的一些或者所有细节也可以根据权利要求书实现本发明。
[0017] 本发明的一方面提供了一种实现FFT的运算方法。图1是根据本发明实施例的实 现FFT的运算方法流程图。
[0018] FFT是将原有N点序列分解成为两个或更多的较短序列,这些短序列的DFT可重新 组合成原序列的DFT,而总的运算次数确比直接的DFT少的多,可以极大的降低计算量,从 而达到提高运算速度的目的。基二DIF形式FFT是将频域X(k)按序号k的奇、偶分开,假 设N= 2m^lj第一次分开得到两个N/2点的DFT,称为第一级(Classm);再将其分别分解可 得到四个N/4点的DFT,称为第二级(Classm- 1);依次类推,直到得到两点的DFT。FFT 运算的基本单元是蝶形运算单元,基二DIF的蝶形运算单元运算式如下所示:
[0019] x/a+jy/a=xa+xb+j(ya+yb)
[0020] xrb+jyrb= (xa-xb)wr-(Ya-Yb)W^jt(Xa-Xb)W^(Ya-Yb)Wr]
[0021] 即:x'a=xa+xb
[0022] j'a= (ya+yb)
[0023] x' b= (xa-xb)wr-(ya_yb)Wi
[0024] j'b= (xa-xb)wi+(ya-yb)wr
[0025] 从上式可以得出,基二蝶形运算只需一次复数乘法和两次复数加法,则N= 2"个
【主权项】
1. 一种实现FFT的运算方法,其特征在于,包括: 采用块浮点运算,在运算中间将数据块进行左移或者右移,调整FFT输入的信号功率, 并且在每一级的数据运算完毕经过一个专口的块浮点运算模块,根据内部每一级的计算结 果进行数据调整,一组数据共用一个移位因子,在硬件上W独立的数据字段存储,块浮点中 数据块的移位因子取决于整个数据块中所有数据的最大值,在运算结束之后再将结果数据 除W预设增益得到正确数据。
2. 根据权利要求1所述的方法,其特征在于,该方法进一步包括判断提取块浮点因子, 具体过程为: 在每一级的每次蝶形运算之后检查每一个结果数据的前四位,如果该级所有结果数据 的前四位都相同,则将所有数据全部左移S位而不溢出,最高位是符号位,左移一位丢失的 是符号位,所有的接下来的位都和最高位相等,该样移位不会改变数据的值;如果所有数据 的前S位相同都相同,则将所有数据全部左移两位;如果所有数据的前两位相同都相同,贝U 将所有数据全部左移一位。
3. 根据权利要求2所述的方法,其特征在于,对于=位块浮点判断提取,在完成每个蝶 形运算后,有一个等待过程,在该等待过程中完成对本次蝶形运算结果数据的块浮点因子 判决,对每级数据块浮点因子进行判决采用了状态机的结构,S0、S1、S2和S3为块浮点因子 的不同状态;SO代表数据在FFT下一级运算时可W左移零位;S1代表数据在FFT下一级运 算时可W左移1位;S2代表数据在FFT下一级运算时可W左移2位;S3代表数据在FFT下 一级运算时可W左移3位; 在FFT运算的每一级开始时将块浮点因子设为S3状态,在蝶形运算模块中,当检测的 一个数据的前四位不相同,就把块浮点因子的状态置为S2 ;同样有一个数据的前=位不相 同,块浮点因子的状态就为S1,当检测到有一组数据的块浮点因子为SO状态时,该级剩余 的蝶形运算就不再进行块浮点因子判决,如果在FFT运算的每一级将块浮点因子从S2状态 开始判断,就是两位块浮点判断提取,从S1状态开始就是一位块浮点判断提取; 采用并行处理,在每一个蝶形运算模块完成蝶形运算后,同时对四个数据的前四位、前 =位、前两位进行比较,最后对结果进行比较,使=位或者更多位的块浮点蝶形运算比定点 蝶形运算多一个时钟周期;当所有级FFT运算完成后,通过移位累加单元实现对每一级移 位次数的累加,给出该组数据块浮点FFT运算结束后总的移位次数,由此确定最后结果的 增益。
【专利摘要】本发明提供了一种实现FFT的运算方法,该方法包括:采用块浮点运算,在运算中间将数据块进行左移或者右移,调整FFT输入的信号功率,并且在每一级的数据运算完毕经过一个专门的块浮点运算模块,根据内部每一级的计算结果进行数据调整,一组数据共用一个移位因子,在硬件上以独立的数据字段存储,块浮点中数据块的移位因子取决于整个数据块中所有数据的最大值,在运算结束之后再将结果数据除以预设增益得到正确数据。本发明提出了一种浮点运算方法,解决了定点算法和浮点算法之间的矛盾,提高了浮点运算效率,降低了成本。
【IPC分类】G06F17-14
【公开号】CN104679720
【申请号】CN201510116661
【发明人】黄建喜, 刘宇波
【申请人】成都金本华科技股份有限公司
【公开日】2015年6月3日
【申请日】2015年3月17日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1