DSP课程设计FIR滤波器设计说明.docx
- 文档编号:24931460
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:10
- 大小:129.35KB
DSP课程设计FIR滤波器设计说明.docx
《DSP课程设计FIR滤波器设计说明.docx》由会员分享,可在线阅读,更多相关《DSP课程设计FIR滤波器设计说明.docx(10页珍藏版)》请在冰豆网上搜索。
DSP课程设计FIR滤波器设计说明
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程序
.globalstart,fir
.mmregs
COFF_FIR_START:
.sect"coff_fir"
.include"0205\\0205.inc"
K_FIR_BFFR.set64
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
.asgAR4,FIR_DATA_P
.asgAR6,INBUF_P
.asgAR7,OUTBUF_P
.asgAR3,OUTBUF
.asgAR2,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
STLA,*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
STLA,*INBUF
CALLfir
STHA,*OUTBUF_P+%
STHA,*OUTBUF
main_end:
bfir_loop
fir:
;SSBXSXM
;SSBXFRCT
STM#d_data_buffer,FIR_DATA_P
STLA,*FIR_DATA_P
STM#(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P
fir_task:
RPTZA,#K_FIR_BFFR-1
MACD*FIR_DATA_P-,COFF_FIR_START,A
RET
.end
2).cmd程序
MEMORY
{
PAGE0:
PROG:
o=100h,l=2000h
PAGE1:
DATA1:
o=2600h,l=1000h
DATA2:
o=2100h,l=100h
DATA3:
o=2200h,l=100h
DATA4:
o=2300h,l=100h
DATA5:
o=2400h,l=100h
DATA6:
o=2500h,l=100h
}
SECTIONS
{
coff_fir:
{}>PROGPAGE0
fir_prog:
{}>PROGPAGE0
fir_vars:
{}>DATA1PAGE1
fir_coff:
{}>DATA2PAGE1
fir_bfr:
{}>DATA3PAGE1
}
五、调试过程
1.调试前的准备
1)启动SETUP并选择芯片’c5402,关闭启动CCS。
2)在CCS的安装目录myproject子目录下创建一个文件夹0205。
3)使用MATLAB工具编写滤波器系数测试程序,生成0205.inc文件并保存在上述文件夹0205中。
4)使用MATLAB工具编写输入信号生成程序,并生成0205.dat文件保存在上述文件夹0205中。
2.编写及编译程序:
CCS中
1)选中Project菜单中New命令新建一个工程并命名为0205。
2)选中File菜单中New-SourceFile命令,将编写的源程序以.asm格式保存在0205文件夹中。
3)再选中File菜单中New-SourceFile命令,将编写的链接程序以.cmd格式保存在0205文件夹中。
4)选中Project菜单中AddFiletoProject命令,将以上程序加载到工程目录下。
5)编译并链接程序,如果有错就修改,然后再编译链接直到无误为止。
3.观察点设置
1)设置断点:
在标号fir_loop下面的Nop语句设置软件断点(Togglebreakpoint)探针(ToggleProbepoint)。
2)选中File菜单中load program命令,选择Debug中的0205.out 。
3)选中File菜单中File I/O命令,将会看到File I/O对话框按照下图操作然后选中Add Probe Point,继续操作。
4)打开观察窗口
选择菜单“View”、“Graph”、“Time/Frequency„”按照下面所示操作:
地址分别为:
input和output,
buffersize:
1,
display data size:
200
DSP Data Type:
16-bit signed integer
5)选择菜单栏Debug中点击Animate可观察到此滤波器的滤波效果。
五、实验结果及分析
通过观察实验结果,可看出高频信号被滤去,低频信号通过(2000Hz信号通过,8000Hz信号被滤去),此滤波器性能良好,设计成功。
六、总结与体会
通过这几天的课程设计,我对MATLAB软件和CCS软件的使用有了很大的进步,在课堂上我也使用过CCS进行实验仿真等,但那时极为的不熟悉,步骤条理也不熟悉,一些文件都不知道它的作用,使用中也出现了很多的错误:
1.对MATLAB编程不熟练,为了能够体现出滤波效果,.dat中的两个输入信号的频率一个要大于通带截至频率,一个要小于它。
2.在生成.inc文件时,程序中.word前的空格会影响CCS测试时链接文件产生错误。
3.CCS测试时程序中的.inc链接文件名要与其原文件名相同。
4.在进行File I/O设置时,要先加断点和探针。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 课程设计 FIR 滤波器 设计 说明