Matlab仿真在DSP应用技术实验教学中的应用

2015-05-08 06:49
实验科学与技术 2015年2期
关键词:正弦波信号处理频域

杨 光

(长春理工大学 电子信息工程学院,长春 130022)

·软件开发与应用·

Matlab仿真在DSP应用技术实验教学中的应用

杨 光

(长春理工大学 电子信息工程学院,长春 130022)

文中介绍了一种基于DSP的FIR滤波器设计方法。首先,利用Matlab设计出符合要求的低通滤波器,给出仿真实现结果,并提取滤波器系数;然后,采用循环缓冲区和双操作数间接寻址方式在TMS320LF2407A芯片上实现两个不同频率正弦波信号的低通滤波。对比仿真和硬件验证结果表明,该滤波器基本满足预期性能指标要求。实践与研究表明,在DSP应用技术实验教学中,引入Matlab仿真,解决了实验教学中存在的问题,获得了良好教学效果。

DSP技术;实验教学;仿真;Matlab软件

信息化是当今社会发展的趋势和特点,数字化是信息化的基础, 而数字信号处理技术则是数字化最重要的技术之一[1]。DSP应用技术是一门理论与实践紧密结合的课程,尤其是近年来飞速发展的嵌入式应用系统技术,使得新知识、新技术、新方法不断涌现[2-3],致使DSP技术在各个领域里得到了广泛的应用。DSP应用技术实验教学的侧重点放在硬件系统和软件程序设计上,而在数字信号处理算法实验中,教师往往是给出具体参数,学生编制软件,对程序进行验证即可,导致学生不知道数字信号处理的参数是如何给定的;而在DSP应用技术实验教学中,引入Matlab仿真,运用Matlab对数字信号处理算法进行仿真,通过DSP进行硬件算法验证,加深学生对数字信号处理算法的理解,使学生既掌握了数字信号处理应用系统的设计流程,又掌握了DSP芯片的硬件设计与软件编程方法。DSP技术已经成为工程实践型、应用型人才必须掌握的重要的前沿高新技术之一[2- 4]。

1 FIR滤波器的基本原理

FIR滤波器是有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件。它保证任意幅频特性的同时具有严格的线性相频特性,同时,其单位抽样响应是有限长的,因而滤波器是稳定的系统。在通信、模式识别、图像处理等领域里,FIR滤波器有着广泛的应用。

对于FIR滤波器,可以采用递归算法实现,直接型的FIR滤波器的冲激响应h(n)是有限长的,数学上N阶FIR滤波器表示为:

(1)

它的系统传递函数如下:

(2)

式(2)表明,单位脉冲响应的宽等于N个取样,则H(z)是z-1的N-1次多项式。

FIR滤波器的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数的问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。常用的窗函数性能比较如表1所示。

图1 窗函数性能比较

2 窗函数原理及Matlab仿真实现

对一个含有20 Hz和500 Hz的混和正弦波信号,信号的表达式如式(3)所示:

x=cos(2π×20t)+cos(2π×500t)

(3)

设计一个FIR低通滤波器,参数要求:采样频率fs=2 000 Hz,Rp=0.3 dB,As=60 dB,要求保留20 Hz的信号,采用凯塞窗设计。

2.1 凯塞窗的原理

凯塞窗函数的时域形式可表示为

(4)

(5)

式中:α为凯塞窗函数的主瓣值和旁瓣值之间的差值(dB)。改变β的取值,可以对主瓣宽度和旁瓣衰减进行自由选择。β的值越大,窗函数频谱的旁瓣值就越小,而其主瓣宽度就越宽。

2.2Matlab仿真实现

在Matlab信号处理工具箱中,设计FIR滤波器方法有三种:程序设计法、FDATool设计法和SPTTool设计法。在这里采用程序设计法,用b=fir1(N,Wn,′ftypre′,taper)等函数辅助设计FIR数字滤波器。N代表滤波器阶数;Wn代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn为双元素相量;ftype代表滤波器类型;taper为窗函数类型,默认为海明窗。Matlab的仿真代码如下:

