课 程 设 计 报 告
课程设计名称: DSP原理与应用 系 : 学生姓名: 班 级: 学 号:
成 绩: 指导教师:
开课时间: 2012-2013 学年 2 学期
基于TMS320VC5509 DSP的FIR滤波器设计
一、实践的目的和要求 1、实践的目的
通过对本课程设计,进一步地理解和掌握高速数字信号处理器的特点和基本概念,如何运用PC机来实现DSP的应用,掌握用窗函数法设计FIR数字滤波器的原理方法,熟悉线性相位FIR数字滤波器特性,了解各种窗函数对滤波器特性的影响。掌握TMS320C55x DSP常用的开发工具,掌握集成开发环境CCS的使用及利用CCS进行程序开发的一般过程。
掌握汇编语言程序的编写方法,汇编器和链接器的用法,能利用汇编指令实现高速数字信号处理器的一些典型算法,并能在DSP应用方面得到锻炼,通过该课程的学习DSP技术的应用更进一步的认识,为以后进步社会积累经验储备知识。 对FIR算法实验更加熟悉,以及对之前大二时候学过的FIR滤波器有了更进一步的体会,要做好实验,之前课本上学到的知识是非常重要的。提升了自己的动手能力,用计算机来操作,编写编程,然后进行编译,若出粗再进行改错,在加载至在DSP芯片中,来实现某种功能。将更加熟练的操作CCS界面。
2、实践的要求
设计要求:已知信号的采样频率为8000hz,设计一个32阶的低通滤波器,滤波器的通带截止频率为2950hz,阻带截止频率为3150hz。
认真阅读实验中的源程序,深刻理解FIR滤波的原理及具体实现方法,包括含噪信号的生成,滤波后信号的输出重点理解FIR滤波器的实现。
(1)设计一定参数的滤波器
用MATLAB设计滤波器,使用fir2函数设计滤波器,注意,在函数中,其截止频率均用归一化频率表示。
(2)编译并下载程序
(3)打开观察窗口(View—>Graph->Time/Frequency)进行设置
(4)得出结论为:输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。通过观察频域和时域,知:输入波形中低频波形通过了滤波器,而高频部分则大部分被滤除。
二、实践原理:
1、FIR滤波器的原理 (1)FIR---有限冲激响应
设FIR滤波器的单位冲激响应为h(n),0?n?N?1,系统函数 H(Z)?N?1k?0?h(n)zn?0N?1?n
差分方程形式为:y(n)?基本结构(直接型):
?h(k)x(n?k)
(2)FIR滤波
器具有以下特点:
a、可以做成严格的线 性相位,同时又可以具有任意的幅度特性
b、单位冲激响应是有限长的,所以一定是稳定的,因此在实际中得到广泛的应用。 (3)设计
数字滤波器的实现可以采用专用DSP芯片,通过编写程序,利用软、硬件结合完成滤波器设计,也可以采用市面上通用的数字滤波器集成电路来实现,但这两种方法无法适应高速应用场合。随着集成电路技术的高速发展,FPGA应用越来越普及,FPGA器件具有芯片密度大、执行效率高,速度快,集成度高等优点,用FPGA芯片作为滤波器的设计载体,可以实现高速信号滤波功能。
2.FIR滤波器在DSP上的实现
(1)硬件上PC兼容机,操作系统为Windows XP,安装Code Composer Studio 3.1软件。,用相关连接线和DSP仿真器相连。 (2)打开CCS集成开发环境,先在CCS 的Setup进行配置选择C5509芯片,然后在启动CCS,双击CPU_1,在debug菜单下点击connect。
三、实践步骤
1.设计一定参数的滤波器
编写滤波器程序,首先要算出各个所需要的系数,然后编译程序,完成滤波的功能。用MATLAB设计滤波器,使用fir2函数设计滤波器,注意,在函数中,其截止频率均用归一化频率表示。
已知信号的采样频率为8000hz,设计一个32阶的低通滤波器,滤波器的通带截止频率为2950hz,阻带截止频率为3150hz。在函数中,其截止频率均用归一化频率表示。
归一化频率的计算方法:f=实际频率/(采样频率/2),则将截止频率归一化后的截止频率值为0.7375和0.7875。
(1)程序代码:
(2)结果:
2、设计:
过渡带宽度=阻带边缘频宽-通带边缘频率 采样频率:
f1=通带边缘频率+(过渡带宽度)/2 理想低通滤波器脉冲响应: h1[n]=sin(nΩ1)/n/π
根据要求,选择布莱克曼窗,窗函数长度为: N=5.98fs/过渡带宽度 选择N=32
w[n]=0.42+0.5cos(2πn/31)+0.8cos(4πn/31) 滤波器脉冲响应为: h[n]=h1[n]w[n]|n|<=12 h[n]=0|n|>12
根据上面计算,各式算出h[n],然后将脉冲响应值移位为因果序列。 完成的滤波器的差分方程为:
y[n]=-0.001x[n-2]-0.002x[n-3]-0.002x[n-4]+0.01x[n-5]-0.009x[n-6]-0.018x[n-7]-0.049x[n-8]-0.02x[n-9]+0.11x[n-10]+0.28x[n-11]+0.64x[n-12]+0.28x[n-13]-0.11x[n-14]-0.02x[n-15]+0.049x[n-16]-0.018x[n-17]-0.009x[n-18]+0.01[n-19]-0.002x[n-20]-0.002x[n-21]+0.001x[n-22]
3、 程序流程图
开始 波形发生 FIR滤波 初始化工作变量 计算步长 调用波形发生子程序产生混叠的波形(高频+低频) 用标准C的sin函数和cos函数计算当前波形值 用滤波器系数乘以保存的N-1个输入值和当前输入值并求和 调用FIR滤波子程序计算当前输出 返回计算结果 结束 返回波形值
4.滤波器的设计程序 #include \
#include \#include \#include
#define FIRNUMBER 32 #define SIGNAL1F 2950 #define SIGNAL2F 3150 #define SAMPLEF 8000 #define PI 3.1415926
float InputWave(); float FIR();
float
fHn[FIRNUMBER]={-0.0007,-0.0002,0.0018,-0.0036,0.0037,-0.0000,-0.0079,0.0164, -0.0178,0.0047,0.0234,-0.0556,0.0693,-0.0353,-0.0898,0.5910,