您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 《DSP》课程设计-IIR算法的软硬件实现
《DSP》课程设计题目:IIR算法的软硬件实现学生姓名:XXXXXXXX学号:XXXXXXXXX专业:XXXXXXXX院(系):XXXXXXXXIIR算法的软硬件实现摘要:本课题通过软件设计IIR数字滤波器,并对所设计的滤波器进行仿真:应用DSP集成开发环境—CCS调试程序,用TMS320F2812实现IIR数字滤波。具体工作包括:对IIR数字滤波器的基本理论进行分析和探讨。应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。通过硬件液晶显示模块验证试验结果,并对相关问题进行分析。关键词:数字滤波器;DSP;TMS320F2812;无限冲激响应滤波器(IIR)。引言:21世纪是数字化的时代,随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为一门主流技术。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等。这些优势决定数字滤波器的应用越来越广泛。数字滤波器是数字信号处理中最重要的组成部分之一,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。实验原理1.无限冲激响应数字滤波器的基础理论。2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。3.数字滤波器系数的确定方法。4.根据要求设计低通IIR滤波器要求:低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。设计:-确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。模拟边缘频率为:fp1=1000Hz,fs1=12000Hz阻带边缘衰减为:-20logδs=30dB-用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度-计算预扭曲模拟频率以避免双线性变换带来的失真。由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒。wp1=2fstan(Ωp1/2)=6316.5弧度/秒ws1=2fstan(Ωs1/2)=794727.2弧度/秒-由已给定的阻带衰减-20logδs确定阻带边缘增益δs。因为-20logδs=30,所以logδs=-30/20,δs=0.03162-计算所需滤波器的阶数:714.0)5.63162.794727log(2)1)03162.0(1log()log(2)11log(2112pssn因此,一阶巴特沃斯滤波器就足以满足要求。-一阶模拟巴特沃斯滤波器的传输函数为:H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:113307.01)1(3346.05.631611500005.6316)(zzzzzH因此,差分方程为:y[n]=0.3307y[n-1]+0.3346x[n]+0.3346x[n-1]硬件框图TMS320F2812时钟电路电源电路复位电路Pc液晶显示模块信号源发生模块程序流程图开始初始化工作变量调用波形发生子程序产生混叠的波形(高频+低频)调用IIR滤波子程序计算当前输出波形发生计算步长用标准C的sin函数和cos函数计算当前波形值返回波形值IIR滤波用滤波器系数乘以保存的N-1个输入输出值和当前输入值并求和返回计算结果调试过程与步骤:一、软件实现1.实验准备-设置软件仿真模式。-启动CCS2.打开工程,浏览程序,工程目录为D:\dsp\t6\iir\iir.pjt3.编译并下载程序4.打开观察窗口:*选择菜单View-Graph-Time/Frequency…,进行如下设置:*选择菜单View-Graph-Time/Frequency…,进行如下设置:5.清除显示:在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。6.设置断点:在程序iir.c中有注释“/*请在此句上设置软件断点*/”的语句上置软件断点。7.运行并观察结果⑴选择“Debug”菜单的“RUN”项,或按F5键运行程序。⑵观察“IIR”窗口中时域图形;观察滤波效果。实验结果输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。如图:通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减。附IIR算法相对应C语言编程及汇编程序/*========================================================================================*/#includeDSP281x_Device.h//DSP281xHeaderfileIncludeFile#includeDSP281x_Examples.h//DSP281xExamplesIncludeFile#includef2812a.h#includemath.h#defineIIRNUMBER2#defineSIGNAL1F1000#defineSIGNAL2F4500#defineSAMPLEF10000#definePI3.1415926floatInputWave();floatIIR();floatfBn[IIRNUMBER]={0.0,0.7757};floatfAn[IIRNUMBER]={0.1122,0.1122};floatfXn[IIRNUMBER]={0.0};floatfYn[IIRNUMBER]={0.0};floatfInput,fOutput;floatfSignal1,fSignal2;floatfStepSignal1,fStepSignal2;floatf2PI;inti;floatfIn[256],fOut[256];intnIn,nOut;main(void){nIn=0;nOut=0;f2PI=2*PI;fSignal1=0.0;fSignal2=PI*0.1;//fStepSignal1=2*PI/30;//fStepSignal2=2*PI*1.4;fStepSignal1=2*PI/50;fStepSignal2=2*PI/2.5;while(1){fInput=InputWave();fIn[nIn]=fInput;nIn++;nIn%=256;fOutput=IIR();fOut[nOut]=fOutput;nOut++;if(nOut=256){nOut=0;/*请在此句上设置软件断点*/}}}floatInputWave(){for(i=IIRNUMBER-1;i0;i--){fXn[i]=fXn[i-1];fYn[i]=fYn[i-1];}fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;fYn[0]=0.0;fSignal1+=fStepSignal1;if(fSignal1=f2PI)fSignal1-=f2PI;fSignal2+=fStepSignal2;if(fSignal2=f2PI)fSignal2-=f2PI;return(fXn[0]);}floatIIR(){floatfSum;fSum=0.0;for(i=0;iIIRNUMBER;i++){fSum+=(fXn[i]*fAn[i]);fSum+=(fYn[i]*fBn[i]);}return(fSum);}/*========================================*/IIR:ADDBSP,#4MOVBAH,#0MOVBAL,#0MOVL*-SP[4],ACCMOVWDP,#0xFE00MOV@0,#0MOVAL,@0CMPBAL,#2SBL7,GEQL6:SETCSXMMOVLXAR4,#0x3F8016MOVACC,@01ADDL@XAR4,ACCMOVLACC,*+XAR4[0]MOVL*-SP[2],ACCMOVLXAR4,#0x3F8012MOVACC,@01ADDL@XAR4,ACCMOVLACC,*+XAR4[0]LCRFS$$MPYMOVL*-SP[2],ACCMOVLACC,*-SP[4]LCRFS$$ADDMOVL*-SP[4],ACCSETCSXMMOVWDP,#0xFE00MOVACC,@01MOVLXAR4,#0x3F801EADDL@XAR4,ACCMOVLACC,*+XAR4[0]MOVLXAR4,#0x3F801AMOVL*-SP[2],ACCMOVACC,@01ADDL@XAR4,ACCMOVLACC,*+XAR4[0]LCRFS$$MPYMOVL*-SP[2],ACCMOVLACC,*-SP[4]LCRFS$$ADDMOVL*-SP[4],ACCMOVWDP,#0xFE00INC@0MOVAL,@0CMPBAL,#2SBL6,LTL7:MOVLACC,*-SP[4]SUBBSP,#4LRETR/*=============================================================================*/二、IIR算法硬件实现1.实验准备⑴连接实验设备。⑵准备信号源进行AD输入。①取出2根实验箱附带的信号线(如右图,两端均为单声道语音插头)。②用1根信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCIN0”插座注意插头要插牢、到底。这样,信号源波形输出A的输出波形即可送到ICETEK-F2812A板的AD输入通道0。③用1根信号线连接实验箱左侧信号源的波形输出B端口和“A/D输入”模块的“ADCIN1”插座注意插头要插牢、到底。这样,信号源波形输出B的输出波形即可送到ICETEK-F2812A板的AD输入通道1。④设置波形输出A:-向内侧按波形频率选择旋钮,直到标有正弦波的指示灯点亮。-上下调节波形频率选择旋钮,直到标有100-1KHz的指示灯点亮。-调节幅值调整旋钮,将波形输出A的幅值调到适当位置。⑤设置波形输出B:-向内侧按波形频率选择旋钮,直到标有正弦波的指示灯点亮。-上下调节波形频率选择旋钮,直到标有1K-10KHz的指示灯点亮。-调节幅值调整旋钮,将波形输出B的幅值调到适当位置。注意:由于模数输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在0-3V之间。必须用示波器检测信号范围,保证最小值0V最大值3V,否则容易损坏DSP芯片的模数采集模块。2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行3.启动CodeComposerStudio2.21选择菜单Debug-ResetCPU。4.打开工程文件工程目录:D:\dsp\t7\mixerfir\mixerfir.pjt5.编译、下载程序,选择菜单Debug-GoMain,使程序运行到main函数入口位置。6.观察窗口-打开源程序IIR.c,查看源代码。7.运行程序观察结果按CTR控制板的K6键,实现滤波显示,K7键实现混频显示,按K8实现键A、B两信号源分屏显示。8.观察动态效果,调节信号源输出,观察滤波器输出改变信号源输入的波形、频率参数,观察动态效果。9.退出CCS实验结果按CTR控制板的K6键,实现滤波显示,K7键实现混频显示,按K8实现键A、B两信号源分屏显示。本实验是低通滤波,按K6键后将信号源B的波形滤掉结果分析通过无限冲激响应滤波器(IIR)算法的硬件实现与软件实现IIR算法相对比,所设计的IIR滤波器收到较好的效果,完成了设计要求。心得体会:我在老师认真负责的指导下,顺利地完成了关于DSP芯片TMS320F2812的八个实验,并从中收获很多。王忠勇老师曾给我们讲DSPs芯片及DSP
本文标题:《DSP》课程设计-IIR算法的软硬件实现
链接地址:https://www.777doc.com/doc-4958265 .html