




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE《DSP应用系统设计》综合设计报告题目:带阻数字滤波器的设计姓名XXX学号_XXXXXXX手机XXXXXXXEmailXXXXXXXXX专业_自动化班级_XXXXXX开课学期2011至2012学年2_学期提交时间2012年7月5日引言数字滤波是现代数字信号处理的重要研究内容,在信号分析、图像处理、模式识别、自动控制等领域得到了广泛应用。按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(IIR)与有限长冲击响应(FIR)等等。与IIR滤波器相比,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。基于DSP设计的带阻滤波器实现了对信号的滤波,使其在某一频率带内的信号被滤去而使其他频率的信号通过。Matlab语言是一种用于科学计算的高级语言,随着Matlab信号处理工具箱的不断完善和发展,使数字滤波器的计算机辅助设计得以实现。二、实验目的利用DSP的原理和方法设计FIR数字带阻滤波器(采用Hamming窗),具体设计参数如下:采样频率Fs=8000Hz。(2)滤波器阶数L=128。(3)输入信号为三个正弦波的叠加,其频率分别为f1=500Hz,f2=1500Hz,f3=2800Hz,幅值均为0.333。(4)带阻滤波器的边界频率fp=[10003000],则对应的归一化数字角频率为Wn=fp/(Fs/2)=[0.25,0.75]。三、实验场地及仪器、设备和材料:(1)PC兼容机一台,操作系统为Windows2000。(2)安装CodeComposerStudio4.2软件与Matlab软件。(3)DSP系统实验箱(硬件连接使用,本实验未使用)。四、实验内容1、系统方案一个典型的DSP系统除了数字信号处理部分外,还包括A/D和D/A两部分。这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟信号的数字化即称为A/D转换。数字信号处理后的数据可能需还原为模拟信号,这就需要进行D/A转换。一个仅包括A/D和D/A两部分的简化数字信号处理系统功能如图1所示。
图1简化数字信号处理系统功能框图DSP系统的输入信号多种多样,但一般都要转换为模拟信号,经过抗混叠滤波后由模数转换芯片将模拟信号变换为数字信号。然后,DSP根据实际需要对其进行相应的处理,如FFT、卷积等;处理后的数字信号再由数模转换芯片将其转换为模拟值,在对其进行平滑滤波后最终输出模拟信号。需要说明的是,对输入模拟信号的采样频率要大于其本身频率的两倍,因为根据奈奎斯特采样定律,只有采样频率至少为输入信号频率的两倍时输入信号的信息才保证不会丢失。设计带阻滤波器,其中N+1为滤波器阶数,b为返回的长度为N+1的系数向量。Wn为归一化边界频率,0<Wn<1.0,Wn处增益为-6dB。Wn=1.0对应的非归一化频率为Fs/2,其中Fs为采样频率。本设计中,设Fs=8000Hz,设计带通阻波器,格式为:b=fir1(N,Wn)或b=fir1(N,Wn,'stop')其中Wn=[W1W2],W1、W2为边界频率,当带阻滤波器的边界频率fp=[1000,3000],则对应的归一化数字角频率为Wn=fp/(Fs/2)=[0.25,0.75]。执行b=fir1(N,Wn,'stop')与b=round(b*32768)指令得到的系数为:b=[0,0,-28,0,0,0,36,0,0,0,-52,0,0,0,77,0,0,0,-113,0,0,0,161,0,0,0,-223,0,0,0,304,0,0,0,-407,0,0,0,541,0,0,0,-718,0,0,0,965,0,0,0,-1336,0,0,0,1974,0,0,0,-3411,0,0,0,10415,0,16397,0,10415,0,0,0,-3411,0,0,0,1974,0,0,0,-1336,0,0,0,965,0,0,0,-718,0,0,0,541,0,0,0,-407,0,0,0,304,0,0,0,-223,0,0,0,161,0,0,0,-113,0,0,0,77,0,0,0,-52,0,0,0,36,0,0,0,-28,0,0]注意:上述滤波器系数为浮点格式,当DSP程序中采用整数格式时。滤波器系数需相应地变为整数,方法为乘以32768并取整。(2)设计低通滤波器,格式为:b=fir1(N,Wn)或b=fir1(N,Wn,'low')。(3)设计高通滤波器,格式为:b=fir1(N,Wn,'high')参数意义同上。(4)设计带通滤波器,格式为:b=fir1(N,Wn)或b=fir1(N,Wn,'bandpass'),其中Wn=[W1W2],W1、W2为边界频率。采用函数plot(b)可以绘制滤波器的冲击响应图:图2滤波器的冲击响应图采用函数freqz(b)可以绘制滤波器的频率响应图:图3滤波器的频率响应图2、算法设计一个滤波器实质上是一个系统或者网络,它以一种期望的模式有选择地改变信号的波形、幅度频率/相位频率特性.一般滤波的目的是为了改善一个信号的质量(例如消除或者减少噪声),或者从信号中提取信息,或者把以前为了有效通信信道而组合在一起的2个或多个信号分离出来。数字滤波器是执行滤波算法的特定硬件或者软件程序.滤波算法是为了达到滤波的目的而对输入信号进行的运算操作,最后产生数字输出信号.数字滤波器处理的对象是数字化的模拟信号,或者是存储在计算机存储器里代表某些变量的数.设h(i)(i=0,1,2,……,N-1)为滤波器的冲击响应,输入信号为x(n),则FIR滤波器就是要实现下列差分方程:FIR滤波器的最主要特点是没有反馈回路,因此它是无条件的稳定系统,它的单位脉冲响应h(n)是一个有限长序列.所以,FIR滤波器的算法实际上就是一种乘法累加运算.由此差分方程可画出对应的网络结构,如图4所示:图4FIR滤波器结构图3、软件实现3.1滤波器系数获取设计中使用Matlab程序获得滤波器系数向量有两种方法。方法一,设Fs=8000Hz,当带阻滤波器的边界频率fp=[1000,3000],则对应的归一化数字角频率为Wn=fp/(Fs/2)=[0.25,0.75]。执行b=fir1(N,Wn,'stop')与b=round(b*32768)指令得到的系数为:b=[0,0,-28,0,0,0,36,0,0,0,-52,0,0,0,77,0,0,0,-113,0,0,0,161,0,0,0,-223,0,0,0,304,0,0,0,-407,0,0,0,541,0,0,0,-718,0,0,0,965,0,0,0,-1336,0,0,0,1974,0,0,0,-3411,0,0,0,10415,0,16397,0,10415,0,0,0,-3411,0,0,0,1974,0,0,0,-1336,0,0,0,965,0,0,0,-718,0,0,0,541,0,0,0,-407,0,0,0,304,0,0,0,-223,0,0,0,161,0,0,0,-113,0,0,0,77,0,0,0,-52,0,0,0,36,0,0,0,-28,0,0]方法二,使用MATLAB中FDATOOL工具箱进行设置相关参数从而得到滤波器系数向量,在命令窗口输入语句格式为:fdatool,此时将出现对话框,进行相关设置即可。3.2滤波器C语言编程实现带阻FIR滤波器的C55x汇编语言实现如下:(1)主程序sheji.c/*sheji.c*/#include"math.h"#defineL129#defineFs8000/*采样频率*/#defineT1/Fs/*采样时间*/#definef1500/*正弦信号1频率*/#definef21500/*正弦信号2频率*/#definef32800/*正弦信号3频率*/#definePI3.1415926#definew1(2*PI*f1*T)/*正弦信号1数字频率=2*pi*f1/Fs*/#definew2(2*PI*f2*T)/*正弦信号2数字频率=2*pi*f2/Fs*/#definew3(2*PI*f3*T)/*正弦信号3数字频率=2*pi*f3/Fs*/#definea10.333/*正弦信号1幅度*/#definea20.333 /*正弦信号2幅度*/#definea30.333 /*正弦信号3幅度*/externintfir(int*,int*,unsignedint,int);/*Low-passFIRfiltercoefficients*/intcoeff[129]={0,0,-28,0,0,0,36,0,0,0,-52,0,0,0,77,0,0,0,-113,0,0,0,161,0,0,0,-223,0,0,0,304,0,0,0,-407,0,0,0,541,0,0,0,-718,0,0,0,965,0,0,0,-1336,0,0,0,1974,0,0,0,-3411,0,0,0,10415,0,16397,0,10415,0,0,0,-3411,0,0,0,1974,0,0,0,-1336,0,0,0,965,0,0,0,-718,0,0,0,541,0,0,0,-407,0,0,0,304,0,0,0,-223,0,0,0,161,0,0,0,-113,0,0,0,77,0,0,0,-52,0,0,0,36,0,0,0,-28,0,0};intin[129];/*inputbuffer*/intout[129];/*Outputbuffer*/main(){unsignedinti;floatsignal;unsignedintn=0;intindex=0;for(i=0;i<L;i++){in[i]=0;out[i]=0;}while(1){signal=a1*cos((float)w1*n);signal+=a2*cos((float)w2*n);signal+=a3*cos((float)w3*n);n++;in[index]=(int)((0x7fff*signal)+0.5);out[index]=fir(in,coeff,L,index);index--;if(index==-1)index=L-1;}}汇编语言整数fir滤波器函数:fir.asm;fir.asm该程序用于实现FIR滤波器,可被C语言程序调用;intfir(int*,int*,unsignedint,int);参数0:AR0–输入信号缓冲区指针;参数1:AR1-FIR滤波器系数向量指针;参数2:T0-FIR滤波器的阶数L;参数3:T1-输入信号当前值在循环缓冲区的序数;返回值:T0-输出信号当前值.global_fir.def_fir_firpshmST1_55;现场ST1,ST2和ST3入栈 pshmST2_55pshmST3_55 or#0x340,mmap(ST1_55);设置FRCT,SXMD,SATD bsetSMUL;置位SMUL movmmap(AR0),BSA01;AR0=输入信号循环缓冲区的起始地址 movmmap(AR1),BSA23;AR1=滤波器系数循环缓冲区的起始地址 movmmap(T0),BK03 ;设置循环缓冲区大小 or#0x5,mmap(ST2_55);AR0和AR2为循环缓冲区指针 movT1,AR0;AR0从index偏移量开始 mov#0,AR2;AR2从0偏移量开始 sub#2,T0 ;T0=L-2movT0,CSR ;设置外部循环次数为L-1mpym*AR0+,*AR2+,AC0 ;执行第一次运算 ||rptCSR ;启动循环 macm*AR0+,*AR2+,AC0 movhi(AC0),T0 ;用Q15格式存放结果 popmST3_55 ;恢复ST1,ST2和ST3 popmST2_55 popmST1_55 ret .end3个辅助寄存器AR0-AR2被用作指针。其中,AR0指向滤波器输入信号,AR1、AR2指向滤波器系数,AR1用于函数调用时传递参量,AR2用于滤波运算。AR0和AR2均采用循环寻址方式。开始滤波运算时,AR2指向第一个系数,AR0则指向当前输入信号x(n)。完成一次滤波运算后,AR2将再次指向第一个系数,而AR0则指向最老的x(n-L+1)。在下一循环的滤波运算中,新的输入信号值将取代x(n-L+1),作为新的x(n)。4、设计步骤1、选题后确定实验计划,搜集基本资料。编写实验程序如下:sheji.c为主程序,用于设置滤波器、测试信号参数,产生测试信号,调用fir滤波程序。fir.asm为采用汇编语言编写的fir滤波模块,完成对信号的滤波。sheji.cmd为命令文件3、实验准备:双击桌面图标,启动CodeComposerStudio,选择工作目录。4、建立工程sheji。5、向工程sheji中加载文件sheji.c、fir.asm、sheji.cmd,修改sheji.c中的滤波器系数数据。6、建立配置文件sheji.ccxml(选择VC5509ASimulater模式),如下所示:图5配置文件sheji.ccxml仿真器模式选择7、编译、链接工程,下载程序。8、运行程序至主程序的“index--”语句,打开图形观察窗口。观察滤波器系数波形、观察滤波器输入信号、输出信号波形。9、全速运行程序,数秒钟后暂停。观察滤波器输入信号、输出信号波形。10、改变输入信号参数(信号频率、幅度等),重复上述第6、7、8步操作,验证实验结果的正确性。11、退出CCS。五、实验结果与分析1、实验现象、数据记录(1)使用MATLAB软件获取滤波器向量,其结果如下:方法一,直接利用MATLAB命令窗口输入语句如下图6所示,从而获得滤波器系数向量。图6滤波器系数向量获取(方法一)方法二,利用MATLAB中的fdatool工具箱获得滤波器系数向量如图7、图8所示:图7fdatool设置窗口图8滤波器系数向量获取(方法二)运行程序至主程序的“index--”语句,打开图形观察窗口,观察滤波器系数波形如下所示:图9观察滤波器系数波形设置窗口图10滤波器系数波形(3)全速运行程序,数秒钟后暂停。观察滤波器输入信号、输出信号波形如下:此时,输入信号为三个正弦波的叠加,其频率分别为f1=500Hz,f2=1500Hz,f3=2800Hz,幅值均为0.333。图11观察输入信号波形设置窗口图12滤波器输入信号波形图13观察输出波形设置窗口图14滤波器输出信号波形结果分析:此时,输出信号为一个正弦波,其频率分别为f1=500Hz幅值为0.333,经验证,带阻滤波器实现了对信号的滤波作用。由于阻带低端频率和高端频率分别为1000Hz、3000Hz,因此,滤波器将原有的输入信号中的两个分量滤去,即频率为f2=1500Hz,f3=2800Hz的信号被阻隔,仅有f1=500Hz的信号作为输出信号,由结果可知,输出信号正确,即带阻滤波器设计正确。(4)改变输入信号参数(信号频率、幅度等),重复上述第6、7、8步操作,全速运行程序,数秒钟后暂停。观察滤波器输入信号、输出信号波形如下:此时,输入信号为三个正弦波的叠加,其频率分别为f1=500Hz,f2=1500Hz,f3=4000Hz,幅值均为0.333。图15滤波器输入信号波形图16滤波器输出信号波形结果分析:此时,输出信号为两个正弦波的叠加,其频率分别为f1=500Hz,f3=4000Hz幅值为0.333,经验证,带阻滤波器实现了对信号的滤波作用。由于阻带低端频率和高端频率分别为1000Hz、3000Hz,因此,滤波器将原有的输入信号中的一个分量滤去,即频率为f2=1500Hz的信号被阻隔,而f1=500Hz,f3=4000Hz的叠加信号作为输出信号,由结果可知,输出信号正确,即带阻滤波器设计正确。2、对实验现象、数据及观察结果的分析与讨论:本次设计圆满完成了基于DSP的FIR带阻滤波器的设计与实现,完成了带阻滤波器的基本功能。3、关键点:(1)带阻滤波器原理的设计与实现。(2)MATLAB软件进行波形向量的获取与使用。(3)CodeComposerStudio4.2软件的应用与学习,学会利用软件设计各种数字滤波器,并进行输入输出结果的仿真和记录。六、实验结论采用MATLAB中的fdatool工具箱来对数字滤波器进行辅助设计,实现了基于DSPTMS320C55x芯片的数字带阻滤波器。该滤波器的应用,不仅克服了模拟滤波器的诸多缺点,而且由于DSP具有良好的可编程性、程序的可移植性及较好的灵活性,所以在实际应用过程中,只按需求在设计界面中修改滤波器的参数,并通过程序的少量的修改,即可方便快捷地设计具有新的需求的数字滤波器,提高了开发效率,缩短了产品的开发周期,提高了检测精度,达到了预期的目的。七、附件:源程序清单1、主程序sheji.c/*sheji.c*/#include"math.h"#defineL129#defineFs8000/*采样频率*/#defineT1/Fs/*采样时间*/#definef1500/*正弦信号1频率*/#definef21500/*正弦信号2频率*/#definef32800/*正弦信号3频率*/#definePI3.1415926#definew1(2*PI*f1*T)/*正弦信号1数字频率=2*pi*f1/Fs*/#definew2(2*PI*f2*T)/*正弦信号2数字频率=2*pi*f2/Fs*/#definew3(2*PI*f3*T)/*正弦信号3数字频率=2*pi*f3/Fs*/#definea10.333/*正弦信号1幅度*/#definea20.333 /*正弦信号2幅度*/#definea30.333 /*正弦信号3幅度*/externintfir(int*,int*,unsignedint,int);/*Low-passFIRfiltercoefficients*/Intcoeff[129]={0,0,-28,0,0,0,36,0,0,0,-52,0,0,0,77,0,0,0,-113,0,0,0,161,0,0,0,-223,0,0,0,304,0,0,0,-407,0,0,0,541,0,0,0,-718,0,0,0,965,0,0,0,-1336,0,0,0,1974,0,0,0,-3411,0,0,0,10415,0,16397,0,10415,0,0,0,-3411,0,0,0,1974,0,0,0,-1336,0,0,0,965,0,0,0,-718,0,0,0,541,0,0,0,-407,0,0,0,304,0,0,0,-223,0,0,0,161,0,0,0,-113,0,0,0,77,0,0,0,-52,0,0,0,36,0,0,0,-28,0,0};intin[129];/*inputbuffer*/intout[129];/*Outputbuffer*/main(){unsignedinti;floatsignal;unsignedintn=0;intindex=0;for(i=0;i<L;i++){in[i]=0;out[i]=0;}while(1){signal=a1*cos((float)w1*n);signal+=a2*cos((float)w2*n);signal+=a3*cos((float)w3*n);n++;in[index]=(int)((0x7fff*signal)+0.5);out[index]=fir(in,coeff,L,index);index--;if(index==-1)index=L-1;}}2、滤波器函数:fir.asm;fir.asm该程序用于实现FIR滤波器,可被C语言程序调用;intfir(int*,int*,unsignedint,int);参数0:AR0–输入信号缓冲区指针;参数1:AR1-FIR滤波器系数向量指针;参数2:T0-FIR滤波器的阶数L;参数3:T1-输入信号当前值在循环缓冲区的序数;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025临时商铺经营合同
- 农业科技园区项目合作开发协议书
- 金银岛读后感1200字(14篇)
- 安乐社区消防安全培训课件
- 2025婚庆公司宴会厅合作经营合同
- 智慧树知道网课《电路(山东管理学院)》课后章节测试答案
- 化工厂安全生产培训课件
- 企业培训课程设计及实施工具
- 舞台上的偶遇200字7篇
- 这就是我作文600字女15篇
- 应急管理局项目管理办法
- 2025年职业指导师考试试卷:职业指导师职业指导
- 英语介绍电影课件
- 2024年江苏省阜宁县文化馆公开招聘试题带答案详解
- 竞彩销售培训
- 《全媒体营销》课件-1.2互联网发展变革与客户中心产业发展
- 国防科普活动方案
- 装饰装修施工应急预案措施
- 租车公司经营管理制度
- 浙江省温州市名校2025届英语八下期末教学质量检测试题含答案
- 藻类分子机制解析与调控网络构建-洞察阐释
评论
0/150
提交评论