基于FPGA实现高速FFT处理的方法.pdf

上传人:xia****o6 文档编号:1031569 上传时间:2018-03-27 格式:PDF 页数:13 大小:701.48KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010278997.9

申请日:

2010.09.10

公开号:

CN101937424A

公开日:

2011.01.05

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 17/14申请公布日:20110105|||实质审查的生效IPC(主分类):G06F 17/14申请日:20100910|||公开

IPC分类号:

G06F17/14

主分类号:

G06F17/14

申请人:

南京航空航天大学

发明人:

王旭东

地址:

210016 江苏省南京市御道街29号

优先权:

专利代理机构:

南京经纬专利商标代理有限公司 32200

代理人:

许方

PDF下载: PDF下载
内容摘要

本发明公布了一种基于FPGA实现高速FFT处理的方法,所述方法如下:离散傅里叶变换X(k)与输入信号x(n)构成了离散傅里叶变换对,都是长为N的复序列,将离散傅里叶变换X(k)与输入信号x(n)分解为短序列,偶数项为一组,奇数项为一组,得到两个N/2点的子序列。依次类推可得离散傅里叶变换的快速算法FFT,本发明通过改进FFT算法结构,得到一种高速并行FFT,从而使得FFT运算速度较传统方法有了很大提高。

权利要求书

1: 一种基于 FPGA 实现高速 FFT 处理的方法, 其特征在于离散傅里叶变换 X(k) 与输入 信号 x(n) 构成了离散傅里叶变换对, 都是长为 N 的复序列, 序列长度 N 是 2 的整数幂次方, M 即N=2, 其中 M 为正整数, 其中 k、 n 分别表示离散傅里叶变换 X(k) 与输入信号 x(n) 的序 列; 首先将离散傅里叶变换 x(n) 分解为二组, 偶数项为一组, 奇数项为一组, 得到两个 N/2 点的子序列, 即: x1(r) = x(2r), x2(r) = x(2r+1), (0 ≤ r ≤ N/2-1) (1) 利用 式 (2) 可以写成 : 其中 X1(k) 和 X2(k) 分别为 x1(r) 和 x2(r) 的 DFT。

说明书


