基于FPGA的FFT算法实现毕业论文.doc
《基于FPGA的FFT算法实现毕业论文.doc》由会员分享,可在线阅读,更多相关《基于FPGA的FFT算法实现毕业论文.doc(41页珍藏版)》请在三一办公上搜索。
1、毕业论文基于FPGA的FFT算法实现摘要 快速傅立叶变换(FFT)作为时域和频域转换的基本运算,是数字谱分析的必要前提。传统的FFT使用软件或DSP实现,高速处理时实时性较难满足。FPGA是直接由硬件实现的,其内部结构规则简单,通常可以容纳很多相同的运算单元,因此FPGA在作指定运算时,速度会远远高于通用的DSP芯片。FFT运算结构相对比较简单和固定,适于用FPGA进行硬件实现,并且能兼顾速度及灵活性。本文介绍了一种通用的可以在FPGA上实现512点FFT变换的方法。主要对quartus II中的ram,rom,fft,基本运算等宏模块进行调用。并且通过vga控制模块,和键盘等控制模块,实现对
2、信号的产生和频谱的测量和显示等工作。实验果表明,设计完成的系统能够在保证运算精度和实现复杂度的同时,切实可行地完成设计的总体要求。 关键词FPGA;VGA ;FFT;ip核Implementation of FFT algorithm based on FPGAAbstract: Fast Fourier Transform (FFT) as a time domain and the frequency domain conversion of the basic operation, the digital spectrum analysis prerequisite. The tradi
3、tional FFT implemented using software or DSP, real-time high-speed processing more difficult to meet. FPGA is a direct hardware implementation, and its internal structure rules are simple, you can usually accommodate many of the same arithmetic unit, thus making the assignment operator FPGA, the spe
4、ed will be much higher than the general-purpose DSP chips. FFT operation is relatively simple and fixed structure, suitable for hardware implementation using FPGA and can both speed and flexibility. This paper describes a generic that can be implemented on FPGA 512-point FFT transform method. Mainly
5、 quartus II of ram, rom, fft, basic operations such as macro block calls. And through vga control module, and keyboard control module enables the signal generation and spectrum measurement and display work. Experimental results show that the design is completed the system to ensure the accuracy and
6、computing implementation complexity while practicable to complete the design of the overall requirements. Key words: FPGA; VGA; FFT; ip nuclear目录1引言12设计原理32.1基2-FFT算法原理32.2 基4-FFT算法原理82.3 IP核实现原理83 FFT设计实现133.1总体结构设计133.2 FFT IPCore的建立143.3测试信号的产生183.3.1 dds原理183.3.2 dds的实现183.3.3 测试信号的仿真193.4显示模块设计
7、193.4.1 vga显示原理193.4.2 vga的实现223.4.3 vga的仿真测试233.5 存储单元设计234系统调试254.1 安装ByteBlaster II下载电缆254.1.1驱动程序安装254.1.2硬件下载264.1.3软件实现过程264.2 FFT算法测试294.2.1正弦信号的FFT测试294.2.2 方波信号的FFT测试30总结与展望32致谢33参考文献34附录35源程序.411引言在数字化高速发展的今天,对数字信号处理高速实时的要求也不断提高。因此为了满足这些要求,国内外都在研究实现数字信号处理的新方法,本论文主要研究基于FPGA的方法来实现FFT算法,并通过对算
8、法结构的内部优化设计使其相较于传统的实现方法更具优势。FPGA技术的五大优势(1)性能:利用硬件并行的优势,FPGA打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务,超越了数字信号处理器(DSP)的运算能力。 著名的分析与基准测试公司BDTI,发布基准表明在某些应用方面,FPGA每美元的处理能力是DSP解决方案的多倍。2在硬件层面控制输入和输出(I/O)为满足应用需求提供了更快速的响应时间和专业化的功能。(2)上市时间:尽管上市的限制条件越来越多,FPGA技术仍提供了灵活性和快速原型的能力。 用户可以测试一个想法或概念,并在硬件中完成验证,而无需经过自定制ASIC设计漫长的制造过程。3
9、由此用户就可在数小时内完成逐步的修改并进行FPGA设计迭代,省去了几周的时间。 商用现成(COTS)硬件可提供连接至用户可编程FPGA芯片的不同类型的I/O。 高层次的软件工具的日益普及降低了学习曲线与抽象层,并经常提供有用的IP核(预置功能)来实现高级控制与信号处理。(3)成本:自定制ASIC设计的非经常性工程(NRE)费用远远超过基于FPGA的硬件解决方案所产生的费用。 ASIC设计初期的巨大投资表明了原始设备制造商每年需要运输数千种芯片,但更多的最终用户需要的是自定义硬件功能,从而实现数十至数百种系统的开发。 可编程芯片的特性意味着用户可以节省制造成本以及漫长的交货组装时间。 系统的需求
10、时时都会发生改变,但改变FPGA设计所产生的成本相对ASCI的巨额费用来说是微不足道的。(4)稳定性:软件工具提供了编程环境,FPGA电路是真正的编程“硬”执行过程。 基于处理器的系统往往包含了多个抽象层,可在多个进程之间计划任务、共享资源。 驱动层控制着硬件资源,而操作系统管理内存和处理器的带宽。 对于任何给定的处理器内核,一次只能执行一个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占的风险。 而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定性硬件,可减少稳定性方面出现问题的可能。(5)长期维护:正如上文所提到的, FPGA芯片是现场可升级的,无需重新设计ASI
11、C所涉及的时间与费用投入。 举例来说,数字通信协议包含了可随时间改变的规范,而基于ASIC的接口可能会造成维护和向前兼容方面的困难。 可重新配置的FPGA芯片能够适应未来需要作出的修改。 随着产品或系统成熟起来,用户无需花费时间重新设计硬件或修改电路板布局就能增强功能。快速傅立叶变换(FFT)是DFT的快速算法,是数据从时域到频域变换的基本运算。它是频谱分析的必要前提,是数字信号处理的核心工具之一。所以FFT在众多学科领域,例如数字语音编码、雷达信号处理、声纳信号分析、数字滤波、射电干涉等都有着十分广泛的应用。尤其是在要求较高的信号处理系统中,FFT的处理速度往往是整个系统设计性能的关键。软件
12、实现FFT运算速度慢,无法满足实时高速的系统性能要求。硬件实现FFT的方式主要有三种:通用数字信号处理器(DSP)、专用的FFT芯片(ASIC)、可编程逻辑器件(以FPGA为代表)。采用DSP方案通过软件编程来实现运算,虽然灵活性强,但是受到DSP本身性能及程序指令顺序执行的限制难以实现高速、大规模的FFT运算,同时也存在速度和精度之间的矛盾:若采用定点运算,舍入误差会降低最终处理结果的精度;若采用浮点运算,可以消除动态范围局限的问题,但由于实现结构复杂使处理速度难以达到要求,而且系统造价较高。采用ASIC芯片虽然可以达到较高的处理速度,但是灵活性差,特别是使用定制的大规模集成电路的时候,需要
13、较高的开发和研制费用,不易扩展。随着超大规模可编程门阵列的迅速发展,新一代FPGA内部有高速数字信号处理(DSP)模块和大容量、高速RAM模块,这为利用FPGA实现FFT处理成为可能,既避免了软件方式所带来的速度方面的限制,又可以降低开发的成本和周期,是一种较为理想的开发方式。FPGA以高性能、高灵活性、友好的开发环境、在线可编程等特点可以使基于FPGA的设计满足实时数字信号处理的要求。高速实时数字信号处理对系统性能要求甚高,因此,几乎所有的通用DSP都难以实现这一要求。可编程逻辑器件允许设计人员利用并行处理技术实现高速信号处理算法,并且只需单个器件就能实现期望的性能。在数据通信这样的应用中,
14、常常需要进行高速、大规模的FFT及其逆变换IFFT运算。当通用的DSP无法达到速度要求时,唯一的选择是增加处理器的数目,或者采用定制门阵列产品。现在,随着微电子技术的发展,采用现场可编程门阵列(FPGA)进行数字信号处理发展迅猛。采用现场可编程器件不仅加快了产品上市时间,还可满足现在和下一代便携式设计所需要的成本、性能、尺寸等方面的要求,并提供系统级支持。FPGA是直接由硬件实现的,其内部结构规则简单,通常可以容纳很多相同的运算单元,因此FPGA在作指定运算时,速度会远远高于通用的DSP芯片。FFT运算结构相对而言比较简单和固定,适于用FPGA进行硬件实现,并且能兼顾其速度及灵活性。而采用DS
15、P方式有很大的浪费,同时DSP芯片内部的乘法器资源十分有限,FFT算法中乘法量较大,在实现实时处理方案时必须使用多个DSP芯片,从而提高了价格、增加了功耗和体积。而选择内部嵌有多个乘法器内核的FPGA芯片就可以很轻易地消除这一严重的资源浪费现象。尤其是近年来,高密度的可编程逻辑器件FPGA的集成度、速度不断提高,设计、调试手段更加完善,因而得到更为广泛的应用。本论文就是在这样一个背景下提出一种基于FPGA的512点基2-FFT算法的具体实现方法。旨在设计出用FPGA实现的、具有高速特点的、可实现定点FFT运算的IP核,从而满足系统要求。2设计原理2.1基2-FFT算法原理 长度为N的有限长序列
16、x(n)的DFT的表达式为 (2-1)x(n)在一般情况下是为复数序列的。如果直接按(2-1)式计算X(k)值,那么对于某一个k值而言,需要N次复数乘法和(N-1)次复数加法。那么对于N个k值,一共需要N(N-1)次复数加法运算。当N1时,N(N-1)。从上面的说明中可以看出,N点DFT的乘法和加法运算次数均与成正比。当N较大时,运算量是十分庞大的。如果N取32,那么将达到1024。如此巨大的计算量对于实时信号处理来说其运算速度是难以达到的。所以要想使得DFT在各种科学和工程计算中得到广泛的应用就必须想办法减少其运算量。在前面已经讲到,N点DFT的复乘次数等于。其实一个N点DFT可以看做是由几
17、个较短的DFT组成的。基于这一思想,可以将N点DFT分解为几个较短的DFT,这样一来乘法次数将大大减少,能够非常明显地降低DFT的运算量。此外,旋转因子具有明显的周期性和对称性。其周期性表现为: (2-2)其对称性表现为 (2-3)不断的把长序列的DFT分解成几个短序列的DFT,并且利用的周期性和对称性来减少DFT的运算次数,这就是FFT算法的基本思想。比较常用的FFT算法有基-2 FFT和基4FFT两种。基-2 FFT中的基2指的是N=,即有限长序列的长度N要到等于2的整数次幂。下面就以8点的FFT为例详细分析基-2 FFT算法。2.1.1基-2 FFT算法基本原理基-2 FFT算法基本上分
18、为时域抽取法FFT(DIT-FFT)和频域抽取法FFT(DIF-FFT)两大类。由于这两种算法的基本原理是相同的,所以下面主要介绍DIT-FFT算法。本课题采用的就是DIT-FFT这一算法。设序列x(n)的长度为N,并且有以下的条件成立,M为自然数 (2-4)x1(r)和x2(r)是x(n)按n的奇偶性分解成的两个N/2点的子序列,如下式所示, (2-5), (2-6)那么x(n)的DFT为 (2-7)由于 (2-8)所以 (2-9)=0,1,N-1 其中X1(k)和X2(k)分别为x1(r)和x2(r)的N/2点DFT,即 (2-10) (2-11)又由于X1(k)和X2(k)都是以N/2为
19、周期,且 (2-12)所以X(k)又可以表示为如下所示的表达式 (2-13) (2-14)这样一个N点的DFT就被拆分成为了两个N/2点的DFT。式(3-7)和式(3-8)说明了原N点的DFT和这两个N/2点的DFT之间的关系。通常为了后续说明的方便,和其它许多文献一样,在本文中也将式(3-13)和式(3-14)的运算用图2.1所示的一个流图符号表示。因为这个流图符号形状酷似一只蝴蝶,所以称其为蝶形运算符号。图2.1 蝶形运算符号采用蝶形运算符号的这种图示方法,可以用图2.2来表示前面所讲到的运算。在图3.2中,N=8,式(3-13)给出了X(0)X(3)的计算方法,而式(2-14)给出了X(
20、4)X(7)的计算方法。图2.2N点DFT的一次时域抽取分解图(N=8)由图3.1可以看出,要完成一个蝶形运算,需要一次复数乘法和两次复数加法运算。由图3.2可以看出,经过一次分解后,计算一个N点DFT共需要计算两个N/2点DFT和N/2个蝶形运算。由前面的说明可以知道,计算一个N/2点DFT需要次复数乘法和N/2(N/2-1)次复数加法。那么按图3.2计算N点DFT共需要+N/2=N(N+1)/2/2(N1)次复数乘法和N(N/2-1)+2N/2=/2次复数加法运算。通过对比可以看出,只进行过这样的一次分解就使得运算量减少了近一半,充分说明了这样分解对减少DFT的运算量是十分有效的。由于这里
21、N=,N/2仍然是偶数,为了使得计算量能够得到进一步的减少,可以仿效前面的做法对N/2点DFT再做进一步分解。与第一次分解相同,x3(l)和x4(l)为x1(r)按奇偶分解成的两个长为N/4的子序列,即 (2-15)那么,X1(k)又可表示为 = = (2-16)其中 (2-17) (2-18)同理,由X3(k)和X4(k)的周期性和的对称性最后得到: (2-19)同理可得 (2-20)其中有 (2-21) (2-22) (2-23)这样,如图2.3所示,经过第二次的分解,一个N/2点的DFT就被拆分成为了两个N/4点的DFT了。式(3-10)和式(3-11)说明了原N/2点的DFT和这两个N
22、/4点的DFT之间的关系。依次类推,经过M-1次分解,最后将N点DFT分解成N/2个2点DFT。将前面两次分解的过程综合起来,就得到了一个完整的8点DIT-FFT运算流图,如图2.4所示。图中用到关系式。图中的输入序列不是顺序的,但是后面会看到,其排列是有规律的。图2.3 N点DFT的第二次时域抽取分解图(N=8)图2.4 N点DIT-FFT运算流图(N=8)(3)DIT-FFT算法与直接计算DFT运算量的比较由DIT-FFT算法的分解过程及图2.4可见,N=时,其运算流图应该有M级蝶形,每一级都由N/2蝶形运算构成。每一级运算都需要N/2次复数乘和N次复数加(每个蝶形需要两次复数加法)。所以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA FFT 算法 实现 毕业论文
链接地址:https://www.31ppt.com/p-3938459.html