基于FPGA实现并行结构FFT处理器的方法.pdf

上传人:Y94****206 文档编号:1025606 上传时间:2018-03-26 格式:PDF 页数:12 大小:452.20KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910054018.9

申请日:

2009.06.26

公开号:

CN101582059A

公开日:

2009.11.18

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 17/14申请公布日:20091118|||实质审查的生效IPC(主分类):G06F 17/14申请日:20090626|||公开

IPC分类号:

G06F17/14

主分类号:

G06F17/14

申请人:

上海华魏光纤传感技术有限公司

发明人:

黄 正; 刘 亮; 皋 魏; 席 刚; 周正仙; 仝芳轩

地址:

201700上海市青浦区赵屯镇赵中路31弄2号云峰大楼701室B

优先权:

专利代理机构:

上海思微知识产权代理事务所

代理人:

郑 玮

PDF下载: PDF下载
内容摘要

本发明公开了一种基于FPGA实现并行结构FFT处理器的方法,用于进行N点的FFT运算,FPGA包含多个专用乘法器、多个大量块RAM、以及多个逻辑门,包括如下步骤:(1)将N点等分为M段,每段具有N/M个点;(2)将N点的FFT运算,转化为M段(每段N/M个点)FFT运算的表达式;(3)提取步骤(2)所得表达式中各M段FFT运算表达式的系数,用专用乘法器、大量块RAM、及逻辑门通过所述FPGA内部电路实现系数与对应各M段FFT运算结果乘积,再将各段的乘积结果求和得到N点的FFT运算结果。本发明把长序列分裂成较短序列,有效提高了长序列FFT的处理速度和系统吞吐量。

权利要求书

1、  一种基于FPGA实现并行结构FFT处理器的方法,用于进行N(N为2的k次幂,或不足k次幂,将序列补O使N变为2的k次幂,k为正整数)点的FFT运算,所述FPGA包含多个专用乘法器、多个大量块RAM、以及多个逻辑门,其特征在于,包括如下步骤:
(1)将所述N点等分为M段,每段具有N/M个点;
(2)将所述N点的FFT运算,转化为所述M段(每段N/M个点)FFT运算的表达式;
(3)提取步骤(2)所得表达式中各M段FFT运算表达式的系数,用所述专用乘法器、大量块RAM、及逻辑门通过所述FPGA内部电路实现所述系数与对应各M段FFT运算结果乘积,再将所述各段的乘积结果求和得到所述N点的FFT运算结果。

2、
  如权利要求1所述的基于FPGA实现并行结构FFT处理器的方法,其特征在于,所述的M为2,步骤(2)所述的表达式为:
X(w)=X1(w)+e-j·2πN/2X2(w),]]>
X(w+N/2)=X1(w)-e-j2πN/2X2(w),]]>
其中,w=N/2,X(w)为第1段FFT运算的表达式,X(w+N/2)为第2段FFT运算表达式,X1(w)和X2(w)为N/2点的FFT运算。

3、
  如权利要求1所述的基于FPGA实现并行结构FFT处理器的方法,其特征在于,所述的M为4,步骤(2)所述的表达式为:
X(w)=[X11(w)+WN/2wX12(w)]+WNw[X21(w)+WN/2wX22(w)]X(w+N/4)=[X11(w)-WN/2wX12(w)]+WN(w+N/4)[X21(w)-WN/2wX22(w)]X(w+2N/4)=[X11(w)+WN/2wX12(w)]-WNw[X21(w)+WN/2wX22(w)]X(w+3N/4)=[X11(w)-WN/2wX12(w)]-WN(w+N/4)[X21(w)-WN/2wX22(w)]]]>
其中,X(w)为第1段FFT运算的表达式,X(w+N/4)为第2段FFT运算的表达式,X(w+2N/4)为第3段FFT运算的表达式,X(w+3N/4)为第4段FFT运算的表达式,X11(w)、X12(w)、X21(w)和X22(w)分别为N/4点的FFT运算,WN/2w、WNw和WN(w+N/4)为三个旋转因子表。

说明书

