基于ModelSim的FFT算法的设计学士学位论文.doc

上传人:小小飞 文档编号:3921322 上传时间:2019-10-10 格式:DOC 页数:64 大小:1,011KB
返回 下载 相关 举报
基于ModelSim的FFT算法的设计学士学位论文.doc_第1页
第1页 / 共64页
基于ModelSim的FFT算法的设计学士学位论文.doc_第2页
第2页 / 共64页
基于ModelSim的FFT算法的设计学士学位论文.doc_第3页
第3页 / 共64页
基于ModelSim的FFT算法的设计学士学位论文.doc_第4页
第4页 / 共64页
基于ModelSim的FFT算法的设计学士学位论文.doc_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《基于ModelSim的FFT算法的设计学士学位论文.doc》由会员分享,可在线阅读,更多相关《基于ModelSim的FFT算法的设计学士学位论文.doc(64页珍藏版)》请在三一文库上搜索。

1、理工大学学士学位论文基于ModelSim的FFT算法的设计学士学位论文摘 要快速傅立叶变换(FFT)作为时域和频域转换的基本运算,是数字谱分析的必要前提。传统的FFT使用软件或DSP实现,高速处理时实时性较难满足,因此专用集成电路(ASIC)和可编程逻辑器件(以现场可编程门阵列FPGA为代表)应运而生。速度上ASIC更占优势,但是随着点数的增加,芯片面积将迅速扩大,也就意味着成本的提高。而FPGA内部含有硬件乘法器,大量的存储单元和可编程I/O,十分适合于FFT处理器的实现,而且相对ASIC,成本低廉,可以反复编程,便于调试,也更具市场竞争力。本文应用Verilog语言完成32点基-2复数的F

2、FT处理系统设计,包括蝶形运算单元设计、存储单元设计、块浮点单元设计、地址产生单元设计、功能切换单元设计以及时序控制单元的设计工作。以选取的FPGA器件库为基础,使用modelsim软件进行仿真,并对结果进行分析。关键词:快速傅立叶变换;Verilog;单元设计;modelsim仿真IIAbstractFast Fourier Transform is a necessary precondition of digital spectral analysis as the basic computing between the time domain and frequency domain.

3、 The traditional FFT uses software or DSP to realize, which is difficult to meet real-time in high speed processing. Application specific integrated circuit (ASIC) and programmable logic device (represented by field programmable gate array, FPGA) arises at the historic moment. ASIC has the advantage

4、 in the speed, but the chip area will expand rapidly with the processing points increasing, which means the improvement of costs. While FPGA contains hardware multipliers, massive memory cells and programmable I/O, so it is very suitable for implementation of FFT processor. Therefore, FPGA is low-co

5、st, easy to debug and can be repeatedly programmed. It has more market competitiveness.Use Verilog language completed 32 points 2 complex FFT processing system design, Including butterfly computing unit design, storage unit design, block floating-point unit design, the address generation unit design

6、, the function switch unit design and timing control unit design work . On the basis of the selected library as the FPGA device, use the modelsim simulation software, and analyze the results.Key Words:FFT;Verilog;Unit design;modelsim simulation59目 录1 绪论11.1 课题的背景及意义11.2 FFT的国内外发展研究现状21.2.1 通用数字信号处理芯

7、片21.2.2 专用集成电路芯片ASIC31.2.3 可编程逻辑器件31.3 篇章结构52 离散福利叶变换的快速算法的基本理论62.1 基-2FFT算法62.2 定点数的相关概念15 2.2.1 定点数的定义15 2.2.2 定点数加减法的溢出及检测方法152.3 定点数的定标162.4 有限字长效应162.5 块浮点数173 FFT的算法设计183.1 FFT处理器的实现框图183.2 蝶形运算单元的设计183.3 流水线结构253.4 存储单元的设计26 3.4.1 FFT数据存取规律分析26 3.4.2 双口RAM及其地址发生器的设计27 3.4.3 ROM 及其地址发生器的设计303.

