基于FPGA的FFT算法实现毕业论文(23页).doc

上传人:1595****071 文档编号:37051647 上传时间:2022-08-29 格式:DOC 页数:23 大小:1.04MB
返回 下载 相关 举报
基于FPGA的FFT算法实现毕业论文(23页).doc_第1页
第1页 / 共23页
基于FPGA的FFT算法实现毕业论文(23页).doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《基于FPGA的FFT算法实现毕业论文(23页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的FFT算法实现毕业论文(23页).doc(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-基于FPGA的FFT算法实现毕业论文-第 19 页毕业论文基于FPGA的FFT算法实现摘要 快速傅立叶变换(FFT)作为时域和频域转换的基本运算,是数字谱分析的必要前提。传统的FFT使用软件或DSP实现,高速处理时实时性较难满足。FPGA是直接由硬件实现的,其内部结构规则简单,通常可以容纳很多相同的运算单元,因此FPGA在作指定运算时,速度会远远高于通用的DSP芯片。FFT运算结构相对比较简单和固定,适于用FPGA进行硬件实现,并且能兼顾速度及灵活性。本文介绍了一种通用的可以在FPGA上实现512点FFT变换的方法。主要对quartus II中的ram,rom,fft,基本运算等宏模块进行调

2、用。并且通过vga控制模块,和键盘等控制模块,实现对信号的产生和频谱的测量和显示等工作。实验果表明,设计完成的系统能够在保证运算精度和实现复杂度的同时,切实可行地完成设计的总体要求。 关键词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 analys

3、is prerequisite. The traditional 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 assignm

4、ent operator FPGA, the speed 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 FF

5、T transform method. Mainly 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 t

6、o ensure the accuracy and 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的实现

7、183.3.3 测试信号的仿真193.4显示模块设计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引言在数字化高速发展的今天,对数字信号处理高速实时的要求也不断提高。因此为了满足这些要求,国内外都在研究实现数字信号处理的新方法,本论文主

8、要研究基于FPGA的方法来实现FFT算法,并通过对算法结构的内部优化设计使其相较于传统的实现方法更具优势。FPGA技术的五大优势(1)性能:利用硬件并行的优势,FPGA打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务,超越了数字信号处理器(DSP)的运算能力。 著名的分析与基准测试公司BDTI,发布基准表明在某些应用方面,FPGA每美元的处理能力是DSP解决方案的多倍。2在硬件层面控制输入和输出(I/O)为满足应用需求提供了更快速的响应时间和专业化的功能。(2)上市时间:尽管上市的限制条件越来越多,FPGA技术仍提供了灵活性和快速原型的能力。 用户可以测试一个想法或概念,并在硬件中完成

9、验证,而无需经过自定制ASIC设计漫长的制造过程。3由此用户就可在数小时内完成逐步的修改并进行FPGA设计迭代,省去了几周的时间。 商用现成(COTS)硬件可提供连接至用户可编程FPGA芯片的不同类型的I/O。 高层次的软件工具的日益普及降低了学习曲线与抽象层,并经常提供有用的IP核(预置功能)来实现高级控制与信号处理。(3)成本:自定制ASIC设计的非经常性工程(NRE)费用远远超过基于FPGA的硬件解决方案所产生的费用。 ASIC设计初期的巨大投资表明了原始设备制造商每年需要运输数千种芯片,但更多的最终用户需要的是自定义硬件功能,从而实现数十至数百种系统的开发。 可编程芯片的特性意味着用户

10、可以节省制造成本以及漫长的交货组装时间。 系统的需求时时都会发生改变,但改变FPGA设计所产生的成本相对ASCI的巨额费用来说是微不足道的。(4)稳定性:软件工具提供了编程环境,FPGA电路是真正的编程“硬”执行过程。 基于处理器的系统往往包含了多个抽象层,可在多个进程之间计划任务、共享资源。 驱动层控制着硬件资源,而操作系统管理内存和处理器的带宽。 对于任何给定的处理器内核,一次只能执行一个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占的风险。 而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定性硬件,可减少稳定性方面出现问题的可能。(5)长期维护:正如上文所提到

11、的, FPGA芯片是现场可升级的,无需重新设计ASIC所涉及的时间与费用投入。 举例来说,数字通信协议包含了可随时间改变的规范,而基于ASIC的接口可能会造成维护和向前兼容方面的困难。 可重新配置的FPGA芯片能够适应未来需要作出的修改。 随着产品或系统成熟起来,用户无需花费时间重新设计硬件或修改电路板布局就能增强功能。快速傅立叶变换(FFT)是DFT的快速算法,是数据从时域到频域变换的基本运算。它是频谱分析的必要前提,是数字信号处理的核心工具之一。所以FFT在众多学科领域,例如数字语音编码、雷达信号处理、声纳信号分析、数字滤波、射电干涉等都有着十分广泛的应用。尤其是在要求较高的信号处理系统中

12、,FFT的处理速度往往是整个系统设计性能的关键。软件实现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运算结构相对而言比较简单和固定,适于用FPG

15、A进行硬件实现,并且能兼顾其速度及灵活性。而采用DSP方式有很大的浪费,同时DSP芯片内部的乘法器资源十分有限,FFT算法中乘法量较大,在实现实时处理方案时必须使用多个DSP芯片,从而提高了价格、增加了功耗和体积。而选择内部嵌有多个乘法器内核的FPGA芯片就可以很轻易地消除这一严重的资源浪费现象。尤其是近年来,高密度的可编程逻辑器件FPGA的集成度、速度不断提高,设计、调试手段更加完善,因而得到更为广泛的应用。本论文就是在这样一个背景下提出一种基于FPGA的512点基2-FFT算法的具体实现方法。旨在设计出用FPGA实现的、具有高速特点的、可实现定点FFT运算的IP核,从而满足系统要求。2设计

16、原理2.1基2-FFT算法原理 长度为N的有限长序列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点D

17、FT的复乘次数等于。其实一个N点DFT可以看做是由几个较短的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

18、基-2 FFT算法基本原理基-2 FFT算法基本上分为时域抽取法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) (

19、2-11)又由于X1(k)和X2(k)都是以N/2为周期,且 (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

20、(0)X(3)的计算方法,而式(2-14)给出了X(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次复数加法运算。通过对比可以看出,只进行过这样的一次分解就使得运算量减少了近一半,充分说明

21、了这样分解对减少DFT的运算量是十分有效的。由于这里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)和

22、式(3-11)说明了原N/2点的DFT和这两个N/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次复数

23、乘和N次复数加(每个蝶形需要两次复数加法)。所以,M级运算总共需要的复数乘次数为 (2-24)复数加次数为 (2-25)而由前面的介绍,直接计算N点的DFT需要次复数乘法以及N(N-1)次复数加法运算。当N1时,N(N-1)是约等于的。当N=1024时,可以求得直接计算N点的DFT和使用基-2 DIT-FFT算法的所需乘法次数的比值为 (2-26)这样,运算效率就提高了200多倍。图2.5为FFT算法与直接计算DFT所需乘法次数的比较曲线。由此图更加直观地看出FFT算法的优越性,从图3-5可以明显的看出,N越大时,优越性就越明显。图2.5 FFT算法与直接计算DFT所需乘法次数的比较曲线2.2

24、 基4-FFT算法原理在FFT各类算法中,基2-FFT算法是最简单的一种,但其运算量与基4-FFT算法相比则大得多,分裂基算法综合了基4和 基2算法的特点,虽然具有最少的复乘运算量,但其L蝶形运算控制的复杂性也限制了其在硬件上的实现,因此,本设计采用了基4-FFT算法结构。基4-FFT算法的基本运算是4点DFT。一个4点的DFT运算的表达式为:式(1)对于输出变量进行了二进制倒序,便于在运算过程中进行同址运算,节省了运算过程中所需存储器单元的数量。按DIT(时间抽取)的1 024点的基4-FFT共需5级蝶形运算,每级从RAM中读取的数据经过蝶形运算后原址存入存储单元准备下一级运算。算法的第1级

25、为一组N=1024点的基4蝶形运算,共256个蝶形,每个蝶形的距离为256点;第2级为4组N=256点的基4蝶形运算,每组64个蝶形,每个蝶形的距离为64点。后3级类推。这种算法每一级的运算具有相对独立性,每级运算都采用同址运算,因此,本设计只使用了2个1 k16 bits的RAM单元。运算过程中所需的旋转因子的值经过查询预设的正弦与余弦ROM表得到。2.3 IP核实现原理1) FFT兆核函数功能描述长度为N的离散傅里叶变换(DFT)是计算单位圆上N点均匀分布的离散时间序列(w=2k=0,.N-I)的采样傅里叶变换。序列r(n)的N点DFT如下所示: (2-27) N点IDFT如下所示: (2

26、-28) DFT直接计算的复杂性可以通过快速傅里叶变换(FFT)算法大大降低。FFT算法可基于式( 5-1)和式(5-2)中求和运算的嵌套分解以及复数乘法的对称性来实现。其中一类FFT算法为库利-图基( Cooley-Tukey)基r按频率抽选(Decimation-in Frequency,缩写DIF)法将输入序列循环分解为N/r个长度为r的序列,并需要级运算。每一级分解由同一个硬件单元完成,包括数据从存储器中抽取、通过FFT处理器以及入存储器的过程。每次通过FFT处理器都要完成次运算。通常基数r选择2、4和16,,增加分解基数r,可以通过牺牲硬件的资源来减少FFT处理器的运算次数。 将输入

27、序列循环分解为4点序列的基4分解,使用4点FFT在乘法运算上具有更大优势,Altera公司的FFT兆核选用的就是基4运算,在N是2的奇数幂的情况下,FFT IP核,自动在完成转换的最后使用基2运算。 为了在整个转换计算过程中保持高信噪比(SNR),FFT兆核函数采用块浮点(Block floating-point)结构,这种结构是定点(Fixed-point)与全浮点(Full-floating-point)结构之M平衡在块浮点结构中,每个数据模块中所有的数值都有一个独立的尾数,但共享一个公共的指数,输入到FFT函数的数据作为定点复数。 块浮点结构保证了在FFT函数和整个转换过程中数据位数的完

28、整使用。每次通过基4FFT运算以后,数据位数最大可能增加缩位,根据前面输出数据模块动态范围的测量按比例进行运算,换算过程中累计的移位次数被作为整个模块的指数输出。这种移位方法保证最低位(LSB)的最小值在乘法运算后的输出进行舍入操作之前就被丢弃。实际上,块浮点表示法起到了数字自动增益控制的作用。为了在连续输出模块中产生统一的比例,必须用最终的指数对FFT函数输出进行比例换算。 2) FFT处理器引擎结构 FFT兆核函数可以通过定制参数来使用两种不同的引擎结构:四输出(Quad-output)或单输出( Quad-output)引擎结构。为了增加FFT兆核函数的总吞吐量,也可以在一个FFT兆核函

