基于DSP设计的FIR带阻滤波器.doc

上传人:h**** 文档编号:126569 上传时间:2018-07-09 格式:DOC 页数:49 大小:3.22MB
下载 相关 举报
基于DSP设计的FIR带阻滤波器.doc_第1页
第1页 / 共49页
基于DSP设计的FIR带阻滤波器.doc_第2页
第2页 / 共49页
基于DSP设计的FIR带阻滤波器.doc_第3页
第3页 / 共49页
基于DSP设计的FIR带阻滤波器.doc_第4页
第4页 / 共49页
基于DSP设计的FIR带阻滤波器.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、 DSP 应用系统设计综合设计报告 题目: 带阻 数字滤波器的设计 姓名 XXX 学号 XXXXXXX 手机 XXXXXXX Email XXXXXXXXX 专 业 自动化 班级 XXXXXX 开课学期 2011 至 2012 学年 2学期 提交时间 2012 年 7 月 5 日 一、 引言 二、实验目的 利用 DSP 的原理和方法设计 FIR 数字带阻滤波器(采用 Hamming 窗),具体设计参数如下: ( 1) 采样频率 Fs=8000Hz。 ( 2)滤波器阶数 L=128。 ( 3)输入信号为三个正弦波的叠加,其频率分别为 f1=500Hz, f2=1500Hz,f3=2800Hz,幅

2、值均为 0.333。 ( 4)带阻 滤波器的边界频率 fp=1000 3000,则对应的归一化数字角频率为Wn=fp/(Fs/2)=0.25, 0.75。 三、实验场地及仪器、设备和材料: ( 1) PC 兼容机一台,操作系统为 Windows2000。 ( 2) 安装 Code Composer Studio 4.2 软件与 Matlab 软件。 ( 3) DSP 系统实验箱(硬件连接使用,本实验未使用)。 数字滤波是现代数字信号处理的重要研究内容,在信号分析、图像处理、模式识别、自动控制等领域得到了广泛应用 。 按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(

3、 IIR)与有限长冲击响应( FIR)等等。 与 IIR滤波器相比, FIR 滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。 基于 DSP 设计的带阻滤波器实现了对信号的滤波,使其在某一频率带内的信号被滤去而使其他频率的信号通过。 Matlab语言是一种用于科学计算的高级语言,随着 Matlab信号处理工具箱的不断完善和发展,使数字滤波器的计算机辅助设计得以实现。 四、实验内容 1 、系统方案 一个典型的 DSP 系统除了数字信号处理部分外,还包括 A/D 和 D/A 两部分。这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟

4、信号的数字化即称为 A/D 转换。数字信号处理后的数据可能需还原为模拟信号,这就需要进行 D/A 转换。一个仅包括 A/D 和 D/A 两部分的简化数字信号处理系统功能如图 1 所示。 图 1 简化数字信号处理系统功能 框 图 DSP 系统的输入信号多种多样,但一般都要转换为模拟信号,经过抗混叠滤波后由模数转换芯片将模拟信号变换为数字信号。然后, DSP 根据实际需要对其进行相应的处理,如 FFT、卷积等 ;处理后的数字信号再由数模转换芯片将其转换为模拟值,在对其进行平滑滤波后最终输出模拟信号。需要说明的 是,对输入模拟信号的采样频率要大于其本身频率的两倍,因为根据奈奎斯特采样定律,只有采样频

5、率至少为输入信号频率的两倍时输入信号的信息才保证不会丢失。 设计带阻滤波器, 其中 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 = W1 W2, W1、 W2 为边界频率,当 带阻 滤波器的边界频率 fp=1000, 3000,则对应的归一化数字角频率为 Wn=fp/(Fs/2)=0.

6、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,-7

7、18,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 = fi

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

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

10、 , 如图 4所示: 图 4 FIR 滤波器结构图 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,-4

11、07,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工具箱进行设置相关参数从而得到滤波器系数

12、向量,在命令窗口输入语句格式为: fdatool,此时将出现对话框,进行相关设置即可。 3.2 滤波器 C 语言编程实现 带 阻 FIR 滤波器的 C55x 汇编语言实现如下: (1) 主程序 sheji.c /* sheji.c */ #include “math.h“ #define L 129 #define Fs 8000 /* 采样频率 */ #define T 1/Fs /* 采样时间 */ #define f1 500 /* 正弦信号 1频率 */ #define f2 1500 /* 正弦信号 2频率 */ #define f3 2800 /* 正弦信号 3频率 */ #def

13、ine 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) /* 正弦信号 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 *,unsi

14、gned 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,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,

15、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; /* Output 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(f

16、loat)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(index=-1) index=L-1; (2) 汇编语言整数 fir 滤波器函数: fir.asm ; fir.asm 该程序用于实现 FIR 滤波器 ,可被 C语言程序调用 ; int fir(int *,int *, unsigned int, int) ; 参数 0: AR0

17、 输入信号缓冲区指针 ; 参数 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 ST3_55 or #0x340,mmap(ST1_55) ;设置 FRCT,SXMD,SATD bset SMUL ;置位 SMUL mov mmap(AR0),BSA01 ;AR0=输入信号循环缓冲区的起始地

18、址 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 ;设置外部循环次数为 L-1 mpym *AR0+,*AR2+,AC0 ;执行第一次运算 | rpt CSR ;启动循环 macm *AR0+,*AR2+,AC0 mov hi(AC0),T0 ; 用

19、Q15 格式存放结果 popm ST3_55 ; 恢复 ST1, ST2 和 ST3 popm ST2_55 popm ST1_55 ret .end 3 个辅助寄存器 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)。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。