8、5 浮点单元的设计333.6 时序控制单元的设计384 基于verilog语言的FFT的设计与仿真404.1 ModelSim介绍404.2 ModelSim仿真404.2.1 建立工程414.2.2 加载文件414.2.3 开始仿真424.3 结果分析44结 论46致 谢47参考文献48附录 A 英文原文50附录 B 汉语翻译551 绪论1.1 课题的背景及意义随着数字技术与计算机技术的发展,数字信号处理(Digital Signal Processing,DSP)技术已深入到各个学科领域,其应用又是多种多样,但数字信号处理基本上从两个方面来解决信号的处理问题:一个是时域方法,即数字滤波;另

9、一个是频域方法,即频谱分析。处理的任务大致分为三类:卷积用于各种滤波器,对给定频率范围的原始信号进行加工(通过或滤出)来提高信噪比;相关用于信号比较,分析随机信号的功率谱密度;变换用于分析信号的频率组成,对信号进行识别。其中,离散傅立叶变换(Discrete-time Fourier Transform,DFT)和卷积是信号处理中两个最基本也是最常用的运算,它们涉及到信号与系统的分析与综合这一广泛的信号处理领域。由数字信号处理的基本理论可知,卷积可以转化为DFT来实现,实际上其他许多算法,如相关、谱分析等也都可以转化DFT来实现;此外,各种系统的分析、设计和实现中都会用到DFT的计算问题。所以

10、,DFT在各种数字信号处理中起着核心作用,而DFT的快速算法快速傅立叶变换(Fast Fourier Transform,FFT)就成为了数字信号处理的最基本技术之一,对FFT算法及其实现方式的研究是很有意义的。目前,FFT广泛应用在频谱分析、匹配滤波、数字通信、图像处理、语音识别、雷达处理、遥感遥测、地质勘探和无线保密通讯等众多领域。在不同应用场合,需要不同性能要求的FFT处理器。在很多应用领域都要求FFT处理器具有高速度、高精度、大容量和实时处理的性能。因此,如何更快速、更灵活地实现FFT变得越来越重要。此外,数字滤波在图像处理、语音识别和模式识别等数字信号处理中占有重要地位。与模拟滤波器

11、相比,数字滤波器可以满足滤波器幅度和相位特性的严格要求,可以克服模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。有限冲激响应(FIR)滤波器可以保证严格的线性相位。同时由于其实现结构主要是非递归的,因此FIR滤波器可以稳定工作。FIR滤波器被广泛用于各类数字信号处理系统中实现卷积、相关、自适应滤波、正交插值等处理。随着数字信号处理技术的发展,在消费电子领域要求处理速度更快、功耗更低、集成度更高和产品开发周期更短,因此许多数字信号处理的实现方法被不断提出,其中基于FPGA的数字信号处理实现技术就是其中的重要技术之一。近几年,随着现场可编程门阵列FPGA技术的迅速发展,采用并行度更大、速度更

12、快的FPGA芯片来实现FFT和FIR数字滤波器己成为必然趋势。FPGA技术的关键就是利用强有力的设计工具来缩短开发周期,提供元器件的优质利用性,降低设计成本,并能够并行处理数据,容易实现流水线结构,且升级简便,提高设计的灵活性,这些都非常适合实现FFT算法和FIR数字滤波器。因此,自主研发基于FPGA芯片的FFT和FIR数字滤波器,把FFT和FIR数字滤波器实时性的要求和FPGA芯片设计的灵活性结合起来,实现并行算法与硬件结构的优化配置,提高FFT和FIR数字滤波器处理速度,满足现代信号处理的高速度、高可靠性要求,成为了现今我国数字信号处理的一个研究点。鉴于此种趋势,作者将基于FPGA的FFT

13、和FIR数字滤波器设计与实现作为了研究课题。1.2 FFT的国内外发展研究现状针对FFT和FIR数字滤波器的硬件实现方案主要有三种途径:DSP处理器、专用集成电路ASIC、可编程逻辑器件,其中可编程逻辑器件以FPGA为代表。1.2.1 通用数字信号处理芯片通用数字信号处理芯片即DSP处理器,按照DSP的用途,可分为通用型DSP芯片和专用型DSP芯片。通用型DSP芯片适合普通的DSP应用,通用DSP芯片具有接口灵活、编程方便、稳定性好、运算精度高等特点,同时也更适应于大规模集成电路如TI公司的一系列DSP芯片属于通用型DSP芯片。专用DSP芯片是为特定的DSP运算而设计的,更适合特殊的运算,如数