29、数变量中使用多个并行引擎。(1)四输出FFT引擎结构对于需要最少转换时间的应用,四输出FFT引擎结构是最佳选择。四输出(Quad-out-put)指的是内部FFT蝶形处理器的吞吐量,这种引擎实现结构可以在一个单时钟周期内计算所有四个基4蝶形复数输出。四输出引擎结构的构图如图2.8所示。复数采样数据xk,m从内部存储器并行读出,并由变换开关(SW)重新排序排序后的取样数据由基4处理器处理并得到复数输出Gk,m,由于基4按频率抽选(DIF)分解方法固有的数字特点,在蝶形处理器输出上仅需要3个复数乘法器完成3次乘旋转因子(有一个旋转因予为1,不需要乘)计算。为了辨别采样数据的最大动态范围,4个输出由

30、块浮点单元(BFPU)并行估计,丢弃适当的最低位(LSB),在写入内部存储器之前对复数值进行四舍五人并重新排序。 图2.8 四输出F订引擎结构(2)单输出FFT引擎结构在需要最小尺寸FFT函数的应用中,单输出引擎最适合。单输出也指的是内部FFT蝶形处理器的吞吐量。在这种引擎结构中,每个时钟周期计算一个单蝶形输出,需要一个单独的复数乘法器,其引擎结构如图2.9所示。 图2.9 单输出FFT引擎结构 (3) FFT兆核I/O数据流结构 FFT兆核函数支持的I/O数据流包括:流(Streaming)、缓冲突发(Buffered Burst)和突发(Burst)。1)流(Streaming)I/0数据

