数字滤波器的DSP仿真设计
2011-10-26包头师范学院信息科学与技术学院包头市014030
陈 静 包头师范学院信息科学与技术学院,包头市 014030
数字滤波器的DSP仿真设计
陈 静 包头师范学院信息科学与技术学院,包头市 014030
通过使用DSP的Device Simulator仿真器来实现数字滤波器的设计,详细介绍了系数对称的数字滤波器的设计方法及调试步骤,给出了电路仿真的结果,并通过CCS的虚拟示波器和频谱仪观察输入输出信号波形和频谱变化,并对结果进行分析比较。
数字滤波器;有限冲激滤波器;虚拟示波器
1.数字滤波器的实验原理
数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,是数字信号处理的基本组成部分。其输入是一组(由模拟信号取样和量化的)数字量,其输出是经过变换(或说处理)的另一组数字量。因此它本身既可以是用数字硬件装配成的仪态完成给定运算的专用数字计算机,也可将所需的运算编成程序,让通用计算机来执行。数字滤波器具有稳定性高、精度高、灵活性大等优点。
1.1 数字滤波器的设计过程
1)按照通常实际需要,确定滤波器的性能要求。通常(但不总是)是在频域中给定数字滤波器的性能要求。
2)寻找一满足预定性能要求的离散时间线性系统。FIR滤波器的系统函数是z-1的多项式。IIR滤波器的系统是z-1的有理函数。这样,滤波器的设计问题变成了一个数学逼近问题,即用一个因果稳定的系统函数去逼近给定的性能要求,以确定滤波器系数。
3)用有限精度的运算实现所设计的系统。这里包括选择运算结构,及对滤波器的系数,输入变量,中间变量,和输出变量量化到固定字长。
4)通过模拟,验证所设计的系统是否符合给定性能要求。根据这步的结果决定是否对第2步和第3步作修改,以满足要求。
1.2 数字滤波器的实验原理
数字滤波器有两种类型[1]:有限冲激滤波器(FIR)无限冲激响应滤波器(IIR)。有限冲激响应滤波器的输入/输出关系为:
FIR滤波器的结构如图1-1所示
系数对称的FIR滤波器,由于具有线性相位特性,因此运用很广,特别是在对相位失真要求很高的场合。
例,一个N=8的FIR滤波器若a(n)=a(N-1-n),,就是对称FIR滤波器,其输出方程为:y(n)=a0x(n)+a1x(n-1)+a2x(n-2)+a3x(n-3)+a4x(n-4)+a5x(n-5)+a6x(n-6)
+a7x(n-7)总共有8次乘法和7次加法。如果改写成:y(n)=a0[x(n)+x(n-7)]
+a1[x(n-1)+x(n-6)]+a2[x(n-2)+x(n-5)]+a3[x(n-3)+x(n-4)],则变成4次乘法和7次加法。可见,乘法运算的次数减少了一半。这是对称FIR的又一个优点。对称FIR滤波器C54X实现要点如下:
1)在数据存储器中开辟两个循环缓冲区:New循环缓冲区中存放新数据,Old循环缓冲区中存放老数据。循环缓冲区的长度为N/2。
2)设置循环缓冲区指针:AR2指向New缓冲区中最新的数据,AR3指向Old缓冲区中最老的数据。
3)在程序存储器中设置系数表。
4)AR2+AR3—>AH(累加器A的高位),AR2-1—>AR2, AR3-1—>AR3。
5)将累加器B清零,重复执行4次(i=0,1,2,3):AH*系数 +B—>B,系数指针(PAR)加1,AR2+AR3—>AH,AR2和AR3减1。
6)保存和输出结果(结果在BH中)。
7)修复数据指针,让AR2和AR3分别指向New缓冲区中最新的数据和Old缓冲区中最老的数据。
8)用New缓冲区中最老的数据代替Old缓冲区中的数据,Old缓冲区指针减1。
图1
9)输入一个新数据替代New缓冲区中最老的数据。重复执行第4~9步。
2. 观察实验结果及分析
单击Rebuild All编译程序成功后,单击File菜单的Load program,选择Debug目录中的fir.out文件,然后装载程序。
1)打开观察窗口
(1)选择菜单View—>Graph—>Time/Frequency,在弹出窗口Graph Property Dialog中进行如图1-2所示设置,单击OK打开input窗口。
(2)选择菜单View—>Graph—>Time/Frequency,在弹出窗口Graph Property Dialog中进行如图1-3所示设置,单击OK打开inputft窗口。
(3)选择菜单View—>Graph—>Time/Frequency,在弹出窗口Graph Property Dialog中进行如图1-4所示设置,单击OK打开output窗口。
(4) 选择菜单View—>Graph—>Time/Frequency,在弹出窗口Graph Property Dialog中进行如图1-5所示设置,单击OK打开outputft窗口。
2) 运行并观察结果
选择Debug菜单中的Run选项,或按F5键运行程序,再选择Debug菜单中的Halt选项或按Shift+F5键停止运行程序,分别观察input、output窗口中的时域图形和inputft、outputft窗口中的频域图形,观察滤波效果。
3. 实验结果
3.1 输入信号:图2
图2
3.2 输出信号:图3
3.3 结论
左边两幅为时域的输入及输出波形,右边两幅为频域的输入及输出波形,信号通过低通滤波器后在1333频点处保留原信号(1500Hz是通带截止频率),从图中很明显可以看到2667频点(阻带截止频率2000Hz)之后的高频信号明显被滤除,使用CCS的虚拟示波器和频谱仪来观察输入/输出信号波形和频谱变化的方法很好地实现了数字低通滤波器的功能。
图3
在设计中,充分利用先进的EDA软件,往往能事半功倍,大大提高设计效率。由于设计要求的差异,如字长、各级输出的保留精度等不同,所以,在整个设计过程中,各个环节会有所不同,这就需要根据不同的要求对数据进行不同的处理,如截断、扩展等,从而设计出既满足设计需要,又节省资源。
[1]王世一.数字信号处理[M].第 2版.北京:北京理工大学出版社.2004;164-176
[2]雷勇.DSP系统设计与实践[M].第1版.北京:电子工业出版社. 2004;60-61
[3]程配青.数字信号处理教程[M]第3版.北京:清华大学出版社.2007;196-203
10.3969/j.issn.1001-8972.2011.08.093
陈静 硕士 2008年毕业于四川大学电气信息学院,现就任于包头师范学院信息科学与技术学院,主要研究方向为现代信号处理 嵌入式系统。