日期:2023-01-24 阅读量:0次 所属栏目:信息管理
0 引言
《数字信号处理》课程是高校电子信息类专业的主干课程,其主要教学目的是使学生理解数字信号处理的基本理论和分析算法、掌握其基本算法和设计方法[1]。本科阶段数字信号处理课程主要涉及离散时间信号与系统基本概念、傅里叶变换算法、数字滤波器结构与设计等方面。由于本课概念较抽象,内容牵涉到较多数字公式,给学生在深刻理解课堂内容方面造成一定的障碍。很多高校设置课程时,均给予该课一定数量的实验课时,通过实验以帮助学生更好地理解数字信号处理理论知识。
目前,数字信号处理课程的实验方法主要是基于MATLAB软件为主,即在MATLAB中编程并运行观察有关信号处理效果[2][3]。运用MATLAB软件作为实验平台,确实能提供便捷的分析方法[4]。然而,基于MATLAB的数字信号处理课程实验过程中,大量调用了MATLAB已有的函数,学生只需修改这些函数的参数即可。这种模式不能有效训练学生将理论知识用于工程实践的能力。
针对以上问题,本文研究了在数字信号处理课程现有的MATLAB实验基础上,引入数字信号处理芯片DSP(Digital Signal Processor)及其软件,通过实验过程针对DSP芯片实现常用数字信号处理算法。
1 实验设计
数字信号处理课程共64课时,其中实验课时8课时。本文以系数对称有限冲激响应滤波器(Infinite Impulse Response,IIR)为例来分析在MATLAB实验的基础上,引入DSP实验的方法与实验过程,该实验课时为4课时,要求学生有基本的DSP编程知识。
1.1 实验内容 实验包括了MATLAB实验和DSP实验两个环节。其中,MATLAB实验部分的主要任务是产生实验原始数据、设计滤波器系数、调用滤波器函数验证滤波器滤波效果。DSP实验部分是用C语言或汇编语言编程实现FIR滤波器并观察滤波效果。
1.2 实验过程 实验过程可以分7步进行,分别为:①MATLAB设计数字滤波器,获得系数;②MATLAB给出仿真原始待滤波数据;③MATLAB调用数字滤波器函数验证滤波效果;④观察是否符合滤波要求,若不符合要求则重新设计数字滤波器;⑤如果符合要求则将系数、原始数据归一取整后送往CCS;⑥CCS使用获得的系数与数据,基于DSP编程调试;⑦观察DSP是否符合滤波要求,若不符合修改程序。
2 实验设计
2.1 MATLAB实验部分 MATLAB实验部分首要任务是根据实验要求设计所需数字滤波器。这个环节既可以调用MATLAB函数进行设计,也可以直接使用MATLAB提供的数字滤波器工具FDATOOL进行设计。无论哪种方法,都需要确定滤波器类型、阶数等参数,最后由MATLAB帮助获得滤波器系数。本文给出的实例为采样频率为12KHz,通带截止频率为1200Hz,阻带起始频率为2400 Hz,阻带衰减不小于-40dB的FIR直接型低通滤波器。
若以窗函数法进行设计,则要求学生在实验过程中,多次实验观察不同窗函数对滤波器滤波效果的影响。本文采用Bartlett窗为例进行设计,设计所得数字滤波器为23阶。
获得数字滤波器系数后,由MATLAB产生待滤波信号,待滤波指信号可以是白噪声,也可以是由程序指定的几个不同频率信号的叠加。本文所举实例为便于说明,设置了频率分别为800Hz、3KHz、4KHz的三种信号混合作为待滤波信号。
滤波前后的信号频谱如图1所示。从图1可以看出该滤波器确实能够实现低通滤波。此后,实验进入DSP实验环节,要求基于DSP编程,并将得到的实验结果与MATLAB实验结果作对比,以确保基于DSP实现了数字滤波器要求。
2.2 DSP实验部分 DSP实验为训练工程实现能力,必须要求学生考虑各方面的细节,包括存储器的安排。本实验中,安排了三个存储器区域,分别存放数字滤波器系数、等待滤波的原始数据以及滤波后的数据。其次,由于本实验的编程目标是TI公司C5000系列的定点芯片,必须考虑定标问题,本实验中建议学生定标为Q15。滤波器系数与待滤波的原始数据在导入DSP系统的存储器之前,要求先归一化后取整。
本文以TI公司的C54xx系列DSP芯片的汇编语言系统为例来编程实现FIR低通数字滤波器。
一个L-1阶的FIR数字滤波器的I/O方程可以表示为:y(n)=■b■x(n-i) (1)
MATLAB实验调用filter函数实现(1)式滤波器。学生虽然知道滤波器的各项参数含义,但缺乏如何将FIR差分方程用具体的编程语言实现的概念,为此,本实验要求学生使用C语言或汇编语言编程实现FIR滤波器。
程序的部分源代码如下所示:
LD *DATA_IN+, A ;取得待滤波数据
FIR: STL A, *FIR_DATA+% ;将待滤数据存入指定缓存区
RPTZ A, (ORDER-1)
;重复执行系数与数据相乘并累加实现滤波
MAC *FIR_DATA+0%, *FIR_COEF+0%, A ;
STH A, *DATA_OUT+ ;将滤波后数据存入指定缓存区
以上程序中,FIR_DATA是指向存放待滤数据的寄存器,FIR_COEF是指向存放滤波器系数的存储器单元的寄存器。DATA_IN、DATA_OUT是指向存放滤波前后数据的存储器单元的寄存器,MAC指令执行乘累加操作。
本文所举实例中DSP实验部分的运行结果分别如图2所示。
图2表明,基于DSP编程设计的数字滤波器,实现了低通滤波的效果。与MATLAB的运行结果对比,二者一致。
3 结语
在现有使用MATLAB开展数字信号处理实验的基础上,引入DSP技术,基于DSP设计数字滤波器,在实际操作过程中,数字滤波器的类型、各项参数、以及原始待滤信号如何产生,都在教师演示后,由学生举一反三进行修改。整个实验过程综合了数字信号处理基本理论知识、MATLAB函数、DSP基本原理及其编程等方面的知识,对学生的知识综合运行提供良好的平台。由于本文研究的实验方法兼顾了理论性与工程性,使学生体会了理论知识在工程实践中的运用过程,极大了调动了学生的积极性、提高了学生将理论用于实践的信心。
参考文献:
[1]程佩青.数字信号处理教程[M].清华大学出版社,2007,2.
[2]袁小平.基于Matlab的数字信号处理课程的实验教学[J].实验室研究与探索,2002,2.
[3]郭琳,王子旭,沈小丰.基于Matlab开展DSP教学的研究与实践[J].电气电子学报,2007,3.
[4]张晓光等.Matlab在“数字信号处理”课程教学中的应用[J]. 电气电子学报,2004,10.
[5]戴明桢,周建江.TMS320C54xxDSP结构、原理及应用[M].北京:北京航空航天大学出版社,2003.