D S P 课程设计报告
题目:
FIR 高通滤波器设计
姓 名 学 号 教学院系 专业年级 指导教师
目录
一、设计题目..................................................................................... 1 二、设计目标..................................................................................... 1 三、算法研究与参数计算 ................................................................ 1
1、FIR 的原理和参数生成公式 ............................................... 1 2、利用MATLAB 计算滤波系数 . ........................................... 1 3、输入信号参数计算 .............................................................. 2 四、编写源程序 ................................................................................ 3 五、调试过程..................................................................................... 4
1、调试前准备 .......................................................................... 5 2、MATLAB 的使用 ................................................................. 5 3、编写及编译程序 .................................................................. 5 4、设置断点和探针 .................................................................. 6 5、打开观察窗口 ...................................................................... 6 六、实验结果及分析 ........................................................................ 6
1、输入信号的时域波形和频域波形 ...................................... 6 2、输出信号的时域波形和频域波形 ...................................... 7 七、设计心得..................................................................................... 8
一、设计题目
FIR 高通滤波器设计
二、设计目标
设计一个FIR 高通滤波器,通带边界频率为6000Hz ,采样频率为20000Hz 。FIR 滤波器的设计用MA TLAB 窗函数法进行。
三、算法研究与参数计算
1、FIR 的原理和参数生成公式
图3-1
2、利用MATLAB 计算滤波系数
在MATLAB 界面输入图3-2所示程序,可得到滤波系数并生成INC 文件。
图
3-2
1
输入freqz (y ,1,512),MATLAB 中显示高通滤波器的滤波特性曲线。如图3-3所示。
图3-3
3、输入信号参数计算
MATLAB 中输入图3-4中所示程序,包含两种频率成分的正弦信号,一种信号频率1000Hz ,一种信号6000Hz 。
图3-4
其频谱特性曲线如图3-5。
图3-5
2
四、编写源程序
参考资料,编写汇编语言源程序:
HIGHPASS .set 1 ;if you want to use ,please set the value to 1
.global start,fir .mmregs
COFF_FIR_START: .sect "coff_fir" .copy "0126.inc" K_FIR_BFFR d_data_buffer FIR_DP d_filin output input
.set 64 .usect "fir_bfr",64 .usect "fir_vars",0 .usect "fir_vars",1 .usect "fir_vars",1
.usect "fir_vars",1 .usect "fir_vars",100h
d_filout
stacksize .set 256
stack .usect "fir_vars",stacksize .asg .asg .asg .asg .asg nop start:
stm #stack+stacksize,SP LD
#FIR_DP,DP
#d_data_buffer,FIR_DATA_P A,*FIR_DATA_P+ #d_filin,INBUF_P
3
AR4,FIR_DATA_P AR6,INBUF_P AR7,OUTBUF_P AR3,OUTBUF AR2,INBUF
.sect "fir_prog"
STM STL STM
RPTZ A,#K_FIR_BFFR-1
STM STM STM STM fir_loop:
#d_filout,OUTBUF_P #output,OUTBUF #input,INBUF #100h,BK
NOP ;Add Breakpoint & porbe point LD
*INBUF_P,A
STL A,*INBUF CALL fir STH STH main_end: b fir:
; SSBX SXM ; SSBX FRCT STM STL STM fir_task:
RPTZ A,#K_FIR_BFFR-1 MACD RET .end
*FIR_DATA_P-,COFF_FIR_START,A #d_data_buffer,FIR_DATA_P A,*FIR_DATA_P
#(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P
fir_loop
A,*OUTBUF_P+% A,*OUTBUF
五、调试过程
4
1、调试前准备
1)启动SETUP 并选择芯片。
2)在CCS 的安装目录下的myproject 的子目录下创建新文件夹,命名1207030126。
2、MATLAB 的使用
使用MATLAB 生成0126.Inc 文件和1207030126.dat 文件,保存在1207030126文件夹中。如图5-1:
图5-1
3、编写及编译程序
1)新建project 并命名1207030126。 2)在project 中添加0126.asm 文件和0126.cmd 文件。如图5-2。
3)编译并链接程序。
4)设置工程文件,选择菜单“project ”的“build options…”项。
图5-2
5)加载程序。File —
load program
5
4、设置断点和探针
在标号“fir_loop”下的“NOP ”语句处设置软件断点和探针。 选择“file ”、“file I/O…”; 按照实验程序操作。
5、打开观察窗口
选择菜单“view ”、“Graph ”、“time/Freauency…”。按要求设置。
六、实验结果及分析
1、输入信号的时域波形和频域波形
输入信号的时域波形如图6-1所示,频域波形如图6-2所示。
图6-1
图6-2
这个信号由1000Hz 和6000Hz 的信号叠加而得。
6
2、输出信号的时域波形和频域波形
输出信号的时域波形如图6-3所示,频域波形如图6-4所示。
图6-3
图6-4
从输入信号波形和输出信号波形对比看,低频信号(1000Hz )不能顺利通过滤波器,被削减到几乎为0,而高频信号(6000Hz )可以顺利通过。因此这是一个性能良好的高通滤波器。
7
七、设计心得
本次我的课程设计是基于窗函数法的FIR 数字高通滤波器,由于数字信号处理课程是上学期学的,再加上自己对MATLAB 软件操作不熟练。导致前期用了很长一段时间查阅相关书籍,重新学习了数字滤波器的相关知识和MATLAB 软件的操作方法。同时也锻炼了文件检索和查找数据手册的能力。通过本次课程设计,加深了我对数字滤波器理解。也认识到数字滤波器在实际生活具有广泛的应用。同时,改变了我对数字信号的看法,原来,枯燥的理论也有很多有趣的应用。在本次课程设计过程中,发现自己理论知识的薄弱,需要在以后的学习过程中加强。同时也感谢曹玉英老师的讲解和其他同学的帮助。
8
D S P 课程设计报告
题目:
FIR 高通滤波器设计
姓 名 学 号 教学院系 专业年级 指导教师
目录
一、设计题目..................................................................................... 1 二、设计目标..................................................................................... 1 三、算法研究与参数计算 ................................................................ 1
1、FIR 的原理和参数生成公式 ............................................... 1 2、利用MATLAB 计算滤波系数 . ........................................... 1 3、输入信号参数计算 .............................................................. 2 四、编写源程序 ................................................................................ 3 五、调试过程..................................................................................... 4
1、调试前准备 .......................................................................... 5 2、MATLAB 的使用 ................................................................. 5 3、编写及编译程序 .................................................................. 5 4、设置断点和探针 .................................................................. 6 5、打开观察窗口 ...................................................................... 6 六、实验结果及分析 ........................................................................ 6
1、输入信号的时域波形和频域波形 ...................................... 6 2、输出信号的时域波形和频域波形 ...................................... 7 七、设计心得..................................................................................... 8
一、设计题目
FIR 高通滤波器设计
二、设计目标
设计一个FIR 高通滤波器,通带边界频率为6000Hz ,采样频率为20000Hz 。FIR 滤波器的设计用MA TLAB 窗函数法进行。
三、算法研究与参数计算
1、FIR 的原理和参数生成公式
图3-1
2、利用MATLAB 计算滤波系数
在MATLAB 界面输入图3-2所示程序,可得到滤波系数并生成INC 文件。
图
3-2
1
输入freqz (y ,1,512),MATLAB 中显示高通滤波器的滤波特性曲线。如图3-3所示。
图3-3
3、输入信号参数计算
MATLAB 中输入图3-4中所示程序,包含两种频率成分的正弦信号,一种信号频率1000Hz ,一种信号6000Hz 。
图3-4
其频谱特性曲线如图3-5。
图3-5
2
四、编写源程序
参考资料,编写汇编语言源程序:
HIGHPASS .set 1 ;if you want to use ,please set the value to 1
.global start,fir .mmregs
COFF_FIR_START: .sect "coff_fir" .copy "0126.inc" K_FIR_BFFR d_data_buffer FIR_DP d_filin output input
.set 64 .usect "fir_bfr",64 .usect "fir_vars",0 .usect "fir_vars",1 .usect "fir_vars",1
.usect "fir_vars",1 .usect "fir_vars",100h
d_filout
stacksize .set 256
stack .usect "fir_vars",stacksize .asg .asg .asg .asg .asg nop start:
stm #stack+stacksize,SP LD
#FIR_DP,DP
#d_data_buffer,FIR_DATA_P A,*FIR_DATA_P+ #d_filin,INBUF_P
3
AR4,FIR_DATA_P AR6,INBUF_P AR7,OUTBUF_P AR3,OUTBUF AR2,INBUF
.sect "fir_prog"
STM STL STM
RPTZ A,#K_FIR_BFFR-1
STM STM STM STM fir_loop:
#d_filout,OUTBUF_P #output,OUTBUF #input,INBUF #100h,BK
NOP ;Add Breakpoint & porbe point LD
*INBUF_P,A
STL A,*INBUF CALL fir STH STH main_end: b fir:
; SSBX SXM ; SSBX FRCT STM STL STM fir_task:
RPTZ A,#K_FIR_BFFR-1 MACD RET .end
*FIR_DATA_P-,COFF_FIR_START,A #d_data_buffer,FIR_DATA_P A,*FIR_DATA_P
#(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P
fir_loop
A,*OUTBUF_P+% A,*OUTBUF
五、调试过程
4
1、调试前准备
1)启动SETUP 并选择芯片。
2)在CCS 的安装目录下的myproject 的子目录下创建新文件夹,命名1207030126。
2、MATLAB 的使用
使用MATLAB 生成0126.Inc 文件和1207030126.dat 文件,保存在1207030126文件夹中。如图5-1:
图5-1
3、编写及编译程序
1)新建project 并命名1207030126。 2)在project 中添加0126.asm 文件和0126.cmd 文件。如图5-2。
3)编译并链接程序。
4)设置工程文件,选择菜单“project ”的“build options…”项。
图5-2
5)加载程序。File —
load program
5
4、设置断点和探针
在标号“fir_loop”下的“NOP ”语句处设置软件断点和探针。 选择“file ”、“file I/O…”; 按照实验程序操作。
5、打开观察窗口
选择菜单“view ”、“Graph ”、“time/Freauency…”。按要求设置。
六、实验结果及分析
1、输入信号的时域波形和频域波形
输入信号的时域波形如图6-1所示,频域波形如图6-2所示。
图6-1
图6-2
这个信号由1000Hz 和6000Hz 的信号叠加而得。
6
2、输出信号的时域波形和频域波形
输出信号的时域波形如图6-3所示,频域波形如图6-4所示。
图6-3
图6-4
从输入信号波形和输出信号波形对比看,低频信号(1000Hz )不能顺利通过滤波器,被削减到几乎为0,而高频信号(6000Hz )可以顺利通过。因此这是一个性能良好的高通滤波器。
7
七、设计心得
本次我的课程设计是基于窗函数法的FIR 数字高通滤波器,由于数字信号处理课程是上学期学的,再加上自己对MATLAB 软件操作不熟练。导致前期用了很长一段时间查阅相关书籍,重新学习了数字滤波器的相关知识和MATLAB 软件的操作方法。同时也锻炼了文件检索和查找数据手册的能力。通过本次课程设计,加深了我对数字滤波器理解。也认识到数字滤波器在实际生活具有广泛的应用。同时,改变了我对数字信号的看法,原来,枯燥的理论也有很多有趣的应用。在本次课程设计过程中,发现自己理论知识的薄弱,需要在以后的学习过程中加强。同时也感谢曹玉英老师的讲解和其他同学的帮助。
8