预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

DSP课程设计 学院: 专业年级: 姓名: 学号: 课题:FIR滤波器设计 指导老师: 日期:2016年7月2日 一、设计目标 功能描述: FIR低通滤波器是滤除掉高于截至频率的信号,容许低于截止频率的信号通过的电子滤波装置,故称低通滤波器。 内容: 1)设计FIR低通滤波器 2)使用CCS的simulator进行滤波特性测试 参数: FIR低通滤波器通带频率为5000Hz,采样频率为20000Hz。 二、算法研究 数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列,FIR滤波器的差分方程为: 对上式进行Z变换得到FIR滤波器的传递函数为: 由上式可以看出,H(z)是的N-1次多项式,它在z平面内有N-1个零点,同时在原点处有N-1个重极点。N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图中(a)、(b)两种结构。 图FIR滤波器的一般结构 因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定的。另外,若对h(n)提出一些约束条件,那么可以很容易地使H(z)具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是要决定一个转移函数H(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率、阻带频率及两个带上的最大和最小衰减和外,很重要的一条是保证H(z)具有线性相位。 三、相应参数的计算 1、FIR滤波器的MATLAB实现 MATLAB是一种功能强、效率高、便于进行科学和工程计算的交互式软件包,它集数值分析、矩阵运算、信号处理和图形显示于一体,为用户提供了方便、友好的界面环境。 MATLAB中的工具箱(Toolbox)包含了许多实用程序。它提供了多种FIR滤波器设计方法。 用fir1函数设计FIR滤波器 fir1函数用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。具体语法如下:b=fir1(n,Wn) b=fir1(n,Wn,‘ftype’) b=fir1(n,Wn,Window) b=fir1(n,Wn,‘ftype’,Window) 其中n为滤波器的阶数;Wn为滤波器的截止频率;ftype为用来决定滤波器的类型,当ftype=high时,可设计高通滤波器;当ftype=stop时,可设计带阻滤波器。Window为用来指定滤波器采用的窗函数类型,Window参数可采用的窗口函数有:Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默认时为Hamming窗,从而得到滤波器的系数。 本课程设计设计低通滤波器,采用b=fir1(n,Wn)。 2、利用MATLAB计算滤波器系数 1)生成.inc文件,通带频率为5000HZ 2)生成.dat文件,输入信号频率分别为2000Hz和8000Hz 四、编写源程序 1).asm程序 .global start,fir .mmregs COFF_FIR_START:.sect"coff_fir" .include "0205\\0205.inc" K_FIR_BFFR .set 64 d_data_buffer .usect "fir_bfr",64 FIR_DP .usect "fir_vars",0 d_filin .usect "fir_vars",1 output .usect "fir_vars",1 input .usect"fir_vars",1 d_filout .usect "fir_vars",100h stacksize.set256 stack.usect"fir_vars",stacksize .asg AR4,FIR_DATA_P .asg AR6,INBUF_P .asg AR7,OUTBUF_P .asg AR3,OUTBUF .asg AR2,INBUF .sect "fir_prog" nop start: stm#stack+stacksize,SP LD #FIR_DP,DP STM #d_data_buffer,FIR_DATA_P RPTZA,#K_FIR_BFFR-1 STL A,*FIR_DATA_P+ STM #d_filin,INBUF_P STM #d_filout,OUTBUF_P STM #output,OUTBUF STM #input,INBUF STM #100h,BK fir_loop: NOP;AddBreakpoint&porbepoint LD *INBUF_P,A STL A,*INBUF CALL fir STH