14、字滤波、卷积和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就属于专用型DSP芯片。针对一般数字信号处理算法的实现,采用通用可编程硬件处理器技术来实现FFT和FIR数字滤波器。这种实现方法具有软件设计多用性的优点,能够适用于各种需要FFT运算和FIR数字滤波器进行信号处理的应用场合,灵活方便。但是,通用DSP处理器构成的FFT处理器和FIR数字滤波器采用循环编码算法,程序量小,但存在大量的冗余运算,需要许多跳转操作,处理速度较慢,难以满足现代数字信号处理高速、大规模、实时性的要求。在进行大点数FFT计算和FIR数字滤波时,并行

15、算法与DSP处理器的寻址能力不相适应,不能有效利用数据传输的带宽和运算能力,造成硬件资源的浪费。1.2.2 专用集成电路芯片ASIC在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC在一些特殊功能的表现上相当好,这种方案运算速度快,可靠性高,非常适合实时和对可靠性要求较高的信号处理系统,在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点,但是专用芯片不能重新组态,可编程能力有限,在产品发展过程中,它的功能无法任意修改或改进。因此,任何的线路改版都需要重新设计并且重

16、新制造,这不仅增加开发成本,而且造成产品快速上市的障碍,不太适合处理算法和参数经常改变的场合。1.2.3 可编程逻辑器件可编程逻辑器件以其独特的优越性能,一出现就受到大家的青睐。它不仅速度快、集成度高,并且几乎能随心所欲的完成定义的逻辑功能,还可以加密和重新编程,其编程次数可以达到1万次以上。使用可编程逻辑器件可以大大简化硬件系统,降低成本,提高系统的可靠性、灵活性和保密性。因此,可编程逻辑器件是设计数字系统的理想器件。现在已广泛用于计算机硬件、工业控制、智能仪表、通信设备和医疗电子仪器等多个领域。可编程逻辑器件的应用不仅使电子产品性能有了很大改善,而且也使数字系统设计方法发生了根本性变革。其

17、中,现场可编程门列阵(FPGA)是最近几年发展起来的新型高密度可编程逻辑器件。现场可编程门阵列(FPGA)是20世纪80年代中期由美国Xilinx公司首先推出的大规模可编程逻辑器件。由于FPGA器件采用标准化结构,并且具有体积小、集成度高、功耗低、速度快、可无限次反复编程等特点,已成为开发电子产品的首选器件。FPGA的功能由逻辑结构的配置数据决定。工作时,这些配置数据存放在片内的SRAM或者熔丝图上。使用无SRAM的FPGA,在工作前需要从芯片外部加载配置数据。配置数据可以存储在片外的EPROM或其他存储体上,人们可以控制加载过程,在现场修改器件的逻辑功能,即所谓现场编程。世界上第一片FPGA

18、由美国Xilinx公司于1985年发明,因而FPGA技术在国外发展较早,随着FPGA技术的普及,使用FPGA芯片设计正在世界范围内兴起。国内外已积极地开展了基于FPGA的数字信号处理算法应用与研究,并且也取得了长足的进步。目前在国际上,两大FPGA巨头Xilinx和Altera除了FPGA的生产外还与其第三方合作伙伴致力于IP核的开发。这些IP核中包含了基本的数字信号处理模块,如FFT、FIR等。由于FPGA芯片厂商对自己公司生产的芯片的性能非常了解,因此设计的模块能最大限度的发挥芯片的性能。目前Altera公司提供的FFT模块采用4引擎结构,在实现1024点FFT时所需时间己经降至很低。使用

19、IP核构建数字信号处理系统具有诸多优点,如开发周期短、性能稳定、可靠、维护方便等。但也存在以下的缺点:IP核价格昂贵(Altera公司的FFT IP核售价为7995美元),且IP核源代码不对外开放,不利于二次开发;IP核针对通用的设计,在某些特殊的应用场合不一定最优因此还难以在我国基层应用领域普及。国内方面,我国的FPGA技术起步较晚,但是进入21世纪后,发展非常迅速。目前不少大学及研究所都使用FPGA芯片设计开发具有自主知识产权的FFT和FIR数字滤波器,但是由于起步较晚,基础薄弱,所设计的FFT和FIR数字滤波器无论是速度,还是可扩展性上都与国外有一定差距。2002年罗雪苟、詹阳分析了使用