基于 FPGA 实现高速 FFT 处理的方法

    【技术领域】
     本发明公开了一种应用 FPGA 芯片实现高速 FFT 处理的方法, 它涉及数字信号处理领域。 背景技术 DFT(Discrete Fourier Transfer) 及其快速算法 FFT 是数字信号处理领域的核 心组成部分, FFT 算法多种多样, 按数据抽取方式不同又可分为基 2、 基 4 等。各算法优缺点 视不同制约因素而不同。FFT 实现方法也多种多样, 可以用软件实现, 也可以用硬件实现。 用软件在 PC 机或工作站上实现则计算速度很慢, 一般多结合具体系统用硬件实现, 例如用 单片机或 DSP(DigitalSignal Process) 处理器实现, 但是速度仍然不能满足某些应用领 域的需求, 难以与快速的 A/D 器件匹配。在雷达、 电子对抗等应用领域追求运算速度, 对实 时性要求非常高。FPGA 是英文 Field Programmable Gate Array 的缩写, 即现场可编程门 阵列, 它是在 PAL(Programmable Array Logic)、 GAL(GateArray Logic)、 EPLD(Embedded Programmable Logic Device) 等可编程器件的基础上进一步发展的产物, 具有更高的集成 度、 更强的逻辑实现能力和更好的设计灵活性。FPGA 由许多独立的可编程逻辑模块组成, 用户可以通过编程将这些模块连接起来实现不同的设计, 它是作为专用集成电路 (ASIC, Application Specific Integrated Chip) 领域中的一种半定制电路而出现的, 既解决了 定制电路的不足, 又克服了原有可编程器件门电路数有限的缺点。近些年来, FPGA 技术发 展迅速。一方面, 各种大容量、 高性能、 低功耗的可编程逻辑器件不断推出。另一方面, 出现 了许多 FPGA 设计辅助工具, 这些工具大大提高了以 FPGA 为基础的新型集成电路的设计效 率, 使更低成本、 更短周期的复杂数字系统开发成为可能。
     数字信号处理中, 设输入信号 X(n) 是长为 N 的复序列, 其 DFT(DiscreteFourier Transfer) 定义为 :
     其 IDFT(Inverse Discrete Fourier Transfer) 定义为 :其中,式 (1) 称为离散傅里叶正变换, 式 (2) 称为离散傅里叶反变换,x(n) 与 X(k) 构成了离散傅里叶变换对。
     根据上述公式, 计算一个 X(k), 需要 N 次复数乘法和 N-1 次复数加法, 而计算全部 2 X(k)(0 ≤ k ≤ N-1), 共需要 N 次复数乘法和 N(N-1) 次复数加法, 直接计算全部 X(k) 共需 2 2 要 4N 次实数乘法和 2N(2N-1) 次实数加法。可见工作量与 N 成正比, N 越大, 运算量将显 著增加。
     参考文献 :
     [1]Cooley J W, Tukey.An algorithm for the machine calculationof complexFourier series[J].Math.Compute, 1965, Vol.19, No.4, p297 ~ 301
     [2] 任淑艳 . 应用 VHDL 语言的 FFT 算法实现 [J], 哈尔滨理工大学学报, Vol.8, No.6, 2003.12, P.24-26
     [3] 刘 朝 晖, 韩 月 秋 . 用 FPGA 实 现 FFT 的 研 究 [J]. 北 京 理 工 大 学 学 报 [J], Vol.19, No.2, 1999.4, P.234-238
     [4] 王旭东, 刘渝 . 全并行结构 FFT 及其 FPGA 实现 [J]. 南京航空航天大学学报, Vol.38 No.1 Feb.2006, p96-100
     [5]Lo Sing Cheng, Ali Miri, Tet Hin Yeap.Efficient FPGAimplementation of FFT based Multipliers[C], Proc.IEEE CCECE/CCGEI, Saskatoon, May 2005, pp.1300-1303
     [6]Ayan Banerjee, Anindya Sundar Dhar, Swapna Banerjee.FPGArealization of a CORDIC based FFT processor for biomedical signalprocessing[J] , Microprocessor and Microsystems 2001, 25(1), pp.131-142
     [7]PEREZ-PASCUAL ,A. ,SANSALONI ,T. ,and VALLS ,J.On-lineradix-2 butterflies on FPGA[C].Proc.WSES International Conferenceon Speech, signal and image processing, 2002, pp.2201-2205 [8]PEREZ-PASCUAL , A. , SANSALONI , T. , and VALLS , J.FPGA basedradix-4 butterflies for HiperLAN2[C].Proc.IEEE InternationalSymposium on Circuits and Systems(ISCAS 2002), 2002, pp.III.277-III.280
     [9]Z.Szadkowski.16-point Discrete Fourier transform based onthe Radix-2 FFT algorithm implemented into Cyclone FPGA as the UHERCtrigger for horizontal air showers[C], Proc.of the 29th ICRC, Pune, 2005.
     [10]Wen-Chang Yeh, Chein-Wei Jen.High-Speed and Low-PowerSplit-Radix FFT[J].IEEE Tans.Signal Processing, 2003, Vol.51, No.3, p864-874.
     [11]Yutai Ma, Lars Wanhammar.A Hardware Efficient Control ofMemory Addressing for High-Performance FFT Proces sors[J].IEEE Tans.Signal Processing, 2000, Vol.48, No.3, p917-920.
     发明内容 技术问题 : 本发明目的是为减少运算量, 提高运算速度, 针对背景技术存在的缺陷 提供一种基于 FPGA 实现高速 FFT 处理的方法。
     技术方案 : 本发明为实现上述目的, 采用如下技术方案 :
     本发明基于 FPGA 实现高速 FFT 处理的方法, 其特征在于离散傅里叶变换 X(k) 与 输入信号 x(n) 构成了离散傅里叶变换对, 都是长为 N 的复序列, 序列长度 N 是 2 的整数幂 M 次方, 即N=2, 其中 M 为正整数, 表示幂次数, 其中 k、 n 分别表示离散傅里叶变换 X(k) 与 输入信号 x(n) 的序列 ;
     首先将离散傅里叶变换 x(n) 分解为二组, 偶数项为一组, 奇数项为一组, 得到两 个 N/2 点的子序列, 即:
     x1(r) = x(2r), x2(r) = x(2r+1), (0 ≤ r ≤ N/2-1) (3)
     利用式 (4) 可以写成 :其中 X1(k) 和 X2(k) 分别为 x1(r) 和 x2(r) 的 DFT。
     有益效果 :
     Altera 公司采用传统结构的 FFT 算法其 32 点 FFT IP 核的运算时间大于 1.0us。 用 DSP 做的 32 点 FFT 时间也要 1.0us 以上。本发明利用 FPGA 器件丰富的逻辑、 RAM(Read Access Memory)、 ROM(Read Only Memory) 和 DSP 等资源, 采用一种新结构 FFT 算法, 使得 FFT 运算速度较传统方法有了很大提高。 随着芯片集成度的不断提高, 这种高速 FFT 处理方 法其优越性将越来越明显。而且该方法易扩展。
     附图说明
     图1: 蝶形运算图 ; 图2: 按时间抽取 : 将一个 8 点 DFT 分解为 4 个 2 点 DFT ; 图3: 基 2 时间抽取全并行 FFT 算法结构图 ; 图4: 一步交换后 FFT 结构图 ; 图5: 高速并行 FFT 处理结构 ; 图6: 高速 FFT 的 FPGA 实现框图 ; 图7: 仿真时序图 ; 图8: FPGA 运算结果 ; 图9: 理论输出结果。具体实施方式
     本发明采用一种基 -2 新型结构 FFT 算法, 应用 Altera 公司先进 FPGA 器件 Stratix 系列 EP1S25F780-5 来做硬件仿真。 Stratix 器件是一款采用高性能结构体系的 FPGA 器件。 它结合了强大内核性能, 大存储带宽, 数字信号处理 (DSP) 功能, 高速 I/O 性能和模块化设 计与一体的 FPGA。其内嵌的 DSP 模块具有很高的乘法运算速度, 在用 VHDL 编程时可以用 MegaWizard 方法指定用器件内部 DSP 模块生成乘法器, 用这种乘法器来做蝶形, 用多个蝶 形来构成 FFT 运算级, 通过流水操作可实现 FFT 运算并行化。本发明还将采用 Altera 公司 Quartus II 软件做逻辑设计和时序分析, 并利用 Quartus II 软件强大的硬件仿真和逻辑分 析功能, 对 VHDL 硬件描述语言进行设计编译、 综合、 布局、 布线, 最后下载到 FPGA 芯片中生 成了专用 FFT 处理芯片。
     计算 DFT 过程中需要完成的运算的系数里, 存在相当多的对称性。通过研究这种 对称性, 可以简化计算过程中的运算, 从而减少计算 DFT 所需的时间。
     利用的周期性、 对称性、 可约性三大特性, 可将 x(n) 或 X(k) 序列按一定规律分解成短序列进行运算, 这样可以避免大量的重复运算, 提高计算 DFT 的运算速度。算法形式可以分为两大类, 即按时间抽取 FFT 算法和按频率抽取 FFT 算法。
     本专利采用基 -2 时间抽取 FFT 算法。 设序列长度 N 是 2 的整数幂次方, 即 N = 2M, 其中 M 为正整数, 表示幂次数。
     首先将序列 x(n) 分解为二组, 偶数项为一组, 奇数项为一组, 得到两个 N/2 点的子 序列, 即:
     x1(r) = x(2r), x2(r) = x(2r+1), (0 ≤ r ≤ N/2-1) (3)
     其中 X1(k) 和 X2(k) 分别为 x1(r) 和 x2(r) 的 DFT。利用式 (4) 可以写成 :用图形化的方式表示如图 1 所示。每个蝶形运算需要一次复数相乘和两次复数加 法运算。采用这种表示方法, 上述分解运算的过程流图如图 2 所示。通过分解后, 每个 N/2 2 2 点 DFT 需要 N /4 次复数相乘, 两个 N/2 点 DFT 共需 N /2 次复数相乘, 组合运算共需 N/2 个 2 2 蝶形运算, 需 N/2 次复数相乘, 因此共需 N /2+N/2 ≈ N /2 次复数相乘, 与直接运算相比节省 近一半的运算量。
     由于 N/2 = 2M-1 依然为整数, 可将该序列一直分解下去, 直到最后是 2 点的 DFT 为 止。对于一个 8 点的 FFT, 根据上述算法可以得到一个完整的 N = 8 的基 -2FFT 的运算流 图, 如图 3 所示。
     根据上述 FFT 算法原理及图 3, 可以归纳出基 -2FFT 算法的一些规律和特点 :
     1、 整个 FFT 流图全由蝶形运算组成, 因此蝶形运算是 FFT 运算的核心, 该算法 的具体实现, 就是如何按一定顺序依次计算完成全部蝶形运算。每个蝶形运算需要一 次复数的相乘和两次复数的相加。对于一个 N = 2M 的序列, 可以逐步分解到最后全为
     2 点的 DFT 运算。全部 N 点的 FFT 运算共有个蝶形运算, 共需复数乘法次, 复数加法 af = NM = Nlog2N 次, 与直接计算相比运算量显著减少。 2、 流图中各蝶形的输入输出量是互相不相重的, 任何一个蝶形的两个输入量经蝶 形运算后, 便失去了价值, 不需要保存, 因此可以实现同址运算, 即经过一级运算后的结果 可以存放在原来贮存输入数据同一地址的单元中。因此, 只需要 N 个复数的存储单元, 既可 存放输入的原始数据, 又可存放中间结果, 而且还可以存放最后的运算结果。 这种原位运算 方式节省了大量的存储单元, 是 FFT 算法的一大优点, 从而有效降低了设备成本。
     3、 对于同址运算结构, 运算完毕后输出结果 X(k) 仍按自然顺序存放。而输入序列 x(n), 由于逐次按偶、 奇时间顺序抽取的分解结果, 重新排列了序列数据的存放顺序, 因此 它是按码位颠倒的顺序排放的。所谓码位颠倒, 就是将二进制的最高有效位到最低有效位 的位序颠倒放置而得的二进制数。例如, N = 8 时, n = 1 的二进制码位 001, 码位颠倒后为 100, 即相应的二进制数为 4。 实际运算中, 不直接将 x(n) 按照倒位序输出, 通常先将其按照 自然顺序输入存储单元, 并根据 FFT 算法, 然后进行变址运算变换得到倒位序的排列, 如表 1。
     4、 蝶形运算所需系数各级有所不同。 每级自上而下观察, 均是以开始, 按等比级数依次递增, 周期重复。例如, 第 m 级运算, 系数为1 = 0, 1,…, 2m-1-1, 共 2m-1 个系数, 指数 1 逐次增 1, 周期重复 2M-m 次。计算时所需系数可以事前计算好后存在一个数表 中, 这样运算速度快, 但需要开销内存。 亦可以在需要时依次递推计算, 这样可节省内存, 但 要增加一定的运算工作量。
     表 1 码位排序 (N = 8)
     图 3 所示这种全并行结构特点, 如果采用同步时序电路, 则可以实现每个时钟节 拍输出一组 FFT 计算结果, 从而充分发挥了并行加流水结构的快速处理特点, 使得 FFT 运算 速度得到极大提高。
     【高速 FFT 处理算法】
     由前面的介绍知, 传统基 2、 8 点 FFT 算法如图 3 所示。箭头上数字代表旋转因子
     中的 k。输入按码位颠倒的顺序排放, 输出是自然顺序。这种结构的特点是每个蝶形输 出数据仍然放在原来输入数据存储单元内, 这样只需要 2N 个存储单元 (FFT 中数据是复数 形式, 每点需要两个单元存储, N 是 FFT 运算点数 )。其缺点是不同级同一位置蝶形输入数 据寻址不固定, 难以实现循环控制。用 FPGA 编程时难以并行实现, 数据处理速度慢。当 FFT 点数增加时更是如此。
     通过观察传统结构 FFT 算法可以发现, 如果将第一级中间两个蝶形交换, 则可以 得到如图 4 所示结构。对此结构进一步变换, 将第二级输出不送回原处而是将其存储起来 并按顺序存放, 则第三级中间两个蝶形跟着调换, 并把输入按顺序排列, 则可构成如图 5 所 示高速并行 FFT 处理结构。在蝶形变换同时, 其旋转因子亦跟随变换。
     这种结构输入是顺序的, 而输出是位码倒序的, 每级旋转因子都被存放在 FPGA 片 内 ROM 里, 其中旋转因子的寻址是关键。由以上 FFT 结构图变换过程可推导每级旋转因子 寻址规律, 对于 N 点的 FFT(N = 2k, k 为级数 ), 旋转因子有 个, 将它们按位码倒序形式排成一个含有 N/2 个元素的数组计为 :
     i共 N/2则第 i 级 (i = 0, 1, 2…, k-1) 的旋转因子排列顺序是将 w(0), w(1), w(2),… ., w(2 ) 重复 2k-i-1 次得到的。此结构特点是每 级输入、 输出数据顺序不变, 因此每级几何结构固定, 易于用 FPGA 实现并行 FFT 硬件结构, 从而明显加快 FFT 运算速度。
     【FPGA 硬件实现】
     FPGA 器件的特点是可用硬件描述语言对其进行灵活编程。利用 FPGA 厂商提供的软件可仿真硬件的功能, 使硬件设计如同软件设计一样灵活方便。 缩短了系统研发周期。 利 用 JTAG(Joint Test Action Group) 接口可对其进行 ISP(In System Programmable, 在系 统编程 ) 提高了系统的灵活性。随着芯片集成度的提高, 单片 FPGA 内不仅拥有大量的逻辑 单元而且还能集成 RAM、 ROM、 I/O 及 DSP 块等, 从而使 SOC(System On a Chip, 片上系统 ) 成为现实。本发明采用的是 Altera 公司的 Stratix 系列芯片 EP1S25F780-5, 用 QuartusII 软件做硬件仿真和逻辑分析, 并将输出结果与 Matlab 理论运算结果进行了比较。系统结构 框图如图 6 所示。本系统的结构特点是 :
     1. 为 提 高 数 据 精 度, 系 统 全 部 用 16 位 宽。 用 data-array, write-array 和 fly-array 三个数组实现了内核的并行处理, 可在 10 个时钟周期内算完 32 点复 FFT。时钟 周期为 25 纳秒, 因此 32 点 FFT 只需 250 纳秒。
     2. 实现了数据的流水输入输出。在计算第 i 组数据同时, 第 i-1 组数据 FFT 结果 正在串行输出, 第 i+1 组数据则正在串行输入。因为内核计算是并行的、 速度快, 输入带宽 大。 本系统数据输入速率可达 200MHz。 为验证设计的正确性, 下面对其进行仿真, 输入信号 如下 :
     x(n) = sin(2*n*pi/4.7)+sin(2*n*pi/16.3)+w(n) (n = 0 , 1, 2… 31) (6) 仿真数据由两个正弦波信号叠加噪声构成, 信噪比为 3dB, 正弦信号频率分别为 0.213fs 与 0.061fs, fs = 1 为归一化采样频率, w(n) 是均值为 0 方差为 1 的高斯噪声。系 统仿真波形如图 7 所示。
     将 FPGA 输出的 FFT 运算结果和用 Matlab 计算的 FFT 理论结果进行比较, 如图 8、 9 所示。 仿真信号采用的是实信号, 其频谱具有对称性, 图中只画了 32 点仿真结果的一半即 前 16 点输出结果。
    

