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

文档序号:6377817阅读:194来源:国知局
专利名称:基于fpga的高速定点fft处理器及其处理方法
技术领域
本发明涉及数字信号处理技术领域,更进一步涉及通信和雷达信号处理技术领域中基于现场可编程门阵列(Field Programmable Gate Array, FPGA)的高速定点快速傅里叶变换(Fast Fourier Transform, FFT)处理器及其处理方法。本发明可使数据在现场可编程门阵列中进行快速傅里叶变换实时处理时提高数据处理速率和系统性能。
背景技术
FFT运算的实现方式种类繁多,既可以用软件实现,也可以用硬件实现。由于一般软件都运行在PC机或服务器等大型计算设备上,其计算速度很慢,而且设备体积庞大,不能满足雷达、信号分析等应用领域对FFT处理快速、便携的要求。所以,FFT的实现一般多采用嵌入式的硬件系统如单片机、DSP(Digital Signal Process)处理器,但是随着技术的进步,人们对于雷达、信号分析这些应用领域的要求也越来越高,这些嵌入式硬件系统的计算速度已不能满足这些应用领域的要求,难以与高速的A/D器件匹配。而面向DSP的各类专用集成电路(ASIC)芯片可以解决并行性和速度的问题,但其高昂的开发费用、耗时的设计周期和不灵活的纯硬件结构,使得基于DSP的解决方案日益失去其实用性。FPGA是Field Programmable Gate Array的缩写,即现场可编程门阵列。相比于PAL、GAL、CPLD等可编程器件,其具有更高的集成度、更强的逻辑实现能力和更好的设计灵活性。并且随着集成电路技术的快速发展,FPGA集成度迅速增加已进入千万门级,并且它提供了丰富的片上资源,降低了设计成本,缩短了设计周期。采用并行度更大、速度更快、灵活度更高的FPGA芯片来实现复杂数字系统的设计开发已成为必然趋势。而在FPGA中对FFT运算进行实现,不但要求运算速度快,而且要兼顾电路面积,两者之间要有良好的均衡。四川虹微技术有限公司拥有的专利技术“一种蝶形运算FFT处理器”(申请号200810046075. 8,授权公告号CN101354700B),公开了一种用CORDIC算法实现的基4FFT运算方法,该方法使用了 CORDIC旋转算法器来实现复数的乘法。该专利技术存在的不足是,需要13个周期才能完成一次蝶形运算,数据运算的延迟较长,难以满足FFT处理器对实时性的要求,而且控制逻辑复杂,电路规模较大。杭州中科微电子有限公司申请的专利“一种实现基2FFT计算的FFT处理器”(申请号200910097236. 0,申请公告号CN101847137A),公开了一种基于模块复用方法实现的基2FFT运算方法,该方法使用两类不同的复用模块完成对数据的FFT运算。该处理器存在的不足是,数据运算的延迟较长,同时FFT处理器不能对连续的输入数据进行FFT运算,限制了 FFT处理器的应用领域。同时,上述两项专利共同存在的不足是,FFT处理器每个周期均只对两个数据进行蝶形运算,使得FFT处理器的工作频率较低,难以与高速A/D器件匹配。

