您好,欢迎访问三七文档
无限冲激响应滤波器(IIR)算法及实现姓名:徐旭日学号:20130700332专业班级:电子信息工程(2)班指导老师:王忠勇日期:2016/6/2摘要:21世纪是数字化的时代,随着信息处理技术的飞速发展,数字信号处理技术逐渐发展成为一门主流技术。相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等。这些优势决定数字滤波器的应用越来越广泛。数字滤波器是数字信号处理中最重要的组成部分之一,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。本课题通过软件设计IIR数字滤波器,并对所设计的滤波器进行仿真:应用DSP集成开发环境—CCS调试程序,用TMS320F2812实现IIR数字滤波。具体工作包括:对IIR数字滤波器的基本理论进行分析和探讨。应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。通过硬件液晶显示模块验证试验结果,并对相关问题进行分析。关键词:数字滤波器;DSP;TMS320F2812;无限冲激响应滤波器(IIR)。引言:随着数字化飞速发展,数字信号处理技术受到了人们的广泛关注,其理论及算法随着计算机技术和微电子技术的发展得到飞速发展,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。数字信号处理由于运算速度快,具有可编程的特性和接口灵活的特点,使得它在许多电子产品的研制、开发和应用中,发挥着重要的作用。采用DSP芯片来实现数字信号处理系统是当前发展的趋势。在数字信号处理中,数字滤波占有极其重要的地位。滤波是信号处理中的一个重要概念。滤波分经典滤波和现代滤波。经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念。根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。换句话说,就是工程信号是不同频率的正弦波线性叠加而成的,组成信号的不同频率的正弦波叫做信号的频率成分或叫做谐波成分。只允许一定频率范围内的信号成分正常通过,而阻止另一部分频率成分通过的电路,叫做经典滤波器或滤波电路。数字滤波是语音和图像处理、模式识别、谱分析等应用中的一个基本处理算法。在许多信号处理应用中用数字滤波器替代模拟滤波器具有许多优势。数字滤波器容易实现不同幅度和相位频率特性指标。用DSP芯片实现数字滤波除具有稳定性好、精度高、不受环境影响外,还具有灵活性好的特点。用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便的改变滤波器的特性。原理:1.无限冲激响应数字滤波器的基础理论。利用模拟滤波器成熟的理论及其设计方法来设计IIR数字低通滤波器是常用的方法。设计过程是:按照数字滤波器技术指标要求一个过渡模拟低通滤波器()aHs,再按照一定的转换关系将()aHs转换成数字低通滤波器函数H(z)。由此可见,设计的关键问题就是要找到这种关系,将s平面的()aHs转换成z平面上的H(z)。将系统函数()aHs从s平面转换到z平面的方法有多种,但工程上常用的是脉冲响应不变法和双线性变换法。在课题中我们采用双线性变换法设计IIR数字低通滤波器。通过采用非线性频率压缩的方法,将整个模拟频率轴压缩到/T之间,再用Z=sTe转换到z平面上。设()aHs,s=j,经过非线性频率压缩后用1()aHs,1S=j1表示,这里用正切变换实现频率压缩:121tan()2TT实现了s平面上整个虚轴完全压缩到1S平面上虚轴的/T之间的转换。由上式得到:j=11211jTjTeTe代人s=j,1S=j1,得到:11211sTsTeSTe再通过z=1sTe从1S平面转换到Z平面得到11211zSTz;22sTzsT上面两式即称为双线性变换。2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。3.数字滤波器系数的确定方法。4.根据要求设计低通IIR滤波器要求:低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。设计:①确定数字低通滤波器的技术指标:通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logsdB。模拟边缘频率为:fp1=1000Hz,fs1=12000Hz阻带边缘衰减为:-20logs=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弧度/秒-由已给定的阻带衰减-20logs确定阻带边缘增益s。因为-20logs=30,所以logs=-30/20,s=0.03162计算所需滤波器的阶数:n≥111log(1)2log()ssp=21log(1)(0.03162)794727.22log()6316.5=0.714因此,一阶巴特沃斯滤波器的传输函数为:H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:H(z)=116316.50.1122(1)110.7757500006316.51zzzz因此差分方程为:y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]软件流程图:开始IIR滤波波形发生返回波形值返回计算初始化工作变量计算IIR滤波子程序计算当前输出用滤波器系数乘以保存的N-1个输入输出值和当前输入值并求和调用波形发生子程序产生混叠波形(高频+低频)计算步长用标准C的sin和cos计算当前波形值一、软件实现1、实验准备—设置软件仿真模式—启动CCS2、打开工程、浏览程序。3、编译并下载程序4、打开窗口:*选择菜单View—Graph-Time/Frequency…,进行如下设置出现窗口如下:选择菜单View-Graph-Time/Frequency…,进行如下设置:出现窗口:5、清除显示:在以上打开的窗口中单击鼠标右键,选择弹出菜单中“ClearDisplay”功能。6、设置断点:在程序iir.c中有注释“/*请在此句上设置软件断点*/”的语句上设置软件断点7、运行并观察结果(1)选择“Debug”菜单中的“RUN”项,或按F5键运行程序。(2)观察“IIR”窗口中时域图形:观察滤波效果。实验结果:本次调试过程中出现了不少问题,但在辅导老师的指导下顺利完成IIR数字滤波实验。软件调试结果如下图示:输入波形为一个低频率的正弦波与一个高频率的余弦波叠加而成。如图:通过观察频域和时域图,得知:输入信号为低频和高频叠加的信号,输入波形中的低频波形通过了滤波器,而高频部分则被衰减,从而达到了滤波的效果。但是可以看出滤波后还是存在微弱的高频部分,也就是高频部分没有完全虑去,这从时域图中也可以看出。二、IIR算法硬件实现原理:1、AD原理(上面已论述)2、模数转换工作过程—模数转换模块接到启动转换信号后,按照设置进行相应通道的数据采样转换。—经过一个采样时间的延迟后,将采样结果放入AD数据寄存器中保存。—等待下一个启动信号。3、模数转换的程序控制模数转换相对于计算机来说是一个比较缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择合适的触发转换的手段,也要能及时的保存结果。4、混频波形的产生将接收到的两路AD采样信号进行相加,并对结果的幅度进行限制,从而产生混合后的输出波形。实验中采用了同相位混频的方法,也可修改程序完成异相混频法。5、IIR滤波器工作原理及参数的计算参见实验七6、说明:本程序在AD中断中对AD进行连续采样。由于需要进行实时混频,所以交替转换通道0(ADCIN0)和通道1(ADCIN1)。混频的波形通过IIR滤波器,得到输出波形。DSP开发板框图:硬件框图:一个DSP系统可分为最小系统设计和外围接口设计,DSP在必要的工作环境下才能正常工作。DSP最小系统包括复位、时钟和电源电路。液晶显示模块PCTMS320F2812信号源发生模块电源电路时钟电路复位电路程序流程图:开始初始化:CPU频率、ICETEK-CTR、AD控制寄存器启动AD转换产生中断?保存结果到Voltage1和Voltage2数组中检查按键为K8键时,把采集到的两路ad数据在lcd上显示出来检查按键为K7时,把采集到的两路ad数据混频后在lcd上显示出来检查按键为K6时,把采集到的两路ad数据混频后在lcd上显示出来实验准备:(1)连接实验设备(2)准备信号源进行AD输入①用信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCINO”插座注意插头要插牢、到底。这样,信号源波形输出A的输出波形即可送到ICETEK—F2812A板的AD输入通道0。②用同样方法连接实验箱左侧信号源的输出B端口和“A/D输入”的“ADCIN1”相连。③设置波形输出A:—向内侧按波形频率选择按钮,直到标有正弦波的指示灯亮。—上下调节波形频率选择按钮,直到标有100—1KHZ的指示灯亮。—调节幅值调整旋钮,将波形输出A的幅值调到适当位置。④设置波形输出B:—向内侧按波形频率选择按钮,直到标有正弦波的指示灯亮。—上下调节波形频率选择按钮,直到标有1K-10KHZ的指示灯亮。—调节幅值调整旋钮,将波形输出A的幅值调到适当位置。注意:由于模数输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在0-3V之间。必须用示波器检测信号范围,保证最小值0V最大值3V,否则容易损坏DSP芯片的模数采集模块。2、设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行请参看本书第三部分、第一章、四、2。3、启动CodeComposerStudio2.21选择菜单Debug-ResetCPU。4、打开工程文件5、编译、下载程序,选择菜单Debug-GoMain,使程序运行到main函数入口位置。6、观察窗口-打开源程序IIR.c,查看源代码。7、运行程序观察结果按CTR控制板的K6键,实现滤波显示,K7键实现混频显示,按K8实现键A、B两信号源分屏显示。8、观察动态效果,调节信号源输出,观察滤波器输出改变信号源输入的波形、频率参数,观察动态效果。9、退出CCS。程序算法分析:①低通滤波器系数可滤掉1k以上的波形,保留1k一下的波形FloatHn[IIRNUMBER]={0.126,0.085,0.000,-0.103,-0.189,-0.216,-0.155,-0.000,0.233,0.504,0.756,0.935,1.000,0.935,0.756,0.504,0.233,-0.000,-0.155,-0.216,-0.189,-0.103,0.000,0.085,0.126}这里是滤波器窗函数的参数,窗函数的长度为25,所以这是25个参数。另外这里以1KHz作为分界点,如果需要滤出别的频率,就需要再计算参数了。②floatIIR(){floatfSum;fSum=0;for(j=0;jFIRNUMBER;j++){fSum+=(fXn[j]*fHn[j]);}return(fSum);}这个是构造的IIR滤波器函数使用for循环输入波形与窗函数频域相乘,达到滤波效果。硬件调试结果如下图(手机拍照):按K8键:A、B两信号源分别显示按K7键:混频显示按K6键:滤波显示根据实验要求,
本文标题:DSP大作业
链接地址:https://www.777doc.com/doc-4333433 .html