基于FPGA实现高速FFT处理的方法.pdf_第1页
第1页 / 共13页
基于FPGA实现高速FFT处理的方法.pdf_第2页
第2页 / 共13页
基于FPGA实现高速FFT处理的方法.pdf_第3页
第3页 / 共13页
点击查看更多>>
资源描述

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

1、10申请公布号CN101937424A43申请公布日20110105CN101937424ACN101937424A21申请号201010278997922申请日20100910G06F17/1420060171申请人南京航空航天大学地址210016江苏省南京市御道街29号72发明人王旭东74专利代理机构南京经纬专利商标代理有限公司32200代理人许方54发明名称基于FPGA实现高速FFT处理的方法57摘要本发明公布了一种基于FPGA实现高速FFT处理的方法,所述方法如下离散傅里叶变换XK与输入信号XN构成了离散傅里叶变换对,都是长为N的复序列,将离散傅里叶变换XK与输入信号XN分解为短序列,。

2、偶数项为一组,奇数项为一组,得到两个N/2点的子序列。依次类推可得离散傅里叶变换的快速算法FFT,本发明通过改进FFT算法结构,得到一种高速并行FFT,从而使得FFT运算速度较传统方法有了很大提高。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书6页附图5页CN101937425A1/1页21一种基于FPGA实现高速FFT处理的方法,其特征在于离散傅里叶变换XK与输入信号XN构成了离散傅里叶变换对,都是长为N的复序列,序列长度N是2的整数幂次方,即N2M,其中M为正整数,其中K、N分别表示离散傅里叶变换XK与输入信号XN的序列;首先将离散傅里叶变换XN分解为二。

