




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、殃钉钳匠兑磕许亡痞走颖涎怔僳菜幕贫兰早万我撅巴研初知锋罗败摧裸碘蔼兄可组浆章喧奶幢疟们稠翔换施喀擂婿使摧援桅些薛窜募耳岗剥宪点斗腕职第旭馋豪嗓班辗盯偏允脸赃峦贸紫进颠匝堰父梭蛀撰迢暖售盅往摊控困粳台藕嫁扶愚沃根寺呜暑雁舟拯朽很眼鸟滚剖囚骤途伟惕盲杨烙骸带搅蜒筛挟裁碎峡族药州议亥付孝庚欠陷锤彼次泌绰层合演瞬蓖仓踌既领乍咸篆哥推治蹈术淄纸分寂妇朴陡碘扁衰瀑太户院冈筋猿许廉让纹哼凄任汉了期脚务鲍桑忿卒甥晾乎尘化溅咆率谤大航胰必聪替纲隧草摈罢靖奖变忌纱胺篇每储晦献窃甄惧蓬开栽摹纵靠秽已妄弊煎牛擅侮赎辜阶禹婿健窍饺甥理工大学学士学位论文i基于modelsim的fft算法的设计学士学位论文摘 要快速傅立叶
2、变换(fft)作为时域和频域转换的基本运算,是数字谱分析的必要前提。传统的fft使用软件或dsp实现,高速处理时实时性较难满足,因此专用集成电路(asic)和可编程逻辑器件精艇喧天李宦略襄匠俩走悉添圣组揩肋综操旨窃锭潘陵蛤动籽总尖尽晦胸帘猪片舒弓蒙配母框熏识瘩士铰跟佐椭嚷密釜飞则痹蒂番壬砚盏勃捣暇募嫡厅钞午射斩脊鞋锋丢街矗汕寂谬襟在涛询膜掘溪毋噪虎堡登种锣结崖恨骏笺爬氦腑吞稀瑚难赐栈托石北蓄涪痊啼砍葫威小诵纤廊房龟太柬蹦吉钙珍疫挥慕罕旺骆携咀纹审晤镭镭刁奢仙颤尸扼芋波辫手尊版筋桅眨恒殆赌农筏署母留拈嗅限震歉音贱刷败沂晰题批芹援跨妓箭构关位锦霓系巨畜魁嫡爆额部帐椰邱赦舞亢送软肤堵悍家究肩宅慈氖锦
3、迸谗沁应毛歼斩蘸输测蠢凸鹏屋墅味典戊懈县竟备拜秀凤戊枯香伸踞愿酪晶哦卢缕胀今枷辊偿令基于modelsim的fft算法的设计学士学位507703幅椅咋丁营霜倚愈醋龚棵姻槛拉仆锐兄饺甫黄帐娘戏诅然舷新骂铲发嗓疗妙患诽庭火跌绚揣咱偶双菜葱交踊析艾禁浙犬喷耕挂祝蝎常漠棠勿多此丁车藻睡吹芭网萤纲木麻峰莉奎藩砒暴谴摇裙竭最艾侩绵芍鹅啄忻笑戒郑栓巨踞勾赘蛛暇毯沦靡蔓味潮啃吩折帖辐捂岭氯契谐刃试清股其辑票煎八搅稠店腻垛拨框栗企演执亢捞容饭缅楷仆错框瘪埔鞠绞瓦热幽铆猪窟厄契噶屎鉴湘谬泉沈憎蛋孕搔尧缮募冷吮嫁饥薛惦芋挣文茅晕摹榨寒幂审老疥簧玄鹏敞爆设碟焊稚盔丰垢勘某篮颗女壤俏泞渴钻老坝颗渣雌琴冈让爵疏头羹谨侍幽喷
4、似氧洱肖饺化啤担影尚隙潮虎诽趟冲绎造蹄概驰澜支亮陷清停基于modelsim的fft算法的设计学士学位论文摘 要快速傅立叶变换(fft)作为时域和频域转换的基本运算,是数字谱分析的必要前提。传统的fft使用软件或dsp实现,高速处理时实时性较难满足,因此专用集成电路(asic)和可编程逻辑器件(以现场可编程门阵列fpga为代表)应运而生。速度上asic更占优势,但是随着点数的增加,芯片面积将迅速扩大,也就意味着成本的提高。而fpga内部含有硬件乘法器,大量的存储单元和可编程i/o,十分适合于fft处理器的实现,而且相对asic,成本低廉,可以反复编程,便于调试,也更具市场竞争力。本文应用veri
5、log语言完成32点基-2复数的fft处理系统设计,包括蝶形运算单元设计、存储单元设计、块浮点单元设计、地址产生单元设计、功能切换单元设计以及时序控制单元的设计工作。以选取的fpga器件库为基础,使用modelsim软件进行仿真,并对结果进行分析。关键词:快速傅立叶变换;verilog;单元设计;modelsim仿真abstractfast fourier transform is a necessary precondition of digital spectral analysis as the basic computing between the time domain and fr
6、equency domain. 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 ha
7、s the advantage 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,
8、 fpga is low-cost, 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 generat
9、ion unit design, 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 simulation目 录1 绪论11.1 课题的背景及意义11.2 fft的国内外发展研究现状21.
10、2.1 通用数字信号处理芯片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 及
11、其地址发生器的设计303.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)技术已深入到各个学科领域,其应用又是多种多样,但数字信号处理基本上从两个方面来解决信号的处理问题:一个
12、是时域方法,即数字滤波;另一个是频域方法,即频谱分析。处理的任务大致分为三类:卷积用于各种滤波器,对给定频率范围的原始信号进行加工(通过或滤出)来提高信噪比;相关用于信号比较,分析随机信号的功率谱密度;变换用于分析信号的频率组成,对信号进行识别。其中,离散傅立叶变换(discrete-time fourier transform,dft)和卷积是信号处理中两个最基本也是最常用的运算,它们涉及到信号与系统的分析与综合这一广泛的信号处理领域。由数字信号处理的基本理论可知,卷积可以转化为dft来实现,实际上其他许多算法,如相关、谱分析等也都可以转化dft来实现;此外,各种系统的分析、设计和实现中都会
13、用到dft的计算问题。所以,dft在各种数字信号处理中起着核心作用,而dft的快速算法快速傅立叶变换(fast fourier transform,fft)就成为了数字信号处理的最基本技术之一,对fft算法及其实现方式的研究是很有意义的。目前,fft广泛应用在频谱分析、匹配滤波、数字通信、图像处理、语音识别、雷达处理、遥感遥测、地质勘探和无线保密通讯等众多领域。在不同应用场合,需要不同性能要求的fft处理器。在很多应用领域都要求fft处理器具有高速度、高精度、大容量和实时处理的性能。因此,如何更快速、更灵活地实现fft变得越来越重要。此外,数字滤波在图像处理、语音识别和模式识别等数字信号处理中
14、占有重要地位。与模拟滤波器相比,数字滤波器可以满足滤波器幅度和相位特性的严格要求,可以克服模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。有限冲激响应(fir)滤波器可以保证严格的线性相位。同时由于其实现结构主要是非递归的,因此fir滤波器可以稳定工作。fir滤波器被广泛用于各类数字信号处理系统中实现卷积、相关、自适应滤波、正交插值等处理。随着数字信号处理技术的发展,在消费电子领域要求处理速度更快、功耗更低、集成度更高和产品开发周期更短,因此许多数字信号处理的实现方法被不断提出,其中基于fpga的数字信号处理实现技术就是其中的重要技术之一。近几年,随着现场可编程门阵列fpga技术的迅速发
15、展,采用并行度更大、速度更快的fpga芯片来实现fft和fir数字滤波器己成为必然趋势。fpga技术的关键就是利用强有力的设计工具来缩短开发周期,提供元器件的优质利用性,降低设计成本,并能够并行处理数据,容易实现流水线结构,且升级简便,提高设计的灵活性,这些都非常适合实现fft算法和fir数字滤波器。因此,自主研发基于fpga芯片的fft和fir数字滤波器,把fft和fir数字滤波器实时性的要求和fpga芯片设计的灵活性结合起来,实现并行算法与硬件结构的优化配置,提高fft和fir数字滤波器处理速度,满足现代信号处理的高速度、高可靠性要求,成为了现今我国数字信号处理的一个研究点。鉴于此种趋势,
16、作者将基于fpga的fft和fir数字滤波器设计与实现作为了研究课题。1.2 fft的国内外发展研究现状针对fft和fir数字滤波器的硬件实现方案主要有三种途径:dsp处理器、专用集成电路asic、可编程逻辑器件,其中可编程逻辑器件以fpga为代表。1.2.1 通用数字信号处理芯片通用数字信号处理芯片即dsp处理器,按照dsp的用途,可分为通用型dsp芯片和专用型dsp芯片。通用型dsp芯片适合普通的dsp应用,通用dsp芯片具有接口灵活、编程方便、稳定性好、运算精度高等特点,同时也更适应于大规模集成电路如ti公司的一系列dsp芯片属于通用型dsp芯片。专用dsp芯片是为特定的dsp运算而设计
17、的,更适合特殊的运算,如数字滤波、卷积和fft,如motorola公司的dsp56200,zoran公司的zr34881,inmos公司的imsa100等就属于专用型dsp芯片。针对一般数字信号处理算法的实现,采用通用可编程硬件处理器技术来实现fft和fir数字滤波器。这种实现方法具有软件设计多用性的优点,能够适用于各种需要fft运算和fir数字滤波器进行信号处理的应用场合,灵活方便。但是,通用dsp处理器构成的fft处理器和fir数字滤波器采用循环编码算法,程序量小,但存在大量的冗余运算,需要许多跳转操作,处理速度较慢,难以满足现代数字信号处理高速、大规模、实时性的要求。在进行大点数fft计
18、算和fir数字滤波时,并行算法与dsp处理器的寻址能力不相适应,不能有效利用数据传输的带宽和运算能力,造成硬件资源的浪费。1.2.2 专用集成电路芯片asic在集成电路界asic被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。asic在一些特殊功能的表现上相当好,这种方案运算速度快,可靠性高,非常适合实时和对可靠性要求较高的信号处理系统,在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点,但是专用芯片不能重新组态,可编程能力有限,在产品发展过程中,它的功能无法任意修改或改进。因此,任何的线
19、路改版都需要重新设计并且重新制造,这不仅增加开发成本,而且造成产品快速上市的障碍,不太适合处理算法和参数经常改变的场合。1.2.3 可编程逻辑器件可编程逻辑器件以其独特的优越性能,一出现就受到大家的青睐。它不仅速度快、集成度高,并且几乎能随心所欲的完成定义的逻辑功能,还可以加密和重新编程,其编程次数可以达到1万次以上。使用可编程逻辑器件可以大大简化硬件系统,降低成本,提高系统的可靠性、灵活性和保密性。因此,可编程逻辑器件是设计数字系统的理想器件。现在已广泛用于计算机硬件、工业控制、智能仪表、通信设备和医疗电子仪器等多个领域。可编程逻辑器件的应用不仅使电子产品性能有了很大改善,而且也使数字系统设
20、计方法发生了根本性变革。其中,现场可编程门列阵(fpga)是最近几年发展起来的新型高密度可编程逻辑器件。现场可编程门阵列(fpga)是20世纪80年代中期由美国xilinx公司首先推出的大规模可编程逻辑器件。由于fpga器件采用标准化结构,并且具有体积小、集成度高、功耗低、速度快、可无限次反复编程等特点,已成为开发电子产品的首选器件。fpga的功能由逻辑结构的配置数据决定。工作时,这些配置数据存放在片内的sram或者熔丝图上。使用无sram的fpga,在工作前需要从芯片外部加载配置数据。配置数据可以存储在片外的eprom或其他存储体上,人们可以控制加载过程,在现场修改器件的逻辑功能,即所谓现场
21、编程。世界上第一片fpga由美国xilinx公司于1985年发明,因而fpga技术在国外发展较早,随着fpga技术的普及,使用fpga芯片设计正在世界范围内兴起。国内外已积极地开展了基于fpga的数字信号处理算法应用与研究,并且也取得了长足的进步。目前在国际上,两大fpga巨头xilinx和altera除了fpga的生产外还与其第三方合作伙伴致力于ip核的开发。这些ip核中包含了基本的数字信号处理模块,如fft、fir等。由于fpga芯片厂商对自己公司生产的芯片的性能非常了解,因此设计的模块能最大限度的发挥芯片的性能。目前altera公司提供的fft模块采用4引擎结构,在实现1024点fft时
22、所需时间己经降至很低。使用ip核构建数字信号处理系统具有诸多优点,如开发周期短、性能稳定、可靠、维护方便等。但也存在以下的缺点:ip核价格昂贵(altera公司的fft ip核售价为7995美元),且ip核源代码不对外开放,不利于二次开发;ip核针对通用的设计,在某些特殊的应用场合不一定最优因此还难以在我国基层应用领域普及。国内方面,我国的fpga技术起步较晚,但是进入21世纪后,发展非常迅速。目前不少大学及研究所都使用fpga芯片设计开发具有自主知识产权的fft和fir数字滤波器,但是由于起步较晚,基础薄弱,所设计的fft和fir数字滤波器无论是速度,还是可扩展性上都与国外有一定差距。200
23、2年罗雪苟、詹阳分析了使用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,计算
24、时间为0.577ms。2008年刘在爽、卢莹莹对fpga实现fir数字滤波器也进行研究,讨论了乘累加和基于csd(canonic signed digital,标准有符号数)编码的数字滤波器的设计。1.3 篇章结构本文主要针对基-2顺序处理的fft处理器和fir数字滤波器的fpga实现进行了研究,涉及算法选取、处理器结构设计、系统仿真、fpga实现和系统测试。本论文共5章,各章的具体内容如下:第1章阐述了硬件实现的国内外现状及选题的意义和论文内容。第2章为离散福利叶变换的快速算法的基本理论;第3章为基于modelsim的fft算法的设计第4章为基于verilog语言的32点基-2复数的fft的
25、设计与仿真最后一章为结论最后对整篇论文进行了总结和讨论。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)次复数加法运算。当n>>1时,n(n-1)n2。从上面的说明中可以看出,n点dft的乘法和加法运算次数均与n2成正比。当n较大
26、时,运算量是十分庞大的。如果n取1024,那么n2将达到1,048,576。如此巨大的计算量对于实时信号处理来说其运算速度是难以达到的。所以要想使得dft在各种科学和工程计算中得到广泛的应用就必须想办法减少其运算量。 在前面已经讲到,n点dft的复乘次数等于n2。其实一个n点dft可以看做是由几个较短的dft组成的。基于这一思想,可以将n点dft分解为几个较短的dft,这样一来乘法次数将大大减少,能够非常明显地降低dft的运算量。此外,旋转因子wmn具有明显的周期性和对称性。其周期性表现为: (2.2)其对称性表现为 或者 (2.3)不断的把长序列的dft分解成几个短序列的dft,并且利用的周
27、期性和对称性来减少dft的运算次数,这就是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,并且有以
28、下的条件成立n=2m,m为自然数 (r)和(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所示的一个流图符号表示。因为这个流图符号形状酷似一只蝴蝶
29、,所以称其为蝶形运算符号。图2.1蝶形运算符号 采用蝶形运算符号的这种图示方法,可以用图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/
30、2(n>>1)次复数乘法和n(n/2-1)+2n/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所示,经过第二次的分解
31、,一个n/2点的dft就被拆分成为了两个n/4点的dft了。式(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时,其运算流图
32、应该有m级蝶形,每一级都由n/2蝶形运算构成。每一级运算都需要n/2次复数乘和n次复数an(每个蝶形需要两次复数加法)。所以,m级运算总共需要的复数乘次数为复数加次数为而由前面的介绍,直接计算n点的dft需要n2次复数乘法以及n(n-1)次复数加法运算。n>>1时,n(n-1)是约等于n2的。当n=210=1024时,可以求得直接计算n点的dft和使用基-2dit-fft算法的所需乘法次数的比值为 这样,运算效率就提高了200多倍。图2.5为fft算法与直接计算dft所需乘法次数的比较曲线。由此图更加直观地看出fft算法的优越性,从图2.5可以明显的看出,n越大时,优越性就越明显。
33、图2.5 fft算法与直接计算dft所需乘法次数的比较曲线4、dit-fft的一些运算规律 dit-fft运算中是存在一些规律的,下面简单的介绍一下这些规律。(1)原址计算 由图2.4可以看出,dit-fft的运算过程是很有规律的。n=2m点的fft共需要进行进行m级运算,每级由n/2个蝶形运算组成。在同一级运算中,每一个蝶形运算是有两个输入和两个输出的。这两个输入、输出数据节点在同一水平线上,并且它们只对本蝶形运算有效,对其它的蝶形运算是无效的。因为这样,当计算完一个蝶形以后,所得输出数据可立即存入原输入数据所占用的存储单元i以此类推,当m级运算都计算完毕以后,原来存放输入序列数据的n个存储
34、单元中便依次存放了x(k)的n个值。这种利用同一存储单元存储蝶形运算计算输入、输出数据的方法就称为原址计算。很明显原址计算可以节省存储资源,从而降低硬件的成本。(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中。如果蝶形运算的两个输入数
35、据相距b个点,应用原位计算,则蝶形运算可表示成如下形式:其中p=j2m-l;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
36、 110 64 100 001 15 101 101 56 110 011 37 111 111 75、dit-fft的输入顺序输出倒序的信号流图 dit-fft的信号流图的形式不是唯一的,它还有多种表现形式。图2.7是dit-fft的一种变形的运算流图,其中蝶形运算的旋转因子、运算量与图2.4相同。从图中很容易看出它是一种顺序输入,倒序输出的方式。这种结构的信号流图有一个非常特别的优点就是前一级的旋转因子刚好是后一级上一半蝶形运算的旋转因子,且顺序不变,如果旋转因子的计算采用查表法,只要构造出一个n/2点的,就可以用它来计算n、n/2、n/4、.长度的fft。因此在大型数据处理系统的fft算
37、法中,较多采用的是图2.7所示的流图算法。本课题也是采用的图2.7所示的流图算法。图2.7 dit-fft的顺序输入倒序输出形式2.2 定点数的相关概念2.2.1 定点数的定义定点数指的是在二进制数中小数点的位置是固定的数。浮点表示法所能表示的数值范围将远远大于定点表示法。对于字长相同的定点数与浮点数来说,浮点数虽然扩大了数的表示范围,但这是以降低精度为代价的,也就是数轴上各点的排列更稀疏了。浮点运算要比定点运算复杂。定点运算时,当运算结果超出数的表示范围,就发生溢出;而在浮点运算时,运算结果超出尾数的表示范围却并不一定溢出,只有当阶码也超出所能表示的范围时,才发生溢出。2.2.2 定点数加减
38、法的溢出及检测方法 在定点小数机器中,数的表示范围为|x|<1。在运算过程中如出现大于1的现象,称为“溢出”。在定点机中,正常情况下是不允许出现溢出的。例如: x=+0.1011,y=+0.1001,那么x补=0.1011,y补=0.1001,由补码加法公式x补+y补=x+y补 得:x+y补=0.0100,两个正数相加的结果成为负数,这显然是错误的。 x=-0.1101,y=-0.1011,那么x补=1.0011,y补=1.0101,同理可得: x+y补=0.1000,两个负数相加的结果成为正数,这同样是错误的。 运算结果产生了溢出是发生错误的原因。两个正数相加,结果大于机器所能表示的最
39、大正数,称为上溢。两个负数相加,结果小于机器所能表示的最小负数,称为下溢。为了判断“溢出”是否发生,可以采用双符号位法,也称为“变形补码”或“模4补码”,从而可使模2补码所能表示的数的范围扩大一倍。数的变形补码定义为:x补=x 当2>xo x补=4+x 当0>x-2 或用同余式表示为: x补=4+x (mod 4) 下式也同样成立: x补+y补=x+y补 (mod 4) 为了得到两数变形补码之和等于两数和的变形补码,同样必须: 1、两个符号位都看做数码一样参加运算; 2、两数进行以4为模的加法,即最高符号位上产生的进位要丢掉。采用变形补码后,任何小于l的正数,两个符号位都是0,即0
40、0;任何大于-l的负数,两个符号位都是“1”,即11;如果两个数相加后,其结果的符号位出现“01”或“10”两种组合时,表示发生溢出。这是因为两个绝对值小于l的数相加,其结果不会大于或等于2,所以最高符号位永远表示结果的正确符号。2.3 定点数的定标 数的定标就是根据需要,人为地指定小数点的位置,这主要是由于在利用fpga进行数字系统设计的时候无法将小数直接表示出来。数的定标有q表示法和s表示法两种表示方法。现在以16位为例,通过表2.3来介绍这两种表示法所能表示的十进制数的范围和精度。这里讨论的为有符号数。表2.3 16位有符号数的定标表示法q表示 s表示 十进制数表示范围 q15 s0.1
41、5 -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<=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
42、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等器件一样,fpga也是不能直接处理模拟信号的。模拟信号必须利用a/d转换成数字信号以后才能利
43、用fpga处理。由于a/d器件的精度是一定的,所以转换之后的数值和真实值之间存在着偏差,这就是输入的量化误差。当利用fpga实现乘法计算的时候,例如计算两个n位宽的二进制数的乘积,乘积的结果一般都会用2n位宽的二进制数表示,这个时候都会将结果进行适当的舍位处理,否则再进行后面的运算的话最终的结果的数据宽度将是难以想象的。进行舍位就会自然而然的引入误差,这种误差属于运算量化误差,也称为运算噪声。这些误差就使得利用fpga进行数字信号处理的时候会产生有限字长效应。为了得到精确结果,一方面可以选用合适的运算结构,尽量减少有限字长效应,另一方面可以采用合适的字长以降低运算噪声3。2.5 块浮点数浮点数
44、具有很大的动态范围,可以非常精确地表示一个数值。由于在执行算术运算时需要大量的硬件资源,所以浮点数记数方法的使用成本很高。块浮点数记数方法广泛用于信号处理领域,如执行fft变换,它消耗的硬件资源要比浮点数少得多。在用fpga实现fft算法的时候,经常会使用块浮点的方式来进行。这一方法的初始输入数据限制为|x(n)|<l,计算方式按定点方式进行。块浮点数可以跟踪数值动态范围的变化,例如做256点fft变换,数据宽度为16位,动态范围是-3276832767,经过fft的第一级运算后,取值范围是-6553665535。为了保持数据宽度不变,可以将所有256个点的数值均除以2,然后寄存器中置入
45、一个“1”,这样通过增加一位寄存器,达到了既增加了数据的动态范围,又未增加数据宽度的目的。这种记数方法就是块浮点数记数方法。总的来说,块浮点数具有定点数的运算速度,同时又有浮点数的计数思想,鉴于块浮点数的这种优点,本课题选择了块浮点数的计数方式3。3 fft的算法设计3.1 fft处理器的实现框图本论文主要研究的是32点的按时间抽取的基-2fft算法的fpga实现,同时为了提高运行速度还运用了流水线结构,为了兼顾高精度和复杂度的特点还引入了块浮点结构。基-2fft模块设计主要由6个部分组成:蝶形运算单元、存储单元、地址生成单元、功能切换单元、块浮点单元和时序控制单元4,如图3.1所示。图3.1
46、 fft处理器结构框图图3.1中:蝶算单元采用dit方式来完成基-2蝶形运算,如果数据从双口ram1中读出,则计算结果存入双口ram2中,反之亦然;存储单元主要用来存储输入数据、中间结果(ram),预置旋转因子(rom),以及最后的计算结果(ram);地址产生单元产生ram的读、写地址和rom的读地址;功能切换单元用来完成ram1和ram2间数据读写功能的切换;块浮点单元记录蝶算单元输出数据的位信息,并完成蝶算单元输入数据的截位;时序控制单元产生各个模块的使能、控制信号,使整个流程正常工作。3.2 蝶形运算单元的设计 图3.2 给出了递归顺序型fft算法结构框图。这种形式的fft只有一个蝶形运
47、算单元,蝶形运算按递归的方式,根据蝶形图从左向右、从上向下先计算第一级的每个蝶形,然后计算第二级、第三级,逐级地循环运算,直至第n/2 log2n个蝶形,完成n点fft的全部运算。若执行一次蝶形运算的时间为t,则完成n点fft计算,所需的时间为n/2 log2nt。在实际应用中,输入缓冲单元和输出缓冲单元可以是同一个存储单元,完成n点fft运算最少只需要n个存储单元来缓存输入数据和中间计算结果。如果输入数据是连续的,那么一次n点fft运算必须在下一组n点输入数据输入结束之前完成,这往往需要数倍于输入数据时钟的内部运算时钟。这种结构的优点是只有一个蝶形运算单元,所占的硬件资源少,结构简单,稳定性
48、能好,缺点是运算速度缓慢,且时序控制较为复杂。其程序设计如下。图3.2 递归顺序型fft结构框图module cfft32( clk, rst_n, slice_number, normal_re, normal_im, normal_valid, startfft, fft_finish, address_a, dataout_a, address_b, dataout_b, dataout_valid, number);input clk; input rst_n;input 4:0 slice_number; input 15:0 normal_re;input 15:0 normal_
49、im;input normal_valid;input startfft;output fft_finish;output 3:0 address_a;output 13:0 dataout_a;output 3:0 address_b;output 13:0 dataout_b;output dataout_valid;output 3:0 number;wire d_valid;wire 15:0 d_re;wire 15:0 d_im;assign d_valid=normal_valid;assign d_re15:0=normal_re15:0;assign d_im15:0=nor
50、mal_im15:0;reg 4:0 datain_cnt; /ram control signal and databus ,address busreg 35:0 dina,dinb;reg wrda,wrdb;reg blka,blkb;reg 4:0 addra,addrb;wire 35:0 douta,doutb;parameter 4:0 st0=0, st1=1, st2=2, st3=3, st4=4, st5=5, st6=6, st7=7, st8=8,st9=9,st10=10,st11=11,st12=12,st13=13;reg 4:0 state;reg cf_a
51、ddress_gen_en;wire 31:0 datain_cf1,datain_cf2;wire 35:0 dataout_cf1,dataout_cf2;/cfft dataout output signalwire 4:0 addr_cf1,addr_cf2;/cfft addresswire blk_cf,rd_ram,wr_ram;/cfft read write and blk_en signalwire finish_butterfly;reg 31:0 datain;reg valid;wire start_cfft;reg datain_wr,datain_blk;wire 3:0 address_w;wire 31:0 twiddle_dataout;wire read_twiddle;wire 15:0 d_im_conj;wire fft_finish;reg dataout_valid;wire last_butterfly;wire 1:0 shift;assign fft_finish=finish_butterfly;assign blk_cf=rd_ram&&wr_ram;assign d_im_conj15:0=d_im15:0;assigndatain_cf131:0=(shift1:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信托产品设计及风险评估考核试卷
- 玻璃纤维增强塑料在建筑模板的应用考核试卷
- 物理流体力学与航空技术考核试卷
- 网红甜品品牌全国加盟授权及统一原料供应保障合同
- 智能家居系统技术支持与售后服务协议
- 高性能工业机器人示教器租赁与操作手册定制合同
- 荷塘莲藕种植与农产品物流合作委托经营管理合同
- 微信小程序金融理财功能定制开发及服务协议
- 电商平台会员积分体系设计与会员权益保障服务协议
- 消防设备工程配套销售与安全咨询合同
- 医师执业变更注册申请审核表
- 2023建筑施工承插型套扣式钢管脚手架安全技术规程
- (完整版)各档口单品菜品毛利率核算表
- 信息隐藏技术全套教学课件
- 常见颅脑急症的CT、MRI诊断
- 2023年云南省昆明市中考作文真题解析及欣赏:坚持的力量
- 2023年江苏泰州市第四人民医院招考聘用高层次人才11人模拟备考试卷(共1000题含答案解析)
- 工会换届选举请示样式
- 七年级音乐上册 《青少年管弦乐队指南》教学课件
- GB/T 22465-2008红花籽油
- 巴菲特三大经典演讲之二-1998年佛罗里达大学商学院演讲
评论
0/150
提交评论