31、流结构流I/O数据流结构允许输入数据连续处理,并输出连续的复数据流,这个过程中不需要停止FFT数据流进出。这种数据流结构的仿真结果如图2.10所示。FFT兆核函数采用Altera Atlantic接口I/O协议,输入接口为主设备汇端(MasterSink)而输出接口为主设备源端(Master Source)。图2.10 FFT streaming 数据流仿真结果在系统复位信号( Reset)变为低电平后,数据源将mastersinkdav信号置为高电平,对于FFT函数束说这表明在输入端至少有N个复数据样点可以输入。作为回应,FFT函数将Master-ink_ena信号置为高电平,表明有能力接收

32、这些输人信哆。数据源加载第一个复数据样点到FFT函数中,同时将master_sink_sop信号置为高电平,表示输入模块的开始。在下一时钟周期,master_sink_sop信号被复位,并以自然顺序加载数据样点。如图2.11所示详细表明了输入信号流程控制时序,图中z,(n)表示输入复数据实部,z(n)表示输入复数据虚部。图2.11 FFT Streaming 数据流结构输入流程控制时序在streaming数据流结构中,FFT函数希望输入端的输人数据连续可用,因此,master-sink_ena会一直保持高电平,除非系统复位,或master_sink_dav信号复位显示输人数据模块完整,或由于m