发明内容
本发明的目的在于克服上述现有技术的不足,解决传统FFT处理器控制逻辑复
4杂、处理延迟较长、工作频率较低的问题,提出了一种基于FPGA的高速定点FFT处理器,并采用流水线结构方式实现对数据快速、高精度的FFT运算处理。本发明基于FPGA的高速定点FFT处理器,包括多级FFT处理模块和一级倒位序输出模块。FFT处理模块包括控制单元、数据翻转单元、存储单元及蝶形处理单元;倒位序输出模块包括控制单元、数据翻转单元及存储单元。FFT处理模块中的存储单元,通过数据总线与数据翻转单元、蝶形处理单元相连,通过控制总线与控制单元相连;FFT处理模块中的控制单元通过控制总线与数据翻转单元、蝶形处理单元相连。倒位序模块中的存储单元,通过数据总线与数据翻转单元相连,通过控制总线与控制单元相连;倒位序模块中的控制单元通过控制总线与数据翻转单元相连。FFT处理模块,对输入数据进行蝶形处理,每个时钟周期对四个相对应的数据进行两次蝶形处理,并将处理结果输出到下一级FFT处理模块或倒位序输出模块。倒位序输出模块,接收FFT处理模块的数据,并对数据进行倒位序操作,最后将结果输出。FFT处理器中多级FFT处理模块的级联数目由FFT处理器处理的数据序列长度决定。本发明基于FPGA的高速定点FFT处理方法的具体步骤如下⑴接收数据多级FFT处理模块中的第一级FFT处理模块接收待进行FFT运算的输入数据。⑵数据翻转FFT处理模块中的数据翻转单元,在控制单元的控制下,每个时钟周期对待进行FFT运算的输入数据的相对位置进行一次调整,得到调整后的数据。⑶数据存储FFT处理模块中的数据翻转单元将调整后的数据通过数据总线传输给FFT处理模块中的存储单元,在控制单元的控制下,存储单元将翻转单元的输出数据存入到“写”状态的存储器组,存储单元的数据选择器选择“读”状态的存储器组的输出数据作为待处理数据。(4)数据蝶形处理FFT处理模块中的存储单元将待处理数据通过数据总线传输给FFT处理模块中的蝶形处理单元,蝶形处理单元采用蝶形处理方法对数据进行处理,得到蝶形处理后数据。(5)判断FFT运算是否结束 5a)将已经级联的FFT处理模块个数相加,获得已经级联的处理模块数目。5b)判断已经级联的处理模块数目是否与多级FFT处理模块级联数目相等,如果是,则认为FFT运算完成,执行步骤(6)的操作;如果否,则认为FFT运算没有完成,执行步骤5c)的操作。5c)前级FFT处理模块中的蝶形处理单元将蝶形处理后数据通过数据总线传输给本级FFT处理模块中的数据翻转单元,在控制单元的控制下,数据翻转单元每个时钟周期对蝶形处理后数据的相对位置进行一次调整,得到调整后的数据,执行步骤(3)的操作。(6)处理后数据位置调整多级FFT处理模块中最后一级FFT处理模块中的蝶形处理单元,将蝶形处理后数据通过数据总线传输给倒位序输出模块中的数据翻转单元,在控制单元的控制下,数据
5翻转单元每个时钟周期对蝶形处理后数据的相对位置进行一次调整,得到调整后的处理数据。(7)调整后数据存储倒位序输出模块中的数据翻转单元,将调整后的处理数据通过数据总线传输给倒位序输出模块中的存储单元,存储单元在控制单元的控制下,将调整后的处理数据写入到数据存储器中。(8)倒位序输出倒位序输出模块中存储单元的数据选择器,在控制单元的控制下,对数据存储器中存储的数据进行倒位序操作,得到数据的倒位序输出数据。本发明与现有技术相比具有以下特点第一,由于本发明采用现场可编程门阵列(FPGA)实现整个定点FFT处理器,克服了现有技术基于DSP的FFT处理器的设计周期长、硬件成本高,使得本发明的硬件开销较小且设计周期短,可以适应于不同的通信或雷达信号处理系统。第二,由于本发明在对输入数据进行FFT运算的过程中采用流水线的工作方式,相比现有技术基于FPGA的FFT处理器,克服了 FFT处理器无法对连续数据进行FFT运算的缺陷,使得本发明提高了处理数据的吞吐量。第三,由于本发明采用多数据并行处理的方式实现FFT处理器,相比现有技术基于双数据并行处理方式,使得本发明提高了 FFT处理器的工作频率及数据处理速度。