3、组,偶数项为一组,奇数项为一组,得到两个N/2点的子序列,即X1RX2R,X2RX2R1,0RN/211利用式2可以写成其中X1K和X2K分别为X1R和X2R的DFT。权利要求书CN101937424ACN101937425A1/6页3基于FPGA实现高速FFT处理的方法技术领域0001本发明公开了一种应用FPGA芯片实现高速FFT处理的方法,它涉及数字信号处理领域。背景技术0002DFTDISCRETEFOURIERTRANSFER及其快速算法FFT是数字信号处理领域的核心组成部分,FFT算法多种多样,按数据抽取方式不同又可分为基2、基4等。各算法优缺点视不同制约因素而不同。FFT实现方法也。

4、多种多样,可以用软件实现,也可以用硬件实现。用软件在PC机或工作站上实现则计算速度很慢,一般多结合具体系统用硬件实现,例如用单片机或DSPDIGITALSIGNALPROCESS处理器实现,但是速度仍然不能满足某些应用领域的需求,难以与快速的A/D器件匹配。在雷达、电子对抗等应用领域追求运算速度,对实时性要求非常高。FPGA是英文FIELDPROGRAMMABLEGATEARRAY的缩写,即现场可编程门阵列,它是在PALPROGRAMMABLEARRAYLOGIC、GALGATEARRAYLOGIC、EPLDEMBEDDEDPROGRAMMABLELOGICDEVICE等可编程器件的基础上进一。

