ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:607.46KB ,
资源ID:16910248      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16910248.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DSP设计的FIR带阻滤波器Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DSP设计的FIR带阻滤波器Word文档下载推荐.docx

1、(3)DSP系统实验箱(硬件连接使用,本实验未使用)。四、实验内容1 、系统方案一个典型的DSP系统除了数字信号处理部分外,还包括A/D和D/A两部分。这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟信号的数字化即称为A/D转换。数字信号处理后的数据可能需还原为模拟信号,这就需要进行D/A转换。一个仅包括A/D和D/A两部分的简化数字信号处理系统功能如图1所示。 图1 简化数字信号处理系统功能框图 DSP系统的输入信号多种多样,但一般都要转换为模拟信号,经过抗混叠滤波后由模数转换芯片将模拟信号变换为数字信号。然后,DSP根据实际需要对其进行相应的处

2、理,如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) 其中

3、Wn = W1 W2, W1、W2为边界频率,当带阻滤波器的边界频率fp=1000, 3000,则对应的归一化数字角频率为Wn=fp/(Fs/2)=0.25,0.75。执行b = fir1(N,Wn, )与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,

4、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 =

5、 fir1(N,Wn,high) 参数意义同上。(4)设计带通滤波器,格式为:bandpass),其中Wn = W1 W2, W1、W2为边界频率。采用函数plot(b)可以绘制滤波器的冲击响应图: 图2 滤波器的冲击响应图采用函数freqz(b)可以绘制滤波器的频率响应图:图3 滤波器的频率响应图 2、算法设计 一个滤波器实质上是一个系统或者网络, 它以一种期望的模式有选择地改变信号的波形、幅度􀀁频率/相位􀀁频率特性. 一般滤波的目的是为了改善一个信号的质量(例如消除或者减少噪声), 或者从信号中提取信息, 或者把以前为了有效通信信道而组合在一起的2个或多

6、个信号分离出来。数字滤波器是执行滤波算法的特定硬件或者软件程序. 滤波算法是为了达到滤波的目的而对输入信号进行的运算操作, 最后产生数字输出信号. 数字滤波器处理的对象是数字化的模拟信号, 或者是存储在计算机存储器里代表某些变量的数. 设h ( i) ( i = 0, 1,2,N - 1)为滤波器的冲击响应, 输入信号为x ( n ) , 则FIR 滤波器就是要实现下列差分方程: FIR滤波器的最主要特点是没有反馈回路, 因此它是无条件的稳定系统, 它的单位脉冲响应h( n ) 是一个有限长序列. 所以, F IR 滤波器的算法实际上就是一种乘法累加运算. 由此差分方程可画出对应的网络结构,

7、如图4所示: 图4 FIR滤波器结构图 3、 软件实现 3.1 滤波器系数获取设计中使用Matlab程序获得滤波器系数向量有两种方法。方法一, 设Fs=8000Hz,当带阻滤波器的边界频率fp=1000, 3000,则对应的归一化数字角频率为Wn=fp/(Fs/2)=0.25,0.75。方法二,使用MATLAB中FDATOOL工具箱进行设置相关参数从而得到滤波器系数向量,在命令窗口输入语句格式为:fdatool,此时将出现对话框,进行相关设置即可。3.2 滤波器C语言编程实现带阻FIR滤波器的C55x汇编语言实现如下:(1) 主程序 sheji.c/* sheji.c */#include m

8、ath.h#define L 129 #define Fs 8000 /* 采样频率 */#define T 1/Fs /* 采样时间 */#define f1 500 /* 正弦信号1频率 */#define f2 1500 /* 正弦信号2频率 */#define f3 2800 /* 正弦信号3频率 */#define PI 3.1415926#define w1 (2*PI*f1*T) /* 正弦信号1数字频率=2*pi*f1/Fs */#define w2 (2*PI*f2*T) /* 正弦信号2数字频率=2*pi*f2/Fs */#define w3 (2*PI*f3*T) /*

