基于fpga的高速可变点fft处理器及其处理方法

文档序号:6377815阅读:171来源:国知局
专利名称:基于fpga的高速可变点fft处理器及其处理方法
技术领域
本发明涉及数字信号处理技术领域,更进一步涉及通信和雷达信号处理中基于现场可编程门阵列(Field Programmable Gate Array, FPGA)的高速可变点流水线快速傅里叶变换(Fast Fourier Transform, FFT)处理器及其处理方法。本发明可用于解决数字信号处理技术中高速可变点数的FFT运算的实时处理,易于FPGA实现,可扩展性强。
背景技术
随着现场可编程门阵列FPGA(Field Programmable Gate Array)技术的迅速发展,采用并行度更大、速度更快的FPGA芯片来实现FFT已成为必然趋势。FPGA技术的关键就是利用强有力的设计工具来缩短开发周期,提供丰富的片上资源,降低设计成本,并能够并行处理数据,容易实现流水结构,且升级方便,提高设计的灵活性。传统的采用原址运算的FFT处理器在实时专用处理器中得到广泛应用。但采用原址运算的FFT处理器,其不同级同一位置蝶形输入数据寻址不固定,所以每一级的存储地址和控制逻辑不相同,从而增加了地址控制的难度和复杂性,其模块的移植性比较低。南京航空航天大学申请的专利“基于FPGA实现高速FFT处理的方法”(申请号201010278997. 9,申请公告号CN101937424A)公开了一种改进基_2算法的FFT处理器。该FFT处理的中间数据采用顺序存放的方式,每级输入、输出数据顺序不变,因此几何结构固定,其使用两块数组采用循环处理的方法进行计算。但是该方法存在的不足是,其电路循环处理的结构特点导致对于大点数的FFT运算实时性差,速度低;而且系统全部用16位宽,数据精度差;特别是不能进行可变点数的FFT运算处理,灵活性差。

发明内容
本发明的目的在于克服现有技术的不足,解决传统FFT处理器控制逻辑复杂、模块可移植性低的问题,提出了一种基于FPGA的高速可变点FFT处理器及其处理方法,并采用流水线结构方式实现了改进的基-2算法,可实现对数据的快速、可变点数的FFT运算处理。本发明基于FPGA的高速可变点流水线FFT处理器,包括多级处理模块和一级输出模块,多级处理模块的总级联数由用户进行FFT运算的序列的最大长度决定。多级处理模块和输出模块以流水线方式级连;所述处理模块中的存储单元与控制单元、蝶形单元通过数据总线和控制总线相连;所述输出模块中的存储单元与控制单元、输出选择单元通过数据总线和控制总线相连;处理模块中的存储单元,用于存储处理模块的输入数据;处理模块中的控制单元,用于控制和协调本级处理模块的存储单元、蝶形单元和下一级处理模块的控制单元;处理模块中的蝶形单元,用于完成每级处理模块的蝶形处理,并把处理结果送给输出模块和下一级处理模块的存储单元;
输出模块,用于从不同级处理模块选择输出结果来实现可变点数的FFT处理器。基于FPGA的高速可变点流水线FFT处理方法,包括如下步骤(I)初始设置用户根据进行FFT运算的序列需要的长度,设置可变点流水线FFT处理器需要参与运算的处理模块级数;⑵接收数据多级处理模块的第一级处理模块接收待进行FFT运算的输入数据序列;(3)数据存储第一级处理模块的存储单元接收待进行FFT运算的输入数据序列,在第一级处理模块的控制单元的控制下,将待进行FFT运算的输入数据序列存入到“写”状态的存储器组;第一级处理模块的存储单元中的数据选择器将“读”状态的存储器组的输出数据传送给第一级处理模块的蝶形单元;(4)蝶形处理处理模块中的蝶形单元采用蝶形公式对存储单元传来的数据进行处理,得到蝶形处理结果;(5)判断FFT运算是否结束5a)将已经参与运算的处理模块个数相加,得到的结果作为已经级联的处理模块数目;5b)判断已经级联的处理模块数目是否与步骤⑴中所设置的需要参与FFT运算的处理模块级数相等,如果是,则认为FFT运算完成,执行步骤¢)的操作;否则,认为运算未完成,执行步骤5c)的操作;5c)前级处理模块中的蝶形单元将蝶形处理结果通过数据总线传输给本级处理模块中的存储单元,在本级控制单元控制下存入“写”状态存储器组;本级处理模块的存储单元中的数据选择器将“读”状态的存储器组的输出数据传送给本级处理模块的蝶形单元,执行步骤⑷的操作;(6)结果输出输出模块接收多级处理模块的运算结果,进行倒位序后,输出最终结果。本发明与现有技术相比具有以下特点第一,由于本发明采用改进的基-2算法实现FFT处理器,可有效地克服现有技术基于原址运算的基-2FFT处理器寻址复杂、模块可移植性差的问题,使得本发明的存储控制逻辑简单、模块的可移植性高。第二,由于本发明采用流水线的工作方式,可有效地克服现有技术采用循环处理方式的FFT处理器无法实时处理数据的问题,使得本发明可实时快速处理数据。第三,由于本发明采用逐级位扩展的定点运算方式,使用乘法器实现蝶形运算处理,可有效克服现有技术基于CORDIC的FFT处理器处理周期多、数据精度差的问题,使得本发明处理周期少、数据结果精度高。