33、aster _sink_sop信号置高电平失败,master_sink_ena信号才复位。 如果要在一个输入模块的边界上停止模块数据流,master_sink_sop信号将在前一模块后数据样点输入以后保持低电平。FFT函数复位master_sink_ena信号,并继续处理已入的数据模块。FFT函数中的流水线已经清除以后,master_sink_ena重新置为高电平,在下一个输入模块流的第一个输入数据样点上置位master_sink_sop信号来对下一个输块的读取进行初始化。 当FFT已经完成了输入模块的变换,并且从设备汇端(Slave Sink)将master_sourcedav号置高电平(表

34、示数据从设备接收器可以接收输出数据模块)时,FFT将mastersourceena号置高电平,并且以自然顺序输出复数变换域数据模块。FFT函数在mastersourcesop号上输出一个高电平咏冲表示第一个输出样点,如图2.9所示,图中详细表明了输出流程制时序。在N个时钟周期之后,master_source_eop信号被置为高电平,表示转换输出数据块结束如图2.8所示。 2)缓冲突发(Burst)I/O数据流结构 缓冲突发I/O数据流结构的FFT需要的存储器资源比流动1/0数据流结构少,但平均模块吞吐量减少。这种数据流结构的仿真结果如图2.9所示。在系统复位信号( reset)变为低电平后,数

35、据源将master_ sink_ dav信号置为高电平,对于FFT函数来说这表明在输入端至少有N个复数数据样点可以输入。作为回应,FFT函数将mastersinkena信号置高电平,表明有能力接收这些输入信号。数据源加载第一个数数据样点到FFT函数中,同时将master_ sink_ sop信号置高电平,表示输入模块的开始。在下一个时钟周期,mastersink_sop信号被复位,并以自然顺序加载后面的N-1个复输数据样点。 当完全载入输入模块时FFT函数复位mastersink_ena信号,表示FFT不再接收其他输入数据并开始计算输入数据模块的变换结果。如图2.10所示为输入信号流程控制时序

36、。在FFT处理器内部输入缓冲区读取输入样点之后,FFT将master sinkena信号重新置为高电平,并准备读取下一个输入模块。下一个输入模块的起点由master-sink-sop脉冲确定。图2.12 FFT缓冲突发数据流结构输出信号流程控制时序信号master_source_sop和master _source_eop分别表示输出模块数据包的起点和终点如图2.8所示。 3)突发(Burst)I/O数据流结构 突发I/O数据流结构的执行过程和缓冲突发结构相同,不同的是,对于给定参数设置突发结构在降低平均吞吐量的前提下需要更少的存储资源。其仿真结构图如图2.13所示 图2.13 FFT缓冲突发

37、数据流结构输出信号流程控制时序的仿真结构圈 在突发I/O数据流结构中,载人一个有效输入模块以后,master _sink_ena信号被复位,直到FFT函数完成转换并且输出数据模块被完全读出为止,master_sink_ena信号才被重新置位,准备下一个输入模块的载入。3 FFT设计实现3.1总体结构设计设计的总体方框结构图如图3.1所示。主要包括A/D采样控制模块(sample)、FFT运算前数据存储模块(sample_dpram)、FFT IP核(fft)、缩放求模运算模块、FFT运算后数据存储模块( display_dpram)、波形显示控制模块(disp_ controller)、VGA

38、显示驱动模块( vga)、采样频率控制模块(div_freq)、键盘显示控制模块(key_board)和数据加载模块。DDS模块是为了方便测试(产生正弦信号)而增设的。按功能可以划分为4部分:信号采样部分、FFT运算部分、波形显示部分和键盘控制部分。信号采样部分会定时采样数据并进行存储;FFT运算部分负责对采样数据进行换算,并将换算后的数据存人双口RAM;波形显示部分只管从双口RAM读数据并送往VGA接口显示;键盘显示部分主要是控制更改采样频率、DDS输出频率及数码显示等操作。图3.1方框结构图各模块简介各模块功能简介如表3.1所列表3.1各模块功能模块名称功能描述备注pll产生lOO MHz