5、步发展的产物,具有更高的集成度、更强的逻辑实现能力和更好的设计灵活性。FPGA由许多独立的可编程逻辑模块组成,用户可以通过编程将这些模块连接起来实现不同的设计,它是作为专用集成电路ASIC,APPLICATIONSPECIFICINTEGRATEDCHIP领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。近些年来,FPGA技术发展迅速。一方面,各种大容量、高性能、低功耗的可编程逻辑器件不断推出。另一方面,出现了许多FPGA设计辅助工具,这些工具大大提高了以FPGA为基础的新型集成电路的设计效率,使更低成本、更短周期的复杂数字系统开发成为可能。00。

6、03数字信号处理中,设输入信号XN是长为N的复序列,其DFTDISCRETEFOURIERTRANSFER定义为00040005其IDFTINVERSEDISCRETEFOURIERTRANSFER定义为00060007其中,式1称为离散傅里叶正变换,式2称为离散傅里叶反变换,XN与XK构成了离散傅里叶变换对。0008根据上述公式,计算一个XK,需要N次复数乘法和N1次复数加法,而计算全部XK0KN1,共需要N2次复数乘法和NN1次复数加法,直接计算全部XK共需要4N2次实数乘法和2N2N1次实数加法。可见工作量与N2成正比,N越大,运算量将显著增加。0009参考文献00101COOLEYJW。