clear;

fs=2000;

t=(1:200)/fs;

x=cos(2*pi*20*t)+cos(2*pi*500*t);

L=length(x);

N=2^(nextpow2(L));

Hw=fft(x,N);

figure(1);subplot(2,1,1);plot(t,x);

gridon;title(′滤波前信号x′);

xlabel(′时间/s′);

ylabel(′振幅A(V)′);

subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw));

gridon;title(′滤波前信号频谱图′);

xlabel(′频率/Hz′);

ylabel(′振幅|H(e^jw)|′);

Ap=1;As=60;

dev=[(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];

mags=[1,0];

fcuts=[50,300];

[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);

x_1=filter(hh1,1,x);

L=length(x_1);

N=2^(nextpow2(L));

Hw_1=fft(x_1,N);

figure(2);subplot(2,1,1);plot(t(1:L),x_1);

gridon;title(′x_1=cos(2*pi*20*t)′);

xlabel(′时间/s′);

ylabel(′振幅A(V)′);

subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_1));

gridon;title(′滤波后信号x_1频谱图′);

xlabel(′频率/Hz′);

ylabel(′振幅|H(e^jw)|′);

通过Matlab仿真得出滤波前和滤波后信号的时域和频域波形分别如图1和图2所示。通过仿真运算可得N=30,Wn=0.175,beta=5.653 3,在Matlab中,通过执行hh1=fir1(N,Wn,ftype,kaiser(N+1,beta))语句,可以得到滤波器系数h(n)=hh1,如表2所示,再根据式(1)在DSP中实现数字滤波。

图1 滤波前信号的时域和频域波形

图2 滤波后信号的时域和频域波形

序号系数1000042000113000164000115-000146-000627-001258-001739-0016410-00054110018212005361300955140135615016461601752序号系数1701646180135619009552000536210018222-0005423-0016424-0017325-0012526-0006227-000142800011290001630000113100004

2.3 在DSP中实现FIR滤波器原理

在获得N个滤波器系数h(n)后,按照式(1)运算,即可实现数字滤波。

首先,在程序存储器中开辟N个单元来存放系数h(n)。由于输入序列x(n)是不断变化的,所以需要在DSP的数据存储器开辟N个存储单元并进行移位寄存,其初始值分别为x(n),x(n-1),…,x(n-N-1)。然后,通过循环寻址实现对数据存储空间的访问。在每次存入新的数据时,用新数据修改滑动窗口中最前面的数据,而滑动窗口中其他数据不变,也不需要移动。利用DSP扩展的8 kB数据存储器可对滑动窗口进行间接寻址,循环缓冲区地址首尾相邻。结构如图3所示, 其中顶部为低地址。

图3 循环缓冲区结构

2.4 在DSP中硬件验证FIR滤波器

在硬件验证中,通过信号发生器产生幅值为1 V、频率分别为20 Hz和500 Hz的正弦波信号,连接到TMS320LF2407A DSP的两路AD上,采集数据并相加,同时对结果的幅度进行限制,从而产生混合后的输出数据;调用程序存储器之中的滤波系数,按照式(1)在DSP之中做滤波运算,并将混频波形和滤波之后的波形在DSP的CCS软件的Graph窗口中显示,处理程序流程如图4所示。在Graph窗口中显示的输入数据波形和输出数据波形分别如图5和图6所示。

图4 处理程序流程图

图5 DSP滤波前信号的时域和频域波形

图6 DSP滤波后信号的时域和频域波形

3 实验结果分析

3.1 对比分析Matlab仿真滤波前后的效果

用Matlab编程产生的输入信号时域图和频域图,如图1所示,可知输入信号是由20 Hz和500 Hz正弦波叠加而成的,抽样频率为2 000 Hz。

对比滤波前和滤波后的信号时域图与频域图,从图1和图2中可以看出,输入信号通过截止频率为175 Hz(Wn×1 000=0.175×1 000=175)的滤波器,频率为500 Hz的正弦波被滤掉了,频率为20 Hz的正弦波被保留,达到了滤波的效果。