20、FPGA实现FFT的几种方法,对这几种方法的优缺点进行了讨论。2003年韩颖等采用Xilinx公司的FPGA设计了FFT处理器。采用流水方式对复数数据实现了加窗、FFT、求模平方三种运算,整个设计使用双基-2蝶形运算单元,采用流水线方式尽量避免瓶颈的出现,提高了系统时钟频率。2004年刘国栋等也使用基2算法设计了FFT单元,他使用了ALTERA高性能的Stratix器件对512点、1024点、2048点、4096点和8192点都进行了分析。2004年鲁欣等也设计了4096点FFT,但是他使用了1024点的FFT IP核进行了扩展设计,如果系统输入时钟为50MHz,计算时间为0.577ms。20

21、08年刘在爽、卢莹莹对FPGA实现FIR数字滤波器也进行研究,讨论了乘累加和基于CSD(Canonic signed Digital,标准有符号数)编码的数字滤波器的设计。1.3 篇章结构本文主要针对基-2顺序处理的FFT处理器和FIR数字滤波器的FPGA实现进行了研究,涉及算法选取、处理器结构设计、系统仿真、FPGA实现和系统测试。本论文共5章,各章的具体内容如下:第1章阐述了硬件实现的国内外现状及选题的意义和论文内容。第2章为离散福利叶变换的快速算法的基本理论;第3章为基于modelsim的FFT算法的设计第4章为基于verilog语言的32点基-2复数的FFT的设计与仿真最后一章为结论最

22、后对整篇论文进行了总结和讨论。2 离散福利叶变换的快速算法的基本理论本章主要介绍了基-2FFT算法和用硬件实现数字信号处理算法所涉及到的几个基本问题。2.1 基-2FFT算法1、概述 长度为N的有限长序列x(n)的DFT的表达式为1: (2.1) x(n)在一般情况下是为复数序列的。如果直接按(2.1)式计算X(k)值,那么对于某一个k值而言需要N次复数乘法和m-1次复数加法。那么对于N个k值,一共需要N2次复数乘法以及N(N-1)次复数加法运算。当N1时,N(N-1)N2。从上面的说明中可以看出,N点DFT的乘法和加法运算次数均与N2成正比。当N较大时,运算量是十分庞大的。如果N取1024,

23、那么N2将达到1,048,576。如此巨大的计算量对于实时信号处理来说其运算速度是难以达到的。所以要想使得DFT在各种科学和工程计算中得到广泛的应用就必须想办法减少其运算量。 在前面已经讲到,N点DFT的复乘次数等于N2。其实一个N点DFT可以看做是由几个较短的DFT组成的。基于这一思想,可以将N点DFT分解为几个较短的DFT,这样一来乘法次数将大大减少,能够非常明显地降低DFT的运算量。此外,旋转因子wmN具有明显的周期性和对称性。其周期性表现为: (2.2)其对称性表现为 或者 (2.3)不断的把长序列的DFT分解成几个短序列的DFT,并且利用的周期性和对称性来减少DFT的运算次数,这就是

24、FFT算法的基本思想。比较常用的FFT算法有基-2FFT和基-4FFT两种。基-2FFT中的基2指的是N=2M,即有限长序列的长度N要到等于2的整数次幂;同理可得基-4FFT中的基4指的是有限长序列的长度N要到等于4的整数次幂。下面就以8点的FFT为例详细分析基-2FFT算法。2、基-2FFT算法基本原理 基-2FFT算法基本上分为时域抽取法FFT(DIT-FFT)和频域抽取法FFT(DIF-FFT)两大类。由于这两种算法的基本原理是相同的,所以下面主要介绍DIT-FFT算法。本课题采用的就是DIT-FFT这一算法。 设序列x(n)的长度为N,并且有以下的条件成立N=2M,M为自然数 (r)和