9、正弦信号3数字频率=2*pi*f3/Fs */#define a1 0.333 /* 正弦信号1幅度 */#define a2 0.333 /* 正弦信号2幅度 */#define a3 0.333 /* 正弦信号3幅度 */extern int fir(int *,int *,unsigned int,int );/* Low-pass FIR filter coefficients */int coeff129=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

10、,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;int in129; /* input buffer */int out129; /* Ou

11、tput buffer */main() unsigned int i; float signal; unsigned int n=0; int index=0; for(i=0;iL;i+) ini=0; outi=0; while(1) signal = a1*cos(float)w1*n); signal += a2*cos(float)w2*n); signal += a3*cos(float)w3*n); n+; inindex = (int)(0x7fff*signal)+0.5); outindex = fir(in,coeff,L,index); index-; if(inde

12、x=-1) index=L-1;(2) 汇编语言整数fir滤波器函数:fir.asm; fir.asm 该程序用于实现FIR滤波器,可被C语言程序调用 int fir(int *,int *, unsigned int,int) 参数0: AR0 输入信号缓冲区指针 参数1: AR1 - FIR滤波器系数向量指针 参数2: T0 - FIR 滤波器的阶数L 参数3: T1 - 输入信号当前值在循环缓冲区的序数 返回值: T0 - 输出信号当前值 .global _fir .def _fir_fir pshm ST1_55 ;现场ST1,ST2和ST3入栈 pshm ST2_55 pshm ST

13、3_55 or #0x340,mmap(ST1_55) ;设置FRCT,SXMD,SATD bset SMUL ;置位SMUL mov mmap(AR0),BSA01 ;AR0=输入信号循环缓冲区的起始地址 mov mmap(AR1),BSA23 ;AR1=滤波器系数循环缓冲区的起始地址 mov mmap(T0),BK03 ;设置循环缓冲区大小 or #0x5,mmap(ST2_55) ;AR0和AR2为循环缓冲区指针 mov T1,AR0 ; AR0从index偏移量开始 mov #0,AR2 ; AR2从0偏移量开始 sub #2,T0 ;T0=L-2 mov T0,CSR ;设置外部循环

14、次数为L-1 mpym *AR0+,*AR2+,AC0 ;执行第一次运算 | rpt CSR ;启动循环 macm *AR0+,*AR2+,AC0 mov hi(AC0),T0 ; 用Q15格式存放结果 popm ST3_55 ; 恢复ST1, ST2和 ST3 popm ST2_55 popm ST1_55 ret .end3个辅助寄存器AR0-AR2被用作指针。其中,AR0指向滤波器输入信号,AR1、AR2指向滤波器系数,AR1用于函数调用时传递参量,AR2用于滤波运算。AR0和AR2均采用循环寻址方式。开始滤波运算时,AR2指向第一个系数,AR0则指向当前输入信号x(n)。完成一次滤波运

15、算后,AR2将再次指向第一个系数,而AR0则指向最老的x(n-L+1)。在下一循环的滤波运算中,新的输入信号值将取代x(n-L+1),作为新的x(n)。4、设计步骤1、选题后确定实验计划,搜集基本资料。2、编写实验程序如下: sheji.c为主程序,用于设置滤波器、测试信号参数,产生测试信号,调用fir滤波程序。 fir.asm为采用汇编语言编写的fir滤波模块,完成对信号的滤波。 sheji.cmd为命令文件3、实验准备:双击桌面图标,启动Code Composer Studio,选择工作目录。4、建立工程sheji。5、 向工程sheji中加载文件sheji.c、fir.asm、sheji