图I为本发明处理器的方框图2为本发明处理器倒位序输出模块的方框图3为本发明处理器存储单元的方框图4为本发明处理器蝶形处理单元的方框图5为本发明处理器数据存储器的存储数据分布图6为本发明处理方法的流程图。
具体实施例方式
下面结合附图对本发明的FFT处理器做进一步的描述。
参照附图1,本发明的FFT处理器包括多级FFT处理模块和一级倒位序输出模块。
FFT处理模块和倒位序输出模块按照流水线方式通过数据总线和控制总线级联,多级FFT处理模块的级联数目由FFT处理器处理的数据序列长度决定,本实施例中,FFT处理模块的级联数目为10。FFT处理模块接收前级FFT处理模块或待进行FFT运算的输入数据,对输入数据进行蝶形处理,每个时钟周期对四个相对应的数据进行两次蝶形处理,并将处理结果输出到下一级FFT处理模块或倒位序输出模块。倒位序输出模块,接收多级FFT处理模块中最后一级FFT处理模块的输出数据,并对数据进行倒位序操作,将结果输出。FFT处理模块包括控制单元、数据翻转单元、存储单元和蝶形处理单元。其中,存储单元,通过数据总线与数据翻转单元、蝶形处理单元相连,还通过控制总线与控制单元相连;控制单元通过控制总线与数据翻转单元、蝶形处理单元相连。
参照附图2,本发明的倒位序输出模块,包括控制单元、数据翻转单元和存储单元。其中,存储单元,通过数据总线与数据翻转单元相连,通过控制总线与控制单元相连;控制单元通过控制总线与数据翻转单元相连。参照附图3,本发明的存储单元包括八个数据存储器和一个数据选择器;八个数据存储器分成两组构成“乒乓”结构,同组的数据存储器又分为两个实部存储器和两个虚部存储器分别存储数据的实部和虚部;实部存储器、虚部存储器通过各自的数据总线分别与数据选择器相连;数据存储器存储每级FFT处理模块的输入数据,数据选择器从“乒乓”存储器中选择出正确数据并调整其对应位置,将结果输出。参照附图4,本发明的蝶形处理单元包括四个处理单元和两个蝶形因子存储器;四个处理单元排列成两行两列,不同列的处理单元之间通过数据总线交叉互联,同列的处理单元通过数据总线与一个蝶形因子存储器相连,两个蝶形因子存储器通过数据总线分别与不同列的处理单元相连。下面结合附图6对本发明处理方法做进一步描述,其步骤如下步骤I.数据翻转多级FFT处理模块中的第一级FFT处理模块接收待进行FFT运算的输入数据。由于FFT运算的对称性,顺序存储的数据存储方式会造成存储器带宽利用不均衡的问题,所以本设计采用了对称翻转的存储方式。以16点数据的FFT运算为例,附图5表示的是输入数据在同组的数据存储器中的存储分布图,每隔四分之一的输入数据序列长度,输入数据在同组数据存储器中的相对存储位置会翻转一次。输入数据翻转单元,按照以上翻转规则,每个时钟周期调整输入数据的相对位置,得到调整后的数据。步骤2.数据存储FFT处理模块中的数据翻转单元将调整后的数据通过数据总线传输给FFT处理模块中的存储单元。参照附图3,本发明FFT处理器存储单元中的八个数据存储器分为RAMO数据存储器组和RAMl数据存储器组,这两组数据存储器组构成“乒乓”存储结构。每组数据存储器分为实部存储器和虚部存储器,分别存储调整后的数据的实部和虚部。另外每组数据存储器的实部存储器及虚部存储器还分别包括A存储器和B存储器两个数据存储器,对数据进行分区存储。由于本发明采用了流水线结构,所以任意时刻两组数据存储器中都有一组数据存储器为“读”状态,而另一组数据存储器为“写”状态。FFT处理模块中的存储单元将调整后的数据存入到“写”状态的存储器组。由于存储单元的输入数据已经进行了相对位置调整,为了保证存储单元输出数据的相对位置与FFT处理器的输入数据的相对位置一致,所以同组的两个存储器在读数据的时候产生地址顺序并不一致。参照附图5,同组数据存储器中的A存储器首先同时读取O区数据、2区数据,然后同时读取I区数据、3区数据存储器首先同时读取I区数据、3区数据,然后同时读取O区数据、2区数据。存储单元中的控制单元按照上述规则控制“读”状态的数据存储器组输出数据,同时数据选择器选择“读”状态的存储器组的数据输出,得到待处理数据。步骤3.数据蝶形处理FFT处理模块中的存储单元将待处理数据通过数据总线传输给FFT处理模块中的蝶形处理单元,蝶形处理单元采用蝶形处理方法对数据进行处理,得到蝶形处理后数据。蝶形处理方法的具体步骤如下
第一步,对于蝶形处理单元的输入数据,按照下式求得第一次蝶形处理的结果聊=X(i)+ X(i + N / 2) XY2 (O = X(i) - X(i + N / 2) X W;Y3 (0 = X(i + N/4) + X(i+3N/4)xW;74(z) = X(i + N / 4) - X(i+3N/4)xW^其中,Y1, γ2、y3、Y4分别表示第一次蝶形处理的输出序列,X为蝶形处理单元的输入数据序列,i、i+N/4、i+N/2、i+3N/4表示当前处理数据在输入数据序列中的对应位置,
N/4-1, N为输入数据的序列长度,为输入数据序列进行蝶形处理所需的蝶形因
子;第二步,对于第一步蝶形处理得到的结果,按照下式求得第二次蝶形处理的结果Z(4k) = Y1(Ic) + Y3(k)xW;Z(4k + 1) = Y1 (k) - Y3 (k) x W;Z(4k + 2) = Y2 (k)+Y4 (k) X W;Z (4k+ 3) = Y2(k)- Y4(k)x其中,Z表示第二次蝶形处理后的输出数据序列,4k、4k+l、4k+2、4k+3表示处理结果在输出序列中的对应位置,O ^ N/4-1, N为输入数据的序列长度,Y1^ Y2 > Y3、Y4表示第一次蝶形处理的结果,为数据进行蝶形处理所需的蝶形因子。从步骤2存储单元输出数据的读取规则中,我们可以看出存储单元输出的待处理数据在输入数据序列中的对应位置关系恰好满足蝶形处理方法对待处理数据的要求。由此,通过蝶形处理方法,得到蝶形处理后数据。步骤4.判断FFT运算是否结束由于本发明采用了流水线结构,所以本发明的FFT处理器由多级FFT处理模块和倒位序输出模块级联构成,而FFT处理模块的级联数目由FFT处理器处理的数据序列长度决定。4a)将已经级联的FFT处理模块个数相加,获得已经级联的处理模块数目。4b)判断已经级联的处理模块数目是否与多级FFT处理模块级联数目相等,如果是,则认为FFT运算完成,执行步骤5的操作;如果否,则认为FFT运算没有完成,执行步骤4c)的操作;4c)前级FFT处理模块中的蝶形处理单元将蝶形处理后数据通过数据总线传输给本级FFT处理模块中的数据翻转单元。由于存储器带宽利用不均衡的问题,与步骤I相同,数据翻转单元需要对蝶形处理后数据进行相对位置调整。同时,由于在FFT处理模块中的存储单元对数据采用了分区存储,所以使得FFT处理模块输出的蝶形处理后数据在数据序列中的对应位置不连续。FFT处理模块从数据序列的第一个数据开始先连续输出4个蝶形处理后数据然后跳过4个蝶形处理后数据再连续输出4个蝶形处理后数据,按如此规则输出一半数据序列长度的数据后再按同样方式输出另外一半数据序列长度的数据。由于上述FFT处理模块非连续的输出数据方式,本级FFT处理模块的数据翻转单元与第一级FFT处理模块的数据翻转单元不同,本级FFT处理模块的数据翻转单元每隔八分之一数据序列长度翻转一次蝶形处理后数据在同组数据存储器中的相对存储位置。本级FFT处理模块中的数据翻转单元,按照上述翻转规则,每个时钟周期对蝶形处理后数据的相对位置进行一次调整,得到调整后的数据,执行步骤3的操作;步骤5.处理后数据位置调整多级FFT处理模块中最后一级FFT处理模块中的蝶形处理单元,将蝶形处理后数据通过数据总线传输给倒位序输出模块中的数据翻转单元。由于FFT处理模块非连续的输出数据方式,倒位序输出模块中的数据翻转单元每隔八分之一数据序列长度翻转一次蝶形处理后数据在同组数据存储器中的相对存储位置。倒位序输出模块中的数据翻转单元,按照上述翻转规则,每个时钟周期对蝶形处理后数据的相对位置进行一次调整,得到调整后的处理数据;步骤6.调整后处理数据存储倒位序输出模块中的数据翻转单元,将调整后的处理数据通过数据总线传输给倒位序输出模块中的存储单元。存储单元在控制单元的控制下,将调整后的处理数据存入到“写”状态的数据存储器中;步骤7.倒位序输出对于已经处理完的存储数据,本发明的FFT处理器需要对其进行倒位序排列才能得到正确数据序列顺序的输出结果。以32点数据为例,倒位序后数据在数据序列中的对应位置与倒位序前数据在数据序列中的对应位置的映射关系如下n = {b4, b3, b2, b1; b0}r = 24X b0+23 X b^22 X V21 X b3+2°X b4其中,n表示倒位序前数据在数据序列中的对应位置,b4、b3、b2、b0分别表示η用二进制数表示时对应数据位上的数值,r表示对η进行倒位序操作后数据在数据序列中的对应位置。倒位序输出模块中存储单元的数据选择器,按照上述倒位序规则,对数据存储器中存储的数据进行倒位序操作,得到倒位序输出数据。
权利要求
1.基于FPGA的高速定点FFT处理器,包括多级FFT处理模块和一级倒位序输出模块;所述FFT处理模块中的存储单元,通过数据总线与数据翻转单元、蝶形处理单元相连,通过控制总线与控制单元相连;所述FFT处理模块中的控制单元通过控制总线与数据翻转单元、蝶形处理单元相连;所述倒位序模块中的存储单元,通过数据总线与数据翻转单元相连,通过控制总线与控制单元相连;所述倒位序模块中的控制单元通过控制总线与数据翻转单元相连; 所述的FFT处理模块,对输入数据进行蝶形处理,每个时钟周期对四个相对应的数据进行两次蝶形处理,并将处理结果输出到下一级FFT处理模块或倒位序输出模块; 所述的倒位序输出模块,接收FFT处理模块的数据,并对数据进行倒位序操作,最后将结果输出。
2.根据权利要求书I所述的基于FPGA的高速定点FFT处理器,其特征在于,所述多级FFT处理模块的级联数目由FFT处理器处理数据的序列长度决定。
3.根据权利要求书I所述的基于FPGA的高速定点FFT处理器,其特征在于,所述存储单元包括八个数据存储器和一个数据选择器;八个数据存储器分成两组构成“乒乓”结构,同组的数据存储器又分为两个实部存储器和两个虚部存储器分别存储数据的实部和虚部;实部存储器、虚部存储器通过各自的数据总线分别与数据选择器相连;数据存储器存储每级FFT处理模块的输入数据,数据选择器从“乒乓”存储器中选择出正确数据并调整其相应位置,将结果输出。
4.根据权利要求书I所述的基于FPGA的高速定点FFT处理器,其特征在于,所述蝶形处理单元包括四个处理单元和两个蝶形因子存储器;四个处理单元排列成两行两列,不同列的处理单元之间通过数据总线交叉互联,同列的处理单元通过数据总线与一个蝶形因子存储器相连,两个蝶形因子存储器通过数据总线分别与不同列的处理单元相连。
5.基于FPGA的高速定点FFT处理方法,包括如下步骤 (1)接收数据 多级FFT处理模块中的第一级FFT处理模块接收待进行FFT运算的输入数据; (2)数据翻转 FFT处理模块中的数据翻转单元,在控制单元的控制下,每个时钟周期对待进行FFT运算的输入数据的相对位置进行一次调整,得到调整后的数据; (3)数据存储 FFT处理模块中的数据翻转单元将调整后的数据通过数据总线传输给FFT处理模块中的存储单元,在控制单元的控制下,存储单元将翻转单元的输出数据存入到“写”状态的存储器组,存储单元的数据选择器选择“读”状态的存储器组的输出数据作为待处理数据; (4)数据蝶形处理 FFT处理模块中的存储单元将待处理数据通过数据总线传输给FFT处理模块中的蝶形处理单元,蝶形处理单元采用蝶形处理方法对数据进行处理,得到蝶形处理后数据; (5)判断FFT运算是否结束 5a)将已经级联的FFT处理模块个数相加,获得已经级联的处理模块数目; 5b)判断已经级联的处理模块数目是否与多级FFT处理模块级联数目相等,如果是,则认为FFT运算完成,执行步骤(6)的操作;如果否,则认为FFT运算没有完成,执行步骤5c)的操作; 5c)前级FFT处理模块中的蝶形处理单元将蝶形处理后数据通过数据总线传输给本级FFT处理模块中的数据翻转单元,在控制单元的控制下,数据翻转单元每个时钟周期对蝶形处理后数据的相对位置进行一次调整,得到调整后的数据,执行步骤(3)的操作; (6)处理后数据位置调整 多级FFT处理模块中最后一级FFT处理模块中的蝶形处理单元,将蝶形处理后数据通过数据总线传输给倒位序输出模块中的数据翻转单元,在控制单元的控制下,数据翻转单元每个时钟周期对蝶形处理后数据的相对位置进行一次调整,得到调整后的处理数据; (7)调整后数据存储 倒位序输出模块中的数据翻转单元,将调整后的处理数据通过数据总线传输给倒位序 输出模块中的存储单元,存储单元在控制单元的控制下,将调整后的处理数据写入到数据存储器中; (8)倒位序输出 倒位序输出模块中存储单元的数据选择器,在控制单元的控制下,对数据存储器中存储的数据进行倒位序操作,得到数据的倒位序输出数据。
6.根据权利要求书5所述的基于FPGA的高速定点FFT处理方法,其特征在于,所述步骤(4)的蝶形处理方法的具体步骤如下 第一步,对于蝶形处理单元的输入数据,按照下式求得第一次蝶形处理的结果Υχ( ) = X(i) + X(i + N / 2)x W义Y2 (O = X(i) - X(i + N / 2) X W; F3(Z) = X(i + N/4) + X(i+3N/4)xW; 74(0 = X(i + N/4)-X(i+3N/4)xW;其中,Yp Y2、Y3、Y4分别表示第一次蝶形处理的输出序列,X为蝶形处理单元的输入数据序列,i、i+N/4、i+N/2、i+3N/4表示当前处理数据在输入数据序列中的对应位置,N/4-1, N为输入数据的序列长度,为输入数据序列进行蝶形处理所需的蝶形因子; 第二步,对于第一步蝶形处理得到的结果,按照下式求得第二次蝶形处理的结果 Z(4^)-Y1(k)+Y3(k)xW^Z(4A: + l) = Y1(k)-Y3(k)xW;Z(4A: + 2) = Y2(k) + Y4(k)xW;Z(4A: + 3) = Y2(k)-Y4(k)xW; 其中,Z表示第二次蝶形处理后的输出数据序列,4k、4k+l、4k+2、4k+3表示处理结果在输出序列中的对应位置,O ^ N/4-1, N为输入数据的序列长度,Y1^ Y2 > Y3、Y4表示第一次蝶形处理的结果,为数据进行蝶形处理所需的蝶形因子。
全文摘要
本发明公开一种基于FPGA的高速定点FFT处理器及其处理方法,本发明的FFT处理器包括多级FFT处理模块和一级倒位序输出模块。本发明处理方法的具体步骤为1、接收数据;2、数据翻转;3、数据存储;4、数据蝶形处理;5、判断运算是否结束;6、处理后数据位置调整;7、调整后数据存储;8、倒位序输出。本发明采用了流水线结构及多数据并行处理方法,实现了高速、高精度的FFT运算,解决了基于DSP的FFT处理器设计周期长、硬件成本高及无法并行处理数据的缺陷,同时提高了FFT处理器的工作频率及数据处理速率。
文档编号G06F17/14GK102929837SQ20121036456
公开日2013年2月13日 申请日期2012年9月18日 优先权日2012年9月18日
发明者史江义, 舒浩, 谢辉辉, 马佩军, 田映辉, 邸志雄, 汤海华 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1