FFT算法及IIRFIR滤波器的设计.docx
- 文档编号:7758156
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:18
- 大小:310.04KB
FFT算法及IIRFIR滤波器的设计.docx
《FFT算法及IIRFIR滤波器的设计.docx》由会员分享,可在线阅读,更多相关《FFT算法及IIRFIR滤波器的设计.docx(18页珍藏版)》请在冰豆网上搜索。
FFT算法及IIRFIR滤波器的设计
《DSP原理及其应用》
实验设计报告
实验题目:
FFT算法及滤波器的设计
摘要
随着信息科学的迅猛发展,数据采集与处理是计算机应用的一门关键技术,它主要研究信息数据的采集、存储和处理。
而数字信号处理器(DSP)芯片的出现为实现数字信号处理算法提供了可能。
数字信号处理器(DSP)以其特有的硬件体系结构和指令体系成为快速精确实现数字信号处理的首选工具。
DSP芯片采用了哈佛结构,以其强大的数据处理功能在通信和信号处理等领域得到了广泛应用,并成为研究的热点。
本文主要研究基于TI的DSP芯片TMS320c54x的FFT算法、FIR滤波器和IIR滤波器的实现。
首先大概介绍了DSP和TMS320c54x的结构和特点并详细分析了本系统的FFT变换和滤波器的实现方法。
关键词:
DSP、TMS320c54x、FFT、FIR、IIR
Abstract
Withtherapiddevelopmentofinformationscience,dataacquisitionandprocessingisakeytechnologyofcomputerapplications,themainresearchofitiscollection,storageandprocessingofinformationdata.Theemergenceofthedigitalsignalprocessor(DSP)chipoffersthepotentialfortherealizationofthedigitalsignalprocessingalgorithm.Digitalsignalprocessor(DSP),withitsuniquehardwaresystemstructureandinstructionsystembecomethefirsttoolofquicklyandaccuratelyrealizethedigitalsignalprocessing.DSPchipadoptedharvardstructure,withitspowerfuldataprocessingfunctionsinthecommunicationandsignalprocessing,andotherfieldshasbeenwidelyapplied,andbecometheresearchhotspot.
ThispapermainlystudiestheFFTalgorithmbasedonTMS320c54xDSPchipofTI,therealizationofFIRfilterandIIRfilter.FirstintroducedtheDSPandTMS320c54xbriefly,thenanalyzedindetailthestructureandcharacteristicsofthesystemoftherealizationofFFTtransformandfiltermethod.
Keyword:
DSP、TMS320c54x、FFT、FIR、IIR
1.绪论
1.1课题研究的目的和意义
数字信号处理器(DSP)已经发展了多20多年,最初仅在信号处理领域内应用,近年来随着半导体技术的发展,其高速运算能力使很多复杂的控制算法和功能得以实现,同时将实时处理能力和控制器的外设功能集于一身,在控制领域内也得到很好的应用。
随着信息时代和数字世界的到来,数字信号处理己成为一门极其重要的学科和技术领域,它在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
作为信号处理,和频谱分析最直接相关的是傅立叶傅立叶变换即FFT。
人们已经熟知,离散傅立叶变换即(DFT)和数字滤波是数字信号处理器的基本内容。
数字滤波在数字信号处理中占有重要的地位,数字滤波器又分为有限冲激响应滤波器(FIR)和无限冲激响应滤波器(IIR)。
数字滤波作为数字信号处理的重要组成部分有着十分广泛的应用前景,可作为应用系统对信号的前置处理。
同时用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受外界影响等优点外,还具有灵活性好的特点,可对DSP芯片编程来实现数字滤波的参数修改,进而十分方便地修改滤波器的特性。
因此基于DSP的数字滤波被广泛应用于语音、图像、软件无线电等领域,具有广阔的发展空间。
1.2本课题研究的现状
自20世纪70年代末80年代初,DSP芯片诞生以来DSP芯片得到了飞速的发展。
在20多年时间里,DSP芯片已经在信号处理、通信、雷达等许多领域到广泛的应用。
目前,DSP芯片的价格越来越低,性能价格比日益提高,具有巨大的应用潜力,经过十几年的发展,DSP器件在高速度、可编程、小型化、低功耗等方面都有了长足的发展,单片DSP芯片最快每秒可完成16亿次(1600MIPS,每秒1600兆次指令)的运算,生产DSP器件的公司也不断壮大,目前,市场占有率前四名依次为:
TexasInstruments、Lucent、AnalogDevice、Motorola。
在TI的DSP产品中’C1X’、‘C2X’、‘C2XX’、‘C5XX’、‘C54X’、‘C62X’等系列是定点运算指令系统的DSPs;’C3X’、‘C4X’、‘C67X’等系列是浮点运算指令系统的DSPs;‘C8X’等系列是多DSPs集成系统;‘AV7100’、‘AV711’等系列是用于视频、音频领域的专用数字压缩产品
2.DSP及CCS平台简介
2.1DSP系统构成
一个典型的DSP系统如图2.1所示:
图2.1
从上图中可以看出,用DSP进行信号处理的流程如下:
先进行信号的数字化,一般的信号都是模拟信号,但是DSP只接收数字化的信息,故要先进行这一步操作将模拟信号经过A/D转化成数字信号,然后根据实际的应该过程,进行相对应的卷积、FTT变化等处理,接着将这些处理后的数字信号用D/A进行转化,形成模拟的采样值,最后将得到的不平滑的滤波通过滤波器等设备进行处理,从而得到最终的模拟连续的信号。
2.2DSP芯片的基本结构
可编程DSP芯片是一种特殊结构的微处理器,为了快速进行数字信号处理,一般都采用特殊的软硬件结构例如TMS320系列DSP处理器的基本结构包括
(1)哈佛结构;
(2)流水线操作;(3)专用的硬件乘法器;(4)特殊的DSP指令;(5)快速的指令周期。
这些特点使得TMS320系列DSP处理器可以实现快速的DSP运算,并使大部分运算,如乘法能在一个指令周期内完成TMS320系列处理器是软件可编程器件所以具有通用微处理器的方便灵活的特点。
2.3TMS320C54x系列芯片
TMS320C54x是为实现低功耗,高性能而设计的定点DSP芯片主要应用在通信系统方面,该芯片的内部结构及指令系统都是全新设计的,它的主要特点是:
(1)运算速度快,
(2)优化的CPU结构,(3)低功耗方式,(4)智能外设。
本文采用的TMS320C5416处理器在本系列中处于先进水平。
2.4CCS开发环境
CCS全称是CodeComposerStudio,它包括:
1.CCS代码生成工具;2.CCS集成开发环境IDE;3.DSP/BIOS插件程序和API;4.RTDX插件主机接口和API等。
它提供了配置、建立、调试、跟踪和分析程序的工具,便于实时嵌入式信号处理程序的编制和测试,能够加速开发进程,提高工作效率。
在CCS环境下的程序开发过程如下图2.2所示:
图2.2
CCS基本的编辑界面如图2.3,通过它可以编辑、编译调试DSP目标程序。
它主要由几个主要的窗口组成:
工程组显示窗口、程序内容显示窗口、编辑信息提示窗口和主要工具栏。
另外,在编辑过程中还可以显示诸如存储器观察窗口、变量监视框、图形显示框等调试界面。
他们为程序编写调试提供多种手段,为软件开发提供了极大的方便。
图2.3CCS基本编辑界面
3.FFT算法程序及应用
3.1FFT简介
FFT是一种DFT的高效算法,称为快速傅立叶变换(fastFouriertransform),它根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
在通信系统中,FFT的应用主要是两个方面:
1.它可以直接用来分析信号的频谱。
频谱分析在信号处理中的应用极广,如语音通讯的频带压缩需要对语音信号进行频谱分析,在军事中,声纳系统对目标的分析以及雷达系统对运动目标的测定等都需要特定的频谱分析。
在各种测量仪器中,频谱分析有着更多的应用。
2.利用快速卷积求解FIR滤波器的输出。
3.2FFT设计方法
FFT是DFT的一个快速算法,只是将DFT分解开来进行运算,来达到减少运算量的目的。
FFT算法将长序列的DFT分解为短序列DFT,N点的DFT先分解为2个N/2点的DFT,每个N/2点的DFT又分解为N/4点的DFT,如此这般。
这里最小的变换点数即所谓的“基数”(radix)因此,基数为2的FFT算法的最小变换(或称蝶形变换)就是2点DFT,是最基本的运算单位。
一般N点FFT对应于N个输入样值,有N个频域样值与之对应。
对DFT分解的算法可以分为两种:
时间抽取法和频率抽取法。
本文采用的是时间抽取法。
在时间抽取FFT算法过程中,FFT算法由两部分组成:
码位倒置和2点的DFT运算。
所以,FFT算法的基本流程如图3.1:
图3.1
3.3FFT的仿真结果
本课题所研究的输入函数是一个谐波为200Hz和500Hz的周期信号
。
在CCS平台上直接编写原函数,观察波形;然后经过FFT后,再次观察波形。
前后两个波形大致如下:
图3.2输入函数波形
图3.3输出函数的波形
4.FIR滤波器的实现
4.1FIR滤波器的特点
在数字信号处理应用中往往需要设计线性相位的滤波器,FTR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。
FTR滤波器不断地对输入样本x(n)延时后,再作乘法累加算法,将滤波结果y(n)输出,因此,FIR实际上是一种乘法累加运算。
在数字滤波器中,FIR滤波器的最主要的特点是没有反馈回路,故不存在不稳定的问题同时,可以在幅度特性是随意设置的同时,保证精确的线性相位。
稳定和线性相位特性是FIR滤波器的突出优点。
另外,它还有以下特点设计方式是线性的硬件容易实现滤波器过渡过程具有有限区间相对IIR滤波器而言,阶次较高,其延迟也要比同样性能的IIR滤波器大得多。
4.2FIR滤波器的实现方法
采用DSP处理器来实现,DSP处理器是专为数字信号处理而设计的,如TI公司的TMS320c54x系列,AD公司的,ADSP21X,ADSP210X系列等。
它的主要数字运算单元是一个乘累加器,能够在一个机器周期内完成一次乘累加运算,配有适合于信号处理的指令,具备独特的循环寻址和倒序寻址能力。
这些特点都非常适合数字信号处理中的滤波器设计的有效实现,并且它速度快,成本低,在过去的20多年的时间里,软件可编程的DSP器件几乎统治了商用数字信号处理硬件的市场。
用DSP芯片实现数字滤波除了具有稳定性好、精确度高、不受环境影响外,还具有灵活性好的特点。
用DSP可编程芯片实现数字滤波可通过修改滤波器的参数十分方便的改变滤波器的特性。
FIR滤波器的DSP的实现将数据进行滤波的过程就是将一个待处理的数据按照一定的算法进行处理的过程,从而来得到自己期望的值。
在这个满足线性关系的差分方程中,保持着线性不变的特定,其输出序列y(n)和输入x(n)之间存在着如式
(1)所示的关系:
其中,x(n)为输入序列,y(n)为输出序列,ak和bk为滤波器系数,N是滤波器的阶数。
若上式中所有的bk均为零,则有FIR滤波器的差分方程为:
对上式进行Z变换得到FIR滤波器的传递函数为:
从上面的三个公式中可以看出,H(z)是Z¯¹的N-1次多项式,故在Z的范围内存在着N-1的原点和重级点,故N阶滤波器一般存在着的单元包括N个延迟单元、N个加法器与N+1个乘法器,能够组成如图4.1所示的两种结构。
图4.1
从图2中可以看到,无论是哪一种结构,FIR滤波器的单位时间响应是等长的,故稳定性强,不易被噪声等所影响。
在本文中采用的TI公司生产的TMS320C54X作为DSP处理芯片,根据如图4.2所示的流程图的过程,设计了一系列的转变和编程最终实现了FIR滤波器。
图4.2
具体的过程如下,针对一个FIR滤波器,具有N阶,故可以在数据存储器中开辟一个缓冲区,在这个滑窗中存放N个最新的输入样本,且在这个区域内输入新的样本时,只需要将想对应的数据进行覆盖即可。
最后利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首尾相邻。
FIR滤波器的核心算法是计算输入信号与滤波器系数的卷积。
设x(n)为输入信号,h(n)为FIR滤波器的冲击响应,n=0,…,N-1,则FIR滤波器的输出y(n)就是x(n)与h(n)的卷积,即:
从而利用了DSP芯片就可以进行编程,实现FIR所需要的数字滤波器的功能。
4.3FIR滤波器的调试与仿真
汇编程序调试先在CCS中建立新的工程fir.pjt,再将汇编语言源文件(.asm或.c)文件及中断向量文件(.asm)、位文件(.cmd),添加到工程中。
若为C语言程序则还需添加“stdio.h”、“math.h”,“rts.lib”。
编译后生成.out文件,设置断点,并将.out文件加载进来,最后对view中的Graph进行设置,设置完就可以看到经过FIR滤波器的波形了。
输入同样是谐波为200Hz和500Hz的周期信号
。
输入、输出波形大致如下:
图4.3输入函数波形
图4.4输出函数波形
5.IIR滤波器的实现
5.1IIR滤波器的特点
1.IIR数字滤波器的系统函数可以写成封闭函数的形式。
2.IIR数字滤波器采用递归型结构,即结构上带有反馈环路。
IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
3.IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
4.IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。
IIR滤波器具有无限长的单位脉冲响应。
在结构上存在反馈回路,即是递归型的。
也就是说,IIR滤波器的输出不仅与输入有关,而且与过去的输出有关。
滤波器输出y(n)不仅依赖于当前输入x(n)及过去输入x(n—1).x(n—2),…,x(n—N+1),而且依赖于过去的输出y(n—1)、y(n—2),…,y(n—N+1)。
IIR滤波器由于具有结构简单、运算量小的特点,因而得到了较广泛的应用。
IIR滤波器结构具有多种形式,归纳起来主要有以下几种。
(1)直接I型(也称直接型),
(2)直接H型(也称正推型),(3)级联型,(4)并联型,(5)格型(lattice)。
直接I型结构需要2N级延迟单元,直接II型结构与直接I型结构相比节省了一半延迟,即需要N级延迟单元,是最常用的IIR滤波器之一。
5.2IIR滤波器的实现方法
N阶滤波器的脉冲传递函数表达式为:
它的差分方程表达式为:
系统中所设计的输入信号是由频率分别为f1=200Hz,f2=500Hz,的2个正弦信号所合成的。
系统采用了C语言进行编程实现,滤波程序流程如图5.1所示。
图5.1
5.3IIR滤波器的调试与仿真
从而利用了DSP芯片就可以进行编程,实现IIR所需要的数字滤波器的功能。
输入函数同样是谐波为200Hz和500Hz的周期信号
。
使用CCS平台的图形显示功能观察滤波前后信号的波形图,波形大致如下:
图5.2输入函数波形
图5.3输出函数波形
6.总结
本课题主要是通过TMS320c54x和CCS平台来实现FIR和IIR滤波器设计和仿真。
通过对本课题的研究,关于数字信号处理方面的理论知识得到了丰富和提高,理解了FFT算法的原理,及FIR和IIR滤波器的设计原理,学习了CCS的波形观察窗口观察输入/输出信号波形和频谱变化情况。
熟悉了课题研究的整体思路和方法,认识到进行课题研究应具备的素质。
此外,自己还得出一个结论:
知识必须通过应用才能实现其价值!
有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
致谢
通过本次课题设计,我受益颇多,首先要感谢李老师的悉心指导。
由于我之前都没接触过这门课,学起来比较吃力。
李老师在我遇到问题时,总是耐心地讲解,给了我极大启发性的指导。
李老师更加丰富了我的专业知识,并教会了如何去剖析一个整体的设计方案,给我创造实际动手的锻炼机会。
在此向李老师致以我最诚挚的感激之情!
我还要感谢同学们对我的帮助与支持,感谢在课题期间积极地与我探讨解决方案,并且互相学习,共同勉励的同学们。
参考文献
【1】戴明桢,周建江编著.TMS320C54xDSP结构、原理及应用.北京航空航天大学出版社,2007
【2】汪安民.TMS320C54XXDSP实用技术.清华大学出版社.2002:
5-15
【3】彭启宗.TMS320C54X实用教程.电子科技大学出版社2000:
3-7
【4】程佩清数字信号处理教程(第二版).北京清华大学出版社,2001
【5】申敏,邓矣兵,郑建宏,刘栋.DSP原理及其在移动通信中的应用.人民邮电出版社.2001:
3-12
附录1
产生原函数及FFT的代码:
#include"math.h"
#include"tms320.h"
#include"dsplib.h"
#include"t4_SCALE.h"
#defineSIGNAL1F20
#defineSAMPLEF64
#definePI3.1415926
#defineSAMPLENUMBER128
shortscale=1;
shortnoscale=0;
shortINPUT[SAMPLENUMBER],x[SAMPLENUMBER];
floatOUTPUT[SAMPLENUMBER];
voidMakeWave();
voidMakeWave()
{
inti;
floatsample_step=1.0/SAMPLEF;
floatj=0.0;
for(i=0;i { INPUT[i]=2*sin(PI*2*j*200)*1024+sin(PI*2*j*500)*1024; j=j+sample_step; } } voidmain() { inti; MakeWave(); for(i=0;i { x[i]=INPUT[i/2]; } for(i=1;i { x[i]=0.0; } cbrev(x,x,SAMPLENUMBER/2); cfft512(x,scale); for(i=0;i { OUTPUT[i]=x[i]; } while (1); } 附录2 产生原函数及实现IIR和FIR的代码: //测试FIR及CPUTIMER0,1,2 #include"DSP5416_Device.h"//DSP5416HeaderFile #include"DSP5416_Examples.h"//DSP5416xExamplesIncludeFile #include"IQmathLib.h" #include"filter.h" #include #include #defineFIR_ORDER50 #pragmaDATA_SECTION(lpf,"firfilt"); FIR16lpf=FIR16_DEFAULTS; #pragmaDATA_SECTION(dbuffer,"firldb"); longdbuffer[(FIR_ORDER+2)/2]; constlongcoeff[(FIR_ORDER+2)/2]=FIR16_LPF50; intxn[100]; intindex,in,in1,input,output; floatyn[100]; floatout; //Prototypestatementsforfunctionsfoundwithinthisfile. interruptvoidcpu_timer0_isr(void); interruptvoidcpu_timer1_isr(void); interruptvoidcpu_timer2_isr(void); voidmain(void) { InitSysCtrl(); DINT; InitPieCtrl(); IER=0x0000; IFR=0x0000; InitPieVectTable(); EALLOW;//ThisisneededtowritetoEALLOWprotectedregisters GpioMuxRegs.GPFMUX.bit.SPISTEA_GPIOF3=0; GpioMuxRegs.GPFDIR.bit.GPIOF3=1; PieVectTable.TINT0=&cpu_timer0_isr; PieVectTable.XINT13=&cpu_timer1_isr; PieVectTable.TINT2=&cpu_timer2_isr; GpioMuxRegs.GPEMUX.bit.XNMI_XINT13_GPIOE2=1; XIntruptRegs.XNMICR.bit.ENABLE=0; XIntruptRegs.XNMICR.bit.SELECT=0; EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters InitCpuTimers();//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FFT 算法 IIRFIR 滤波器 设计