16、.cmd,修改sheji.c中的滤波器系数数据。6、建立配置文件sheji.ccxml(选择VC5509A Simulater模式),如下所示: 图5 配置文件sheji.ccxml仿真器模式选择7、 编译、链接工程,下载程序。8、运行程序至主程序的“index-”语句,打开图形观察窗口。观察滤波器系数波形、观察滤波器输入信号、输出信号波形。9、全速运行程序,数秒钟后暂停。观察滤波器输入信号、输出信号波形。10、改变输入信号参数(信号频率、幅度等),重复上述第6、7、8步操作,验证实验结果的正确性。11、退出CCS。五、实验结果与分析1、实验现象、数据记录 (1)使用MATLAB软件获取滤波器

17、向量,其结果如下:方法一,直接利用MATLAB命令窗口输入语句如下图6所示,从而获得滤波器系数向量。 图6 滤波器系数向量获取(方法一) 方法二,利用MATLAB中的fdatool工具箱获得滤波器系数向量如图7、图8所示: 图7 fdatool设置窗口 图8 滤波器系数向量获取(方法二)(2)运行程序至主程序的“index-”语句,打开图形观察窗口,观察滤波器系数波形如下所示:图9 观察滤波器系数波形设置窗口 图10 滤波器系数波形(3)全速运行程序,数秒钟后暂停。观察滤波器输入信号、输出信号波形如下:此时,输入信号为三个正弦波的叠加,其频率分别为f1=500Hz,f2=1500Hz,f3=2

18、800Hz,幅值均为0.333。 图11 观察输入信号波形设置窗口 图 12 滤波器输入信号波形 图13 观察输出波形设置窗口 图14 滤波器输出信号波形结果分析:此时,输出信号为一个正弦波,其频率分别为f1=500Hz幅值为0.333,经验证,带阻滤波器实现了对信号的滤波作用。由于阻带低端频率和高端频率分别为1000Hz、3000Hz,因此,滤波器将原有的输入信号中的两个分量滤去,即频率为f2=1500Hz,f3=2800Hz的信号被阻隔,仅有f1=500Hz的信号作为输出信号,由结果可知,输出信号正确,即带阻滤波器设计正确。(4)改变输入信号参数(信号频率、幅度等),重复上述第6、7、8步

19、操作,全速运行程序,数秒钟后暂停。此时,输入信号为三个正弦波的叠加,其频率分别为f1=500Hz,f2=1500Hz,f3=4000Hz,幅值均为0.333。 图15 滤波器输入信号波形 图16 滤波器输出信号波形此时,输出信号为两个正弦波的叠加,其频率分别为f1=500Hz,f3=4000Hz幅值为0.333,经验证,带阻滤波器实现了对信号的滤波作用。由于阻带低端频率和高端频率分别为1000Hz、3000Hz,因此,滤波器将原有的输入信号中的一个分量滤去,即频率为f2=1500Hz的信号被阻隔,而 f1=500Hz,f3=4000Hz的叠加信号作为输出信号,由结果可知,输出信号正确,即带阻滤

20、波器设计正确。2、对实验现象、数据及观察结果的分析与讨论: 本次设计圆满完成了基于DSP的FIR带阻滤波器的设计与实现,完成了带阻滤波器的基本功能。3、关键点:(1)带阻滤波器原理的设计与实现。(2)MATLAB软件进行波形向量的获取与使用。(3)Code Composer Studio 4.2软件的应用与学习,学会利用软件设计各种数字滤波器,并进行输入输出结果的仿真和记录。六、实验结论采用MATLAB 中的fdatool工具箱来对数字滤波器进行辅助设计, 实现了基于DSP TMS320C55x芯片的数字带阻滤波器。 该滤波器的应用, 不仅克服了模拟滤波器的诸多缺点, 而且由于DSP具有良好的

21、可编程性、程序的可移植性及较好的灵活性, 所以在实际应用过程中, 只按需求在设计界面中修改滤波器的参数, 并通过程序的少量的修改, 即可方便快捷地设计具有新的需求的数字滤波器, 提高了开发效率, 缩短了产品的开发周期,提高了检测精度, 达到了预期的目的。七、附件:源程序清单1、主程序sheji.cInt coeff129=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; signal = a1*cos(float)w1*n);2、滤波器函数: popm ST

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1