39、系统时钟25 MHz VGA驱动动时序兆功能模块dds正弦信号发生器产生被测模拟信号sample信号采集模块,负责采集数据并存储sample_dpram采样存储模块(双端口RAM)兆功能模块fft_load_data数据装载模块,将sample_dpram中的敷据送基FFT IP核fftFFT运算模块,进行FFT变换FFT IP核fft_data_switch数据转换模块,对FFT输出数据进行缩放运算(指数运mult add乘加运算模块兆功能模块sqrt求方根模块,完成x运算兆功能模块display_load_data数据装载模块,将FFT处理后的数据装载到显存(dis-play_dpram)

40、中display_dpramFFT运算处理后的数据存储模块(双端口RAM兆功能模块disp_controller频谱显示控制模块,将频谱数据送VGA驱动模块vgaVGA驱动模块,驱动VGA显示器显示频谱信号div_freq采样信号分频模块,控制采样频率key_board键盘显示模块,控制分频模块、DDS和数码管显示 3.2 FFT IPCore的建立 安装MegaCore。MegaCore可以在Quartus II开发环境中使用,本实验的FFT MegaCore是FFT V 2.1.3,即2.1.3版本的FFT编译器。MegaCore不附带在Quartus II软件中,需要单独向Altera公

41、司购买或申请试用版。在这里我们安装的是MegaCore IP Librar 图3.2 MegaWizard page1 打开FFT编译器。在Quartus II主界面中选择ToolMegaWizard Plug-In Managc打开添加宏单元的向导,选择Create a new custom megafunction variation新建宏单元模块然后在新建宏单元模块窗口中选择DSP- Transforms-FFT v2.11 3并命名为fft。图3.3 MegaWizard page1 设置FFT的参数。在Quartus II主界面中,在FFT兆核函数向导中单击“Step 1:Param

42、eterize”打开FFT参数设置对话框,具体参数设置如下: (a)在Parameters选项卡设置FFT变换长度(Transform Length)为512,数据精度(Data Precision)和旋转因子精度(Twiddle Precision)为8位,如图3.4所示。图3.4 MegaWizard Parameters (b)在Architecture选项卡选择突发结构(Burst)为I/O数据流,单输出FFT引擎结构(Single Output),并行FFT引擎个数为“l”,如图3.5所示。图3.5 MegaWizard Architecture (c)在Implementation

43、 Options选项卡选择复数乘法器结构(Structure)为4/Mults2Adders,如图3.6示。图3.6 MegaWizard Implementationd)最后单击Finish按钮完成参数设置。生成FFT模块。在FFT兆核函数向导中单击“Step 2:Set Up Simulation”按钮百以打开生成仿真文件的对话框,这里不需要生成仿真文件,所以可以跳过此步,直接单“Step 3:Generate”按钮,就可以生成所需要的FFT模块。图3.7 Generate3.3测试信号的产生3.3.1 dds原理设计采用目前使用最广泛的一种DDS方式是利用高速存储器作查找表,然后通过高速

44、DAC 输出已经用数字形式存储的波形。图3.8 dds系统的基本原理图图3.8中虚方框部分是DDS 的核心单元,它可以采用CPLD/FPGA 来实现。图中的相位累加器由位全加器和位累加寄存器级联而成,可对频率控制字的二进制码进行累加运算,是典型的反馈电路。频率控制字M和相位控制字分别控制DDS 输出正(余)弦波的频率和相位。每来一个时钟脉冲,相位寄存器以步长M递增。相位寄存器的输出与相位控制字相加,其结果作为正(余)弦查找表的地址。正(余)弦查找表的数据存放在ROM中,内部存有一个周期的正弦波信号的数字幅度信息,每个查找表的地址对应于正弦波中0360范围内的一个相位点。查找表把输入的址信息映射

45、成正(余)弦波的数字幅度信号,同时输出到数模转换器DAC 的输入端,DAC输出的模拟信号经过低通滤波器 (LPF),可得到一个频谱纯净的正(余)弦波。DDS 具体工作过程如下:每来一个时钟脉冲clk,N 位全加器将频率控制数据M 与累加寄存器输出的累加相位数据N 相加,把相加后的结果送至累加寄存器的输入端。累加寄存器一方面将上一时钟周期作用后所产生的新的数据反馈到加法器的输入端,以使加法器在下一时钟的作用下继续与频率控制数据M 相加;另一方面将这个值作为取样地址值送入幅度/相位转换电路,此电路根据取样地址输出相应的波形数据。最后经D/A 转换器和低通滤波器将波形数据转换成所需要的模拟波形。DDS 输出信号的频率由下式决定:q=()clk (代表取样点数M为频率控制字、代表存储器中存储数据的多少,N 代表累加器的位数,clk 代表基准时钟频率)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com