25、(r)是x(n)按n的奇偶性分解成的两个N/2点的子序列,如下式所示那么x(n)的DFT为 由于所以 (2.4)其中和分别为和的N/2点DFT,即 (2.5) (2.6)又由于和都是以N/2为周期,且所以X(k)又可以表示为如下所示的表达式 (2.7) (2.8) 这样一个N点的DFT就被拆分成为了两个N/2点的DFT。式(2.7)和式(2.8)说明了原N点的DFT和这两个N/2点的DFT之间的关系。通常为了后续说明的方便,和其它许多文献一样,在本文中也将式(2.7)和式(2.8)的运算用图2.1所示的一个流图符号表示。因为这个流图符号形状酷似一只蝴蝶,所以称其为蝶形运算符号。图2.1蝶形运算

26、符号 采用蝶形运算符号的这种图示方法,可以用图22来表示前面所讲到的运算。在图2.2中,N=23=8,式(2.7)给出了X(O)X(3)的计算方法,而式(2.8)给出了X(4)X(7)的计算方法。由图2.1可以看出,要完成一个蝶形运算,需要一次复数乘法和两次复数加法运算。由图2.2可以看出,经过一次分解后,计算一个N点DFT共需要计算两个N/2点DFT可和N/2个蝶形运算。由前面的说明可以知道,计算一个N/2点DFT需要(N-2)2次复数乘法和N/2(N/2-1)次复数加法。那么按图2.2计算N点DFT共需要2(N2)2+N/2=N(N+1)/2N2/2(N1)次复数乘法和N(N/2-1)+2

27、N/2=N2/2次复数加法运算。通过对比可以看出,只进行过这样的次分解就使得运算量减少了近一半,充分说明了这样分解对减少DFT的运算量是十分有效的。由这里N=2M,N/2仍然是偶数,为了使得计算量能够得到进一步的减少,可以仿效前面的做法对N/2点DFT再做进一步分解。图2.2 N点DFT的一次时域抽取分解图(NtiS)与第一次分解相同,和为按奇偶分解成的两个长为N/4的子序列,即 那么,又可表示为 (2.9)其中同理,由和的周期性和Wm尼的对称性最后得到: (2.10)同理可得 (2.11)其中有 这样,如图2.3所示,经过第二次的分解,一个N/2点的DFT就被拆分成为了两个N/4点的DFT了

28、。式(2.10)和式(211)说明了原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=2时,其运算流图应该有M级蝶形,每一级都由N/2蝶形运算构成。每一级运算都

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

30、T的一些运算规律 DIT-FFT运算中是存在一些规律的,下面简单的介绍一下这些规律。(1)原址计算 由图2.4可以看出,DIT-FFT的运算过程是很有规律的。N=2M点的FFT共需要进行进行M级运算,每级由N/2个蝶形运算组成。在同一级运算中,每一个蝶形运算是有两个输入和两个输出的。这两个输入、输出数据节点在同一水平线上,并且它们只对本蝶形运算有效,对其它的蝶形运算是无效的。因为这样,当计算完一个蝶形以后,所得输出数据可立即存入原输入数据所占用的存储单元i以此类推,当M级运算都计算完毕以后,原来存放输入序列数据的N个存储单元中便依次存放了X(k)的N个值。这种利用同一存储单元存储蝶形运算计算输

31、入、输出数据的方法就称为原址计算。很明显原址计算可以节省存储资源,从而降低硬件的成本。(2)旋转因子的变化规律 由8点DIT-FFT的运算流图可以推得在N点DIT-FFT运算流图中,每级都有N/2个蝶形。每个蝶形都要乘以因子。被称为旋转因子,其中p为旋转因子的指数。通过观察图2.4可以推得,第L级共有2L-1个不同的旋转因子。N=23=8时的各级旋转因子表示如下: (2.12)对N=2M的一半情况,第L级的旋转因子为 (2.13)(3)蝶形运算规律设序列x(n)经时域抽选(倒序)后,存入数组X中。如果蝶形运算的两个输入数据相距B个点,应用原位计算,则蝶形运算可表示成如下形式:其中p=J2M-L

