基于FPGA IP核的FFT实现与改进.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于FPGA IP核的FFT实现与改进

基于FPGA IP核的FFT实现与改进 摘要?利用FPGA IP核设计了一种快速、高效的傅里叶变换系统。针对非整数倍信号周期截断所导致的频谱泄露问题,提出了一种通过时输入信号加窗处理来抑制频谱泄露的方法。利用Modelsim和Matlab对设计方案进行了仿真,同时在Altera公司的CycloneⅡ硬件平台上进行了验证。验证结果表明,系统性能良好,改进效果明显。 FFT是离散傅里叶变换(DFT)的一种快速算法,被广泛应用于频谱分析、音频编码、图像处理等数字信号处理领域。FFT运算复杂,需要大量的存储器和运算单元,其硬件实现平台多种多样。DSP需要外置存储器和特定接口,限制了运算速度。ASIC虽能满足速度要求,但其硬件电路复杂、可扩展性差、且价格昂贵。FPGA具有陕速并行运算、高集成度、低功耗等特点,且具有丰富的IP核资源,方便调用,适合FFT算法的实现。 对于512点FFT处理器,如果该512个输入数据不是信号周期的整数倍,即非整数倍周期截断,则会出现频谱泄露现象。窗函数处理的宗旨是减小频谱泄露。常规的FFT硬件实现方法均不考虑由于非整数倍截断导致的频谱泄露问题。针对以上问题,本文设计了一种基于Altera IP核的512点FFT系统,同时通过对输入信号的加窗处理,抑制了非整数倍信号周期截断所产生的频谱泄露。 1 原理概述 1.1 FFT原理 离散傅里叶变换(DFT)算法为 FFT为DFT的快速算法,其方法多种多样,基本可以分为按时间抽取法和按频率抽取法两类。此处介绍基-4频率抽取法。令N=4M,对式(1)N点的DFT可按如下方法作按频率出抽取 4个等式可定义为一个蝶形运算,蝶形运算可看作基-4FFT基本运算单元。参与蝶形运算的4个节点是有规律的,分别为(n)、(n+N/4)、(n+2N/4)和(n+3N/4)。接着再将X(4r)、X(4r+1)、X(4r+2)和X(4r+3)分别分解为4个长度为N/16的序列,基本结构是每一级的运算由N/4个蝶形运算构成,经过迭代log4N次后完成计算。FFT算法的本质是利用系数 的共轭对称性和周期性,将长序列DFT分解成短序列DFT,避免了大量的重复运算,从而提高运算效率。 1.2 窗函数原理 当对输入信号非整数倍周期截断,即512个输入数据不是输入信号周期的整数倍时,会出现频谱泄露现象。对输入信号进行加窗处理,可以有效地抑制频谱泄露。常用的窗函数有矩形窗(Rectangle Window)、汉宁窗(Hanning Window)、海明窗(Hamming Window)、布拉克曼窗(Blackman Window)等,不同的窗函数具有不同的特点,表现在主瓣旁瓣宽度,频率识别精度及幅度识别精度等方面。图1为Matlab仿真图,分别为原始信号,原始信号加窗(海明窗)结果,原始信号做512点FFT结果,原始信号加窗后再做512点FFT结果,这4幅图直观形象地描述了时域信号做FFT后的频域结果,以及原始信号是否加窗对FFT结果的影响。 2 FFT IP核 FFT IP核是高速执行的,参数可配置的FFT处理器,可以实现复数形式的FFT变换和IFFT变换。想要正确地使用FFT IP核,首先需要了解其引擎结构、数据流结构和关键管脚信号。 2.1 引擎结构 FFI IP核有两种不同的引擎结构:四输出和单输出,结构如图2(a)和图2(b)所示。核心区别在于FFT蝶形处理器的吞吐量。一个时钟周期内,四输出结构可以计算出所有4个蝶形输出,单输出结构可以计算出一个蝶形输出。 2.2 数据流结构 FFI IP核支持流、变量流、缓冲突发、突发4种数据流结构。流结构允许连续输入数据,同时输出连续的复数数据流。变量流产生一个与流结构类似的连续输出数据流。缓冲突发结构需要存储资源相对较少,但平均吞吐量也相应降低。突发结构的执行过程与缓冲突发结构类似,对于给定的参数设置,突发结构需要更少的存储资源。 其中,clk为时钟信号;reset_n为复位信号;inverse为FFT处理器变换模式选择信号,选择FFT或IFFF;sink_valid为输入数据有效信号;sink_sop为输入第一个数据标志信号;sink_eop为输入最后一个数据标志信号;sink_real为输入实部数据;sink_imag为输入虚部数据;sink_error为输入错误标志;source_ready为输出等待状态标志;sink_ready为输入等待状态标志;source_error为输出错误标志;source_real为结果实部数据;source_imag为结果虚部数据;source_exp为结果补偿系数;source_valid为结果有效信号;source_sop为 输出第一个数据标志信号;source_eop为输出最后一个数据标志信号。 3 方案设计 系

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档