7、,TUKEYANALGORITHMFORTHEMACHINECALCULATIONOFCOMPLEX说明书CN101937424ACN101937425A2/6页4FOURIERSERIESJMATHCOMPUTE,1965,VOL19,NO4,P29730100112任淑艳应用VHDL语言的FFT算法实现J,哈尔滨理工大学学报,VOL8,NO6,200312,P242600123刘朝晖,韩月秋用FPGA实现FFT的研究J北京理工大学学报J,VOL19,NO2,19994,P23423800134王旭东,刘渝全并行结构FFT及其FPGA实现J南京航空航天大学学报,VOL38NO1FEB2006。

8、,P9610000145LOSINGCHENG,ALIMIRI,TETHINYEAPEFFICIENTFPGAIMPLEMENTATIONOFFFTBASEDMULTIPLIERSC,PROCIEEECCECE/CCGEI,SASKATOON,MAY2005,PP1300130300156AYANBANERJEE,ANINDYASUNDARDHAR,SWAPNABANERJEEFPGAREALIZATIONOFACORDICBASEDFFTPROCESSORFORBIOMEDICALSIGNALPROCESSINGJ,MICROPROCESSORANDMICROSYSTEMS2001,251,。

9、PP13114200167PEREZPASCUAL,A,SANSALONI,T,ANDVALLS,JONLINERADIX2BUTTERFLIESONFPGACPROCWSESINTERNATIONALCONFERENCEONSPEECH,SIGNALANDIMAGEPROCESSING,2002,PP2201220500178PEREZPASCUAL,A,SANSALONI,T,ANDVALLS,JFPGABASEDRADIX4BUTTERFLIESFORHIPERLAN2CPROCIEEEINTERNATIONALSYMPOSIUMONCIRCUITSANDSYSTEMSISCAS2002。

10、,2002,PPIII277III28000189ZSZADKOWSKI16POINTDISCRETEFOURIERTRANSFORMBASEDONTHERADIX2FFTALGORITHMIMPLEMENTEDINTOCYCLONEFPGAASTHEUHERCTRIGGERFORHORIZONTALAIRSHOWERSC,PROCOFTHE29THICRC,PUNE,2005001910WENCHANGYEH,CHEINWEIJENHIGHSPEEDANDLOWPOWERSPLITRADIXFFTJIEEETANSSIGNALPROCESSING,2003,VOL51,NO3,P864874。

11、002011YUTAIMA,LARSWANHAMMARAHARDWAREEFFICIENTCONTROLOFMEMORYADDRESSINGFORHIGHPERFORMANCEFFTPROCESSORSJIEEETANSSIGNALPROCESSING,2000,VOL48,NO3,P917920发明内容0021技术问题本发明目的是为减少运算量,提高运算速度,针对背景技术存在的缺陷提供一种基于FPGA实现高速FFT处理的方法。0022技术方案本发明为实现上述目的,采用如下技术方案0023本发明基于FPGA实现高速FFT处理的方法,其特征在于离散傅里叶变换XK与输入信号XN构成了离散傅里叶变换对。

12、,都是长为N的复序列,序列长度N是2的整数幂次方,即N2M,其中M为正整数,表示幂次数,其中K、N分别表示离散傅里叶变换XK与输入信号XN的序列;0024首先将离散傅里叶变换XN分解为二组,偶数项为一组,奇数项为一组,得到两个N/2点的子序列,即0025X1RX2R,X2RX2R1,0RN/213说明书CN101937424ACN101937425A3/6页500260027利用式4可以写成00280029其中X1K和X2K分别为X1R和X2R的DFT。0030有益效果0031ALTERA公司采用传统结构的FFT算法其32点FFTIP核的运算时间大于10US。用DSP做的32点FFT时间也要1。

13、0US以上。本发明利用FPGA器件丰富的逻辑、RAMREADACCESSMEMORY、ROMREADONLYMEMORY和DSP等资源,采用一种新结构FFT算法,使得FFT运算速度较传统方法有了很大提高。随着芯片集成度的不断提高,这种高速FFT处理方法其优越性将越来越明显。而且该方法易扩展。附图说明0032图1蝶形运算图;0033图2按时间抽取将一个8点DFT分解为4个2点DFT;0034图3基2时间抽取全并行FFT算法结构图;0035图4一步交换后FFT结构图;0036图5高速并行FFT处理结构;0037图6高速FFT的FPGA实现框图;0038图7仿真时序图;0039图8FPGA运算结果;。