32、;J=0,1,.,2L-1;L=1,2,.,M 下标L表示第L级运算,XI,(J)则表示第L级运算后数组元素X(J)的值。(4)序列的倒序仔细分析可以发现看似毫无规律可循的DIT-FFT算法的输入序列的排序其实是很有规律的。由于N=2M,所以顺序数可用M位二迸制数()表示。当N=8时,这种规律就可以用图2.6和表2.1来表示。图2.6 形成倒序的树状图(N-2)表2.1 顺序和倒序二进制数对照表顺序 倒叙十进制数I 二进制数 二进制数 十进制数J0 000 000 01 001 100 42 010 010 23 011 110 64 100 001 15 101 101 56 110 011

33、 37 111 111 75、DIT-FFT的输入顺序输出倒序的信号流图 DIT-FFT的信号流图的形式不是唯一的,它还有多种表现形式。图2.7是DIT-FFT的一种变形的运算流图,其中蝶形运算的旋转因子、运算量与图2.4相同。从图中很容易看出它是一种顺序输入,倒序输出的方式。这种结构的信号流图有一个非常特别的优点就是前一级的旋转因子刚好是后一级上一半蝶形运算的旋转因子,且顺序不变,如果旋转因子的计算采用查表法,只要构造出一个N/2点的,就可以用它来计算N、N/2、N/4、.长度的FFT。因此在大型数据处理系统的FFT算法中,较多采用的是图2.7所示的流图算法。本课题也是采用的图2.7所示的流

34、图算法。图2.7 DIT-FFT的顺序输入倒序输出形式2.2 定点数的相关概念2.2.1 定点数的定义定点数指的是在二进制数中小数点的位置是固定的数。浮点表示法所能表示的数值范围将远远大于定点表示法。对于字长相同的定点数与浮点数来说,浮点数虽然扩大了数的表示范围,但这是以降低精度为代价的,也就是数轴上各点的排列更稀疏了。浮点运算要比定点运算复杂。定点运算时,当运算结果超出数的表示范围,就发生溢出;而在浮点运算时,运算结果超出尾数的表示范围却并不一定溢出,只有当阶码也超出所能表示的范围时,才发生溢出。2.2.2 定点数加减法的溢出及检测方法 在定点小数机器中,数的表示范围为|X|xO x补=4+

35、x 当0x-2 或用同余式表示为: x补=4+X (mod 4) 下式也同样成立: x补+y补=x+y补 (mod 4) 为了得到两数变形补码之和等于两数和的变形补码,同样必须: 1、两个符号位都看做数码一样参加运算; 2、两数进行以4为模的加法,即最高符号位上产生的进位要丢掉。采用变形补码后,任何小于l的正数,两个符号位都是0,即00;任何大于-l的负数,两个符号位都是“1”,即11;如果两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。这是因为两个绝对值小于l的数相加,其结果不会大于或等于2,所以最高符号位永远表示结果的正确符号。2.3 定点数的定标 数的定标就是

36、根据需要,人为地指定小数点的位置,这主要是由于在利用FPGA进行数字系统设计的时候无法将小数直接表示出来。数的定标有Q表示法和S表示法两种表示方法。现在以16位为例,通过表2.3来介绍这两种表示法所能表示的十进制数的范围和精度。这里讨论的为有符号数。表2.3 16位有符号数的定标表示法Q表示 S表示 十进制数表示范围 Q15 S0.15 -1=x=0.9999695 Q14 S1.14 -2=x=1.9999390 Q13 S2.13 -4=x=3.9998779 Q12 S3.12 -8=x=7.9997559 Q11 S4.11 -16=x=15.9995117 Q10 S5.10 -32

37、=x=31.9990234 Q9 S6.9 -64=x=63.9980469 Q8 S7.8 -128=x=127.9960938 Q7 S8.7 -256=x=255.9921875 Q6 S9.6 -512=x=511.9804375 Q5 S10.5 -1024=x=1023.96875 Q4 S11.4 -2048=x=2047.9375 Q3 S12.3 -4096=x=4095.875 Q2 S13.2 -8192=x=8191.75 Q1 S14.1 -16384=x=16383.5 Q0 S15.0 -32768=x=327672.4 有限字长效应和单片机、DSP等器件一样,F