3.2 对比分析DSP滤波前后的效果

利用信号源产生20 Hz和500 Hz的正弦波信号,通过DSP片内AD转换、混频之后形成的输入信号时域图和频域图见图5,抽样频率为2 000 Hz。

利用Matlab仿真产生的滤波器系数h(n)与AD采集的输入信号进行滤波运算,对比滤波前和滤波后的信号时域图与频域图,从图5和图6可以看出,输入信号通过FIR低通滤波运算之后,输出信号中频率为500 Hz的正弦波被滤掉了,频率为20 Hz的正弦波被保留。在DSP中达到了与Matlab仿真中同样的滤波效果,验证了Matlab仿真的正确性。

3.3 对比分析Matlab仿真与DSP硬件滤波效果

对比分析用Matlab仿真与DSP滤波输出信号时域图和频域图,如图2和图6所示,其中,DSP滤波输出信号开始一段时间的数据不正常,这是由于FIR 滤波器的相位延迟造成输出波形有一定的延迟,但这并不影响滤波的效果。从图2和图6可看出,DSP输出的滤波结果与Matlab仿真的滤波结果相一致,有效地滤除了高频成分。

4 结束语

在DSP应用系统的硬件及软件开发中,尤其是涉及数字信号处理算法,应用Matlab软件进行仿真可以提高软件的设计效率,极大提高了算法的有效性。在DSP应用技术实验教学中,引入Matlab仿真,增强学生学习数字信号处理算法的直观性,使教学内容更加直观、生动,有助于增强学生学习数字信号处理算法的积极性,加深学生对抽象概念的理解和掌握,还能大大激发学生的学习兴趣。通过实验,充分锻炼学生独立解决问题的能力,培养学生的创新意识。

[1]熊承义,侯建华.DSP技术本科课程教学改革与探索[J].高等理科教育,2008(6):94-96.

[2]高国旺,党瑞荣,任志平.DSP课程教学改革与创新实践探索[J].理工高教研究, 2010,29(1):131-133.

[3]孙成立,王希敏.DSP技术课程研究型教学模式探索[J].实验技术与管理,2010,29(11) :306-308.

Application of Matlab Simulation in DSP Application Technology Experiment Teaching

YANG Guang

(School of Electronic Information Engineering,Changchun University of Science and Technology, Changchun 130022, China)

A design method of FIR filter which based on DSP is introduced. Firstly, a low-pass filter which meets the requirements is designed by Matlab, and the simulation result is given, and the filter coefficient is extracted. Then, the low-pass filter of two different frequency sine wave signals is achieved by indirect addressing mode of the circular buffer and double operation in the TMS320LF2407A. Contrasted simulation with hardware verification results, it shows that the filter can meet basically expected performance requirements. The practices and researches show that Matlab simulation which is introduced in DSP application technology experiment teaching, obtain good teaching effect and solve the problems of DSP application technology experiment teaching.

digital signal processor technology; experiment teaching; simulation; Matlab software

2014-06-29;修改日期: 2014-08-19

2011年吉林省高等学校省级特色专业建设点(吉教高[2011]27号);2011年吉林省优秀课建设基金资助项目(吉教高字[2011]43号);2012年长春理工大学高等教育教学研究基金资助项目。

杨 光(1975-),男,在读博士研究生,副教授,研究方向:DSP、FPGA/CPLD应用,汽车非标测量设备的开发,数字图像处理,微纳米装配及制造。

TP391.9;G642.0

A

10.3969/j.issn.1672-4550.2015.02.012

猜你喜欢
正弦波信号处理频域
大型起重船在规则波中的频域响应分析
单相正弦波变频电源设计与实现
采用BC5016S的纯正弦波逆变器设计及制作
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
频域稀疏毫米波人体安检成像处理和快速成像稀疏阵列设计
基于改进Radon-Wigner变换的目标和拖曳式诱饵频域分离
基于频域伸缩的改进DFT算法