基于FPGA实现并行结构FFT处理器的方法
技术领域
本发明涉及一种FFT实现方法,尤其涉及一种基于FPGA实现并行结构FFT处理器的方法。
背景技术
快速傅里叶变换(FFT,即Fast Fourier Transform)在数字信号处理领域有着非常广泛的应用,但长序列FFT运算量很大,实现比较困难。随着高速器件的发展,关于如何快速实现长序列FFT这方面的研究很多,各种各样的实现方法也相继出现。例如文献(Ananth Gramam,AnshulGupta,George Karypi s.Introduction to ParallelComputing,SecondEdition[M],Pearson Education,Harlow,England,2003:245-250)提到了使用多个专用芯片来构成并行结构以快速实现长序列FFT,但这种方法是基于专用芯片的,灵活性不足。近年来元件可编程逻辑门阵列(FPGA,即Field Programmable Gate Array)器件发展迅速,其可编程重构特性使得它在许多领域得到了越来越广泛的应用。Xilinx公司Virtex-II系列FPGA内部集成了大量专用乘法器(Block Multiplier)、大量块RAM(Block RAM)以及丰富的逻辑门资源,这使得它非常适合实现FFT这种需要大量乘法器、大量块RAM和寄存器的设计。
发明内容
本发明所要解决的技术问题是提供一种基于FPGA实现并行结构FFT处理器的方法,它可以通过简单的电路结构提高长序列FFT的处理速度和系统吞吐量(Throughput)。
为了解决以上技术问题,本发明提供了一种基于FPGA实现并行结构FFT处理器的方法,用于进行N(N为2的k次幂,或不足k次幂,将序列补0使N变为2的k次幂,k为正整数)点的FFT运算,所述FPGA包含多个专用乘法器、多个大量块RAM、以及多个逻辑门,包括如下步骤:
(1)将所述N点等分为M段,每段具有N/M个点;
(2)将所述N点的FFT运算,转化为所述M段(每段N/M个点)FFT运算的表达式;
(3)提取步骤(2)所得表达式中各M段FFT运算表达式的系数,用所述专用乘法器、大量块RAM、及逻辑门通过所述FPGA内部电路实现所述系数与对应各M段FFT运算结果乘积,再将所述各段的乘积结果求和得到所述N点的FFT运算结果。
因为本发明把长序列分裂成较短序列,并由多个FFT单元并行实现短序列的FFT,最后用FPGA内部一个特定结构的运算电路来处理各单元的计算结果,从而得到最终的结果,有效提高了长序列FFT的处理速度和系统吞吐量(Throughput)。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细说明。
图1是N=16按时间抽取法(DIT)的基-2FFT的运算流程图;
图2是本发明四路并行的基-2 DIT FFT实现框图。
具体实施方式
本发明从理论上分析并设计一种基于FPGA实现的并行FFT处理器结构——把长序列分裂成较短序列,并由多个FFT单元并行实现短序列的FFT,最后用FPGA内部一个特定结构的运算电路来处理各单元的计算结果,从而得到最终的结果。
基于FPGA实现并行结构FFT处理器的方法,用于进行N(N为2的k次幂,或不足k次幂,将序列补0使N变为2的k次幂,k为正整数)点的FFT运算,所述FPGA包含多个专用乘法器、多个大量块RAM、以及多个逻辑门,包括如下步骤:
(1)将所述N点等分为M段,每段具有N/M个点;
(2)将所述N点的FFT运算,转化为所述M段(每段N/M个点)FFT运算的表达式;
(3)提取步骤(2)所得表达式中各M段FFT运算表达式的系数,用所述专用乘法器、大量块RAM、及逻辑门通过所述FPGA内部的电路实现所述系数与对应各M段FFT运算结果乘积,再将所述各段的乘积结果求和得到所述N点的FFT运算结果。
如图1显示了一个标准的按时间抽取(DIT)的N=16点FFT运算流程图,由图1我们可观察到最后两级之前的数据流程在水平上明显地分成四个独立单元(如图中虚线所示),每个单元独立地实现点的FFT,从而构成一个四路并行的结构。因此,我们可以用四个点的FFT单元来并行计算N点的FFT,即所谓并行结构的FFT,然后设计一个特定结构的运算电路来处理最后两级。下面将详细描述如何设计这个的电路。
本发明的重点是设计一个适合于FPGA实现的并行FFT处理器,其关键是设计前面提到的特定结构的运算电路,而标准的FFT单元设计将不在这里阐述。对于长度为N的序列x(n),其中N为2的k次幂,或不足k次幂,将序列补0使N变为2的k次幂,k为正整数(例如当N=15时,将序列x(n)后补一个0,则原序列的长度N变为16,即24)。设其对应的FFT结果为N点序列X(w),那么有
X(w)=Σn=0N-1x(n)WNwn---(1)]]>
其中,WN=e-j2π/N,即所谓的旋转因子(twiddle-factor)
为了便于理解,我们按库利-图基算法[2]把输入序列x(n)按n分裂成奇偶两组,即
x1(r)=x(2r)x2(r)=x(2r+1)---(2)]]>
其中r=0,1,2,...,N/2-1,那么有
X(w)=Σn=0N-1x(n)WNwn=Σr=0N/2-1x(2r)WN2rw+Σr=0N/2-1x(2r+1)WN(2r+1)w=Σr=0N/2-1x1(r)(WN2)rw+WNwΣr=0N/2-1x2(r)(WN2)rw]]>
WN2=e-j·2πN·2=e-j·2πN/2=WN/2,]]>则上式可表示成
X(w)=Σr=0N/2-1x1(r)WN/2rw+WNwΣr=0N/2-1x2(r)WN/2rw=X1(w)+WNwX2(w)---(3)]]>
式中X1(w)和X2(w)分别是x1(r)和x2(r)的FFT(点)。由式(3)看出,一个N点的FFT已分解成两个点的FFT,它们按式(3)来计算一个N点的FFT。然而,x1(r)、x2(r)、X1(w)和X2(w)都是点序列,即r,w满足r,w=0,1,2...,N/2-1。但X(w)却有N个点,而利用(3)式计算得到的只是X(w)的前半部分的值,要用X1(w)和X2(w)来表达X(w)全部的值还需要用到系数的周期性,即WN/2rw=WN/2r(w+N/2),]]>这样可以得到
X1(N/2+w)=Σr=0N/2-1x1(r)WN/2r(N/2+w)=Σr=0N/2-1x1(r)WN/2rw=X1(w)---(4)]]>
同理X2(N/2+w)=X2(w)            (5)
再考虑到WNw的对称性WN(N/2+w)=WNN/2WNw=-WNw---(6)]]>
由式(3)和(6)可得到如下的关系式:
X(w+N/2)=X1(w)-WNwX2(w)---(7)]]>
其中w=0,1,2,...,N/2-1
这样,只需求出0到区间的所有X1(w)和X2(w)值,即可求得到(N-1)区间内所有的X(w)值。同理,若把x1(r)和x2(r)也按奇偶各分成两组,即
x11(r)=x(4r)x12(r)=x(4r+2)x21(r)=x(4r+1)x22(r)=x(4r+3)---(8),]]>
其对应的FFT为X11(w)=DFT[x11(r)]X12(w)=DFT[x12(r)]X21(w)=DFT[x21(r)]X22(w)=DFT[x22(r)]---(9)]]>
其中r,w=0,1,2,...,N/4-1,采用与前面相似的推导方法,可得到如下关系式
X1(w)=X11(w)+WN/2wX12(w)X1(w+N/4)=X11(w)-WN/2wX12(w)---(10)]]>
X2(w)=X21(w)+WN/2wX22(w)X2(w+N/4)=X21(w)-WN/2wX22(w)---(11)]]>
其中r,w=0,1,2,...,N/4-1,把式(10)和式(11)代入式(3)和式(7),可得到如下关系式
X(w)=[X11(w)+WN/2wX12(w)]+WNw[X21(w)+WN/2wX22(w)]X(w+N/4)=[X11(w)-WN/2wX12(w)]+WN(w+N/4)[X21(w)-WN/2wX22(w)]X(w+2N/4)=[X11(w)+WN/2wX12(w)]-WNw[X21(w)+WN/2wX22(w)]X(w+3N/4)=[X11(w)-WN/2wX12(w)]-WN(w+N/4)[X21(w)-WN/2wX22(w)]---(12)]]>
其中,w=0,1,2,...,N/4-1,这样长度为N点的序列x(n)的FFT的值X(w)可由长度为N/4点的序列X11(w)、X12(w)、X21(w)和X22(w)通过式(12)计算出来:先由4个相同的计算长度为的FFT单元并行计算X11(w)、X12(w)、X21(w)和X22(w),再用一个由三个旋转因子表(WN/2w、WNw和WN(w+N/4))、四个复数乘法器及一些加减法器组成特定结构的运算电路,计算最后两级,其结果四路并行输出,如图2所示。
当然,还可以按上面的方法继续把N点序列等分下去以增加并行的路数,然而这不仅增加硬件资源的消耗,而且特定结构的运算电路也变得更复杂。
图2给出的是并行FFT处理器的核心电路框图,而实际应用时还应把数据输入输出考虑进去。当四路并行时,四个FFT处理单元应当同步工作,这就需要把待处理的长序列先分裂成四个较短序列再并行送入四个输入存储单元中,然后四个独立的FFT处理单元并行地读走各自的数据;对于输出,由图2可知,把四路输出数据分别存储到四个输出存储器中,每个存储器存储的是最终结果的一部分,把它们首尾相连起来就是一个完整的序列。
上面所述的并行FFT处理器已在我们自制的带有Virtex-II序列FPGA XC2V3000实验板DASQ_USB_V1上得到了验证。长度为2048点的实序列分裂成四路输入FPGA,四个并行FFT单元采用的是Xilinx FPGA开发工具ISE6.1自带的免费FFTIP核,它可实现流水输入输出。一个长度为N=2048序列的FFT验证结果如表1所示,这里输入输出数据表示为定点数,字长为16位。
需要说明的是FFT IP核实现的是按时间抽取的(DIT)顺序输入输出的FFT,数据在等待时间(Latency)内充满流水线,之后处理器并行流水输出运算结果。另外,这里吞吐量表示为:
吞吐量=时钟频率×并行路数。
表一