38、PGA也是不能直接处理模拟信号的。模拟信号必须利用A/D转换成数字信号以后才能利用FPGA处理。由于A/D器件的精度是一定的,所以转换之后的数值和真实值之间存在着偏差,这就是输入的量化误差。当利用FPGA实现乘法计算的时候,例如计算两个N位宽的二进制数的乘积,乘积的结果一般都会用2N位宽的二进制数表示,这个时候都会将结果进行适当的舍位处理,否则再进行后面的运算的话最终的结果的数据宽度将是难以想象的。进行舍位就会自然而然的引入误差,这种误差属于运算量化误差,也称为运算噪声。这些误差就使得利用FPGA进行数字信号处理的时候会产生有限字长效应。为了得到精确结果,一方面可以选用合适的运算结构,尽量减少

39、有限字长效应,另一方面可以采用合适的字长以降低运算噪声3。2.5 块浮点数浮点数具有很大的动态范围,可以非常精确地表示一个数值。由于在执行算术运算时需要大量的硬件资源,所以浮点数记数方法的使用成本很高。块浮点数记数方法广泛用于信号处理领域,如执行FFT变换,它消耗的硬件资源要比浮点数少得多。在用FPGA实现FFT算法的时候,经常会使用块浮点的方式来进行。这一方法的初始输入数据限制为|x(n)|l,计算方式按定点方式进行。块浮点数可以跟踪数值动态范围的变化,例如做256点FFT变换,数据宽度为16位,动态范围是-3276832767,经过FFT的第一级运算后,取值范围是-6553665535。为

40、了保持数据宽度不变,可以将所有256个点的数值均除以2,然后寄存器中置入一个“1”,这样通过增加一位寄存器,达到了既增加了数据的动态范围,又未增加数据宽度的目的。这种记数方法就是块浮点数记数方法。总的来说,块浮点数具有定点数的运算速度,同时又有浮点数的计数思想,鉴于块浮点数的这种优点,本课题选择了块浮点数的计数方式3。3 FFT的算法设计3.1 FFT处理器的实现框图本论文主要研究的是32点的按时间抽取的基-2FFT算法的FPGA实现,同时为了提高运行速度还运用了流水线结构,为了兼顾高精度和复杂度的特点还引入了块浮点结构。基-2FFT模块设计主要由6个部分组成:蝶形运算单元、存储单元、地址生成

41、单元、功能切换单元、块浮点单元和时序控制单元4,如图3.1所示。图3.1 FFT处理器结构框图图3.1中:蝶算单元采用DIT方式来完成基-2蝶形运算,如果数据从双口RAM1中读出,则计算结果存入双口RAM2中,反之亦然;存储单元主要用来存储输入数据、中间结果(RAM),预置旋转因子(ROM),以及最后的计算结果(RAM);地址产生单元产生RAM的读、写地址和ROM的读地址;功能切换单元用来完成RAM1和RAM2间数据读写功能的切换;块浮点单元记录蝶算单元输出数据的位信息,并完成蝶算单元输入数据的截位;时序控制单元产生各个模块的使能、控制信号,使整个流程正常工作。3.2 蝶形运算单元的设计 图3

42、.2 给出了递归顺序型FFT算法结构框图。这种形式的FFT只有一个蝶形运算单元,蝶形运算按递归的方式,根据蝶形图从左向右、从上向下先计算第一级的每个蝶形,然后计算第二级、第三级,逐级地循环运算,直至第N/2 log2N个蝶形,完成N点FFT的全部运算。若执行一次蝶形运算的时间为T,则完成N点FFT计算,所需的时间为N/2 log2NT。在实际应用中,输入缓冲单元和输出缓冲单元可以是同一个存储单元,完成N点FFT运算最少只需要N个存储单元来缓存输入数据和中间计算结果。如果输入数据是连续的,那么一次N点FFT运算必须在下一组N点输入数据输入结束之前完成,这往往需要数倍于输入数据时钟的内部运算时钟。这种结构的优点是只有一个蝶形运算单元,所占的硬件资源少,结构简单,稳定性能好,缺点是运算速度缓慢,且时序控制较为复杂。其程序设计如下。图3.2 递归顺序型FFT结构框图module cfft32( clk,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1