图I为本发明处理器的整体结构框图2为本发明处理器存储单元的结构框图;图3为本发明处理器控制单元的结构框图;图4为本发明处理器蝶形单元的结构框图;图5为本发明处理 器输出模块的结构框图。图6为本发明处理方法的流程图。
具体实施例方式下面结合附图对本发明的FFT处理器做进一步的描述。参照附图1,本发明的可变点流水线FFT处理器包括多级处理模块和一级输出模块,多级处理模块和输出模块以流水线方式级连;处理模块中的存储单元与控制单元、蝶形单元通过数据总线和控制总线相连;多级处理模块的总级联数由用户进行FFT运算的序列的最大长度决定(序列长度为2的整数幂),本实施例中处理模块的总级数为10,可处理的最长数据序列为1024点,通过设置需要参与运算的处理模块级数可实现2 1024点的FFT运算处理。比如对于512点的数据序列进行FFT运算,则需要9级处理模块参与运算,每一级处理模块接收前一级处理模块的处理结果,进行蝶形处理后,将处理结果输出给下一级处理单元,经过9级处理模块的蝶形处理,输出模块将第9级处理模块的处理结果作为最终结果输出。下面以本实施例1024可变点流水线FFT处理器为例,结合附图6对本发明基于FPGA的高速可变点FFT处理方法做进一步描述,其步骤如下步骤I.接收数据和级数选择信号当使能信号(en)有效(高电平有效)时,FFT处理器开始接收待进行FFT运算的输入数据序列和级数选择信号(num)。步骤2.数据存储第一级处理模块接收输入数据序列和级数选择信号,在第一级处理模块的控制单元的控制下将输入数据顺序存入存储单元的“写状态”存储器组中,存储单元的数据选择器将“读状态”的存储器组的数据传给处理模块的蝶形单元。为了实现数据的实时处理,存储单元中的存储器分为两组构成“乒乓”结构,两组存储器在任意时刻都有一组存储器为“读状态”,而一组存储器为“写状态”;由于输入的是复数数据,其实部和虚部分开存储,所以两组存储器分别有一个实部存储器和一个虚部存储器,参照附图2。实施例中存储单元中的存储器调用FPGA中的双口 RAM核,每次可以读或写两个数据,双口 RAM的存储深度与FFT处理器能处理的最大点数相同,本实施例中为1024深度。控制单元产生双口 RAM核的读/写地址以及读/写使能信号;控制单元包括一个计数器、一个信号产生器和一个信号选择器,参照附图3。当处理模块的输入使能(en)有效时计数器开始计数;信号产生器接收计数器的计数值,进行移位和位拼接操作,产生一系列对应不同点数FFT的双口 RAM的使能信号和读/写地址;级数选择信号(num)控制信号选择器从信号产生器产生的一系列使能信号和读/写地址中选择当前需要的RAM使能信号和读/写地址。控制单元将输入使能信号(en)延迟若干个周期传递给下一级处理模块,延迟的周期数为从本级存储单元取数据开始到本级处理模块的数据处理结束所消耗的周期数;
步骤3.蝶形处理处理模块中的蝶形单元采用蝶形公式对存储单元传来的数据进行处理,得到蝶形处理结果;蝶形公式表述如下
权利要求
1.基于FPGA的高速可变点FFT处理器,包括多级处理模块和一级输出模块,多级处理模块和输出模块以流水线方式级连;所述处理模块中的存储单元与控制单元、蝶形单元通过数据总线和控制总线相连;所述输出模块中的存储单元与控制单元、输出选择单元通过数据总线和控制总线相连; 所述处理模块中的存储单元,用于存储处理模块的输入数据; 所述处理模块中的控制单元,用于控制和协调本级处理模块的存储单元、蝶形单元和下一级处理模块的控制单元; 所述处理模块中的蝶形单元,用于完成每级处理模块的蝶形处理,并把处理结果送给输出模块和下一级处理模块的存储单元; 所述输出模块,用于从不同级处理模块选择输出结果来实现可变点数的FFT处理器。
2.根据权利要求书I所述的基于FPGA的高速可变点FFT处理器,其特征在于,多级处理模块的总级联数由用户进行FFT运算的序列的最大长度决定。
3.根据权利要求书I所述的基于FPGA的高速可变点FFT处理器,其特征在于,所述的存储单元包括四个存储器和一个数据选择器,四个存储器分为两组构成“乒乓”结构,同组的数据存储器又分为一个实部存储器和一个虚部存储器;实部存储器、虚部存储器通过各自的数据总线分别与数据选择器相连,数据选择器从两组存储器中选择其中一组的数据输出给蝶形单元。
4.根据权利要求书I所述的基于FPGA的高速可变点FFT处理器,其特征在于,所述控制单元包括一个计数器、一个信号产生器和一个信号选择器,计数器和信号产生器相连,信号产生器和信号选择器相连。
5.基于FPGA的高速可变点FFT处理方法,包括如下步骤 (1)初始设置 用户根据进行FFT运算的序列需要的长度,设置可变点流水线FFT处理器需要参与运算的处理模块级数; (2)接收数据 多级处理模块的第一级处理模块接收待进行FFT运算的输入数据序列; (3)数据存储 第一级处理模块的存储单元接收待进行FFT运算的输入数据序列,在第一级处理模块的控制单元的控制下,将待进行FFT运算的输入数据序列存入到“写”状态的存储器组;第一级处理模块的存储单元中的数据选择器将“读”状态的存储器组的输出数据传送给第一级处理模块的蝶形单元; (4)蝶形处理 处理模块中的蝶形单元采用蝶形公式对存储单元传来的数据进行处理,得到蝶形处理结果; (5)判断FFT运算是否完成 5a)将已经参与运算的处理模块个数相加,得到的结果作为已经级联的处理模块数目; 5b)判断已经级联的处理模块数目是否与步骤(I)中所设置的需要参与FFT运算的处理模块级数相等,如果是,则认为FFT运算完成,执行步骤¢)的操作;否则,认为运算未完成,执行步骤5c)的操作; 5c)前级处理模块中的蝶形单元将蝶形处理结果通过数据总线传输给本级处理模块中的存储单元,在本级控制单元控制下存入“写”状态存储器组;本级处理模块的存储单元中的数据选择器将“读”状态的存储器组的输出数据传送给本级处理模块的蝶形单元,执行步骤⑷的操作; (6)结果输出 输出模块接收多级处理模块的运算结果,进行倒位序后,输出最终结果。
6.根据权利要求书5所述的基于FPGA的高速可变点FFT处理方法,其特征在于,所述步骤(4)中的蝶形公式表述如下 K2/) = x(i) + x(i+^)xW;;y(2i+1) = x(i) - x(i+nZ7)X W;; 其中,y代表处理模块输出的数据序列,2i和2i+l分别代表处理模块的输出数据I (2i)和y(2i+l)在输出数据序列中的对应位置,i = O,1,2,…,N/2, N为FFT处理器处理的数据点数,X代表处理模块输入的数据序列,i和i+N/2分别代表处理模块的输入数据x(i)和x(i+N/2)在输入数据序列中的对应位置,代表旋转因子。
全文摘要
本发明公开一种基于FPGA的高速可变点FFT处理器及其处理方法,本发明的FFT处理器包括多级处理模块和一级输出模块,多级处理模块和输出模块以流水线方式级连。本发明处理方法的具体步骤为1、初始设置;2、接收数据;3、数据存储;4、蝶形处理;5、判断FFT运算是否完成;6、结果输出。本发明主要解决现有FFT处理器控制复杂,模块可移植性差和硬件实现困难的问题;通过使用改进结构的基-2算法,本发明FFT处理器的每级结构固定,控制逻辑简单,模块可移植性强,很适合在单片FPGA中实现,同时可以获得高速度、高精度的特性。
文档编号G06F17/14GK102945224SQ20121036455
公开日2013年2月27日 申请日期2012年9月18日 优先权日2012年9月18日
发明者马佩军, 谢辉辉, 舒浩, 史江义, 田映辉, 邸志雄, 汤海华 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1