表1为在XC2V3000-6上实现N=2048序列的定点FFT的性能,分别列举了在单路、双路和四路并行的情况下,处理器所消耗的资源(Resources)、能达到的时钟频率(Maximum Speed)、等待时间(Latency)、变换时间(Transform Time)及系统吞吐量。由表1可看出,2路并行时所用Slices资源比单路增加不到1倍但处理速度和吞吐量却可以提高1倍;而4路并行时所用Slices资源比单路增加3倍左右但变换时间只有单路的四分之一,而系统吞吐量则达到单路的4倍。这说明了如果资源足够就可以不断地增加并行的路数以获得更快的处理速度和更大的吞吐量。
本发明从离散傅里叶变换公式出发详细推导出可并行实现的FFT公式,设计了适合于FPGA实现的并行结构的FFT处理器,这种处理器把长序列分裂成几个较短的序列,然后并行送入几个可实现短序列FFT的处理单元并行地做FFT,各路FFT处理单元的计算结果并行送入一个特定结构的运算电路进行运算,然后并行输出最终的结果。实验结果表明,这种并行结构的FFT处理器可线性提高处理速度和系统吞吐量。由于资源所限本文只验证了两路并行和四路并行的情况,实际上如果处理速度要求更高时,还可以增加并行的路数,对系统进行扩展。

基于FPGA实现并行结构FFT处理器的方法.pdf_第1页
第1页 / 共12页
基于FPGA实现并行结构FFT处理器的方法.pdf_第2页
第2页 / 共12页
基于FPGA实现并行结构FFT处理器的方法.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《基于FPGA实现并行结构FFT处理器的方法.pdf》由会员分享,可在线阅读,更多相关《基于FPGA实现并行结构FFT处理器的方法.pdf(12页珍藏版)》请在专利查询网上搜索。

本发明公开了一种基于FPGA实现并行结构FFT处理器的方法,用于进行N点的FFT运算,FPGA包含多个专用乘法器、多个大量块RAM、以及多个逻辑门,包括如下步骤:(1)将N点等分为M段,每段具有N/M个点;(2)将N点的FFT运算,转化为M段(每段N/M个点)FFT运算的表达式;(3)提取步骤(2)所得表达式中各M段FFT运算表达式的系数,用专用乘法器、大量块RAM、及逻辑门通过所述FPGA内部电。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1