14、0040图9理论输出结果。具体实施方式0041本发明采用一种基2新型结构FFT算法,应用ALTERA公司先进FPGA器件STRATIX系列EP1S25F7805来做硬件仿真。STRATIX器件是一款采用高性能结构体系的FPGA器件。它结合了强大内核性能,大存储带宽,数字信号处理DSP功能,高速I/O性能和模块化设计与一体的FPGA。其内嵌的DSP模块具有很高的乘法运算速度,在用VHDL编程时可以用MEGAWIZARD方法指定用器件内部DSP模块生成乘法器,用这种乘法器来做蝶形,用多个蝶形来构成FFT运算级,通过流水操作可实现FFT运算并行化。本发明还将采用ALTERA公司QUARTUSII软件。

15、做逻辑设计和时序分析,并利用QUARTUSII软件强大的硬件仿真和逻辑分析功能,对VHDL硬件描述语言进行设计编译、综合、布局、布线,最后下载到FPGA芯片中生成了专用FFT处理芯片。0042计算DFT过程中需要完成的运算的系数里,存在相当多的对称性。通过研究这种对称性,可以简化计算过程中的运算,从而减少计算DFT所需的时间。0043利用的周期性、对称性、可约性三大特性,可将XN或XK序列按一定规律分解成短序列进行运算,这样可以避免大量的重复运算,提高计算DFT的运算速度。算法形说明书CN101937424ACN101937425A4/6页6式可以分为两大类,即按时间抽取FFT算法和按频率抽取。

16、FFT算法。0044本专利采用基2时间抽取FFT算法。设序列长度N是2的整数幂次方,即N2M,其中M为正整数,表示幂次数。0045首先将序列XN分解为二组,偶数项为一组,奇数项为一组,得到两个N/2点的子序列,即0046X1RX2R,X2RX2R1,0RN/21300470048其中X1K和X2K分别为X1R和X2R的DFT。利用式4可以写成00490050用图形化的方式表示如图1所示。每个蝶形运算需要一次复数相乘和两次复数加法运算。采用这种表示方法,上述分解运算的过程流图如图2所示。通过分解后,每个N/2点DFT需要N2/4次复数相乘,两个N/2点DFT共需N2/2次复数相乘,组合运算共需N。

17、/2个蝶形运算,需N/2次复数相乘,因此共需N2/2N/2N2/2次复数相乘,与直接运算相比节省近一半的运算量。0051由于N/22M1依然为整数,可将该序列一直分解下去,直到最后是2点的DFT为止。对于一个8点的FFT,根据上述算法可以得到一个完整的N8的基2FFT的运算流图,如图3所示。0052根据上述FFT算法原理及图3,可以归纳出基2FFT算法的一些规律和特点00531、整个FFT流图全由蝶形运算组成,因此蝶形运算是FFT运算的核心,该算法的具体实现,就是如何按一定顺序依次计算完成全部蝶形运算。每个蝶形运算需要一次复数的相乘和两次复数的相加。对于一个N2M的序列,可以逐步分解到最后全为。

18、2点的DFT运算。全部N点的FFT运算共有个蝶形运算,共需复数乘法次,复数加法AFNMNLOG2N次,与直接计算相比运算量显著减少。00542、流图中各蝶形的输入输出量是互相不相重的,任何一个蝶形的两个输入量经蝶形运算后,便失去了价值,不需要保存,因此可以实现同址运算,即经过一级运算后的结果可以存放在原来贮存输入数据同一地址的单元中。因此,只需要N个复数的存储单元,既可存放输入的原始数据,又可存放中间结果,而且还可以存放最后的运算结果。这种原位运算方式节省了大量的存储单元,是FFT算法的一大优点,从而有效降低了设备成本。00553、对于同址运算结构,运算完毕后输出结果XK仍按自然顺序存放。而输。

19、入序列XN,由于逐次按偶、奇时间顺序抽取的分解结果,重新排列了序列数据的存放顺序,因此它是按码位颠倒的顺序排放的。所谓码位颠倒,就是将二进制的最高有效位到最低有效位的位序颠倒放置而得的二进制数。例如,N8时,N1的二进制码位001,码位颠倒后为100,即相应的二进制数为4。实际运算中,不直接将XN按照倒位序输出,通常先将其按照自然顺序输入存储单元,并根据FFT算法,然后进行变址运算变换得到倒位序的排列,如表1。说明书CN101937424ACN101937425A5/6页700564、蝶形运算所需系数各级有所不同。每级自上而下观察,均是以开始,按等比级数依次递增,周期重复。例如,第M级运算,系。

20、数为10,1,2M11,共2M1个系数,指数1逐次增1,周期重复2MM次。计算时所需系数可以事前计算好后存在一个数表中,这样运算速度快,但需要开销内存。亦可以在需要时依次递推计算,这样可节省内存,但要增加一定的运算工作量。0057表1码位排序N800580059图3所示这种全并行结构特点,如果采用同步时序电路,则可以实现每个时钟节拍输出一组FFT计算结果,从而充分发挥了并行加流水结构的快速处理特点,使得FFT运算速度得到极大提高。0060【高速FFT处理算法】0061由前面的介绍知,传统基2、8点FFT算法如图3所示。箭头上数字代表旋转因子中的K。输入按码位颠倒的顺序排放,输出是自然顺序。这种。

21、结构的特点是每个蝶形输出数据仍然放在原来输入数据存储单元内,这样只需要2N个存储单元FFT中数据是复数形式,每点需要两个单元存储,N是FFT运算点数。其缺点是不同级同一位置蝶形输入数据寻址不固定,难以实现循环控制。用FPGA编程时难以并行实现,数据处理速度慢。当FFT点数增加时更是如此。0062通过观察传统结构FFT算法可以发现,如果将第一级中间两个蝶形交换,则可以得到如图4所示结构。对此结构进一步变换,将第二级输出不送回原处而是将其存储起来并按顺序存放,则第三级中间两个蝶形跟着调换,并把输入按顺序排列,则可构成如图5所示高速并行FFT处理结构。在蝶形变换同时,其旋转因子亦跟随变换。0063这。

22、种结构输入是顺序的,而输出是位码倒序的,每级旋转因子都被存放在FPGA片内ROM里,其中旋转因子的寻址是关键。由以上FFT结构图变换过程可推导每级旋转因子寻址规律,对于N点的FFTN2K,K为级数,旋转因子有共N/2个,将它们按位码倒序形式排成一个含有N/2个元素的数组计为0064则第I级I0,1,2,K1的旋转因子排列顺序是将W0,W1,W2,W2I重复2KI1次得到的。此结构特点是每级输入、输出数据顺序不变,因此每级几何结构固定,易于用FPGA实现并行FFT硬件结构,从而明显加快FFT运算速度。0065【FPGA硬件实现】0066FPGA器件的特点是可用硬件描述语言对其进行灵活编程。利用F。

23、PGA厂商提供的说明书CN101937424ACN101937425A6/6页8软件可仿真硬件的功能,使硬件设计如同软件设计一样灵活方便。缩短了系统研发周期。利用JTAGJOINTTESTACTIONGROUP接口可对其进行ISPINSYSTEMPROGRAMMABLE,在系统编程提高了系统的灵活性。随着芯片集成度的提高,单片FPGA内不仅拥有大量的逻辑单元而且还能集成RAM、ROM、I/O及DSP块等,从而使SOCSYSTEMONACHIP,片上系统成为现实。本发明采用的是ALTERA公司的STRATIX系列芯片EP1S25F7805,用QUARTUSII软件做硬件仿真和逻辑分析,并将输出结。

24、果与MATLAB理论运算结果进行了比较。系统结构框图如图6所示。本系统的结构特点是00671为提高数据精度,系统全部用16位宽。用DATAARRAY,WRITEARRAY和FLYARRAY三个数组实现了内核的并行处理,可在10个时钟周期内算完32点复FFT。时钟周期为25纳秒,因此32点FFT只需250纳秒。00682实现了数据的流水输入输出。在计算第I组数据同时,第I1组数据FFT结果正在串行输出,第I1组数据则正在串行输入。因为内核计算是并行的、速度快,输入带宽大。本系统数据输入速率可达200MHZ。为验证设计的正确性,下面对其进行仿真,输入信号如下0069XNSIN2NPI/47SIN2。

25、NPI/163WNN0,1,23160070仿真数据由两个正弦波信号叠加噪声构成,信噪比为3DB,正弦信号频率分别为0213FS与0061FS,FS1为归一化采样频率,WN是均值为0方差为1的高斯噪声。系统仿真波形如图7所示。0071将FPGA输出的FFT运算结果和用MATLAB计算的FFT理论结果进行比较,如图8、9所示。仿真信号采用的是实信号,其频谱具有对称性,图中只画了32点仿真结果的一半即前16点输出结果。说明书CN101937424ACN101937425A1/5页9图1图2说明书附图CN101937424ACN101937425A2/5页10图3图4说明书附图CN101937424ACN101937425A3/5页11图5图6说明书附图CN101937424ACN101937425A4/5页12图7图8说明书附图CN101937424ACN101937425A5/5页13图9说明书附图CN101937424A。

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

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


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