当前位置: 首页>>专业认证>>学子风采>>信工11>>正文
   
 专业简介 
 培养目标 
 培养计划 
 毕业要求 
 课程体系 
 持续改进 
 学子风采 
 认证知识 
   
信工111-秦龙-音频信号数字处理系统的设计与实现
2015-09-05 13:50  

摘要:为了提高学生对数字信号处理课程的学习兴趣,以及更深入的理解课程内容,设计了一个基于MATLAB的数字信号处理实验平台。本设计选用USB2831采集卡作为采集设备,通过编写MEX文件扩展MATLAB的外部程序接口,使其能对采集卡的数据进行实时接收,然后在MATLAB中利用其强大的数字信号处理功能完成对信号处理中信号的基本运算,时域分析、频域分析,对离散系统的分析,IIR滤波器的实现和FIR滤波器的实现等功能,最后利用MATLAB GUI编写用户操作界面,对处理结果加以显示。

关键词:数字信号处理,MATLAB,采集卡。

1 系统架构介绍

本文是基于MATLAB设计了一个数字信号处理实验系统平台,通过点击实验系统界面上的相应功能按钮,可以实现使用USB2831采集卡对实时信号的采集,以及对采集信号处理的基本功能,并能将处理结果清晰的显示在图形界面上。

1.1 系统结构

本设计采集卡选择的是阿尔泰公司的USB2831数据采集卡,是一款基于USB总线的多功能信号采集卡,具有16路单端/8路差分模拟信号采集、4路模拟信号输出、16路数字信号输入/输出。因为所选采集卡USB2831和MATLAB还没有现成的接口函数可以调用,只提供了自带的用VC编写的Windows环境下对板卡通道的读写操作,所以只能进行MATLAB与VC的混合编程。利用MEX文件作为MATLAB与C++语言的程序接口,实现了MATLAB对采集卡接口数据的实时读写操作,并利用MATLAB进行进一步的数据处理和界面显示系统框图如图1-1所示。

图1-1系统框图

1.2 系统功能

各部分功能如下:

(a)信号的采集,通过采集卡进行实时信号的采集。

(b)离散系统的时域分析,通过离散系统的单位冲激响应与单位阶跃响应来对其时域进行分析。

(c)线性卷积与循环卷积的计算,通过对两信号进行线性卷积与不同点的循环卷积,来观察循环点数对循环卷积的影响。

(d)频谱分析,通过FFT对信号进行频谱分析。

(e)快速卷积,通过FFT实现快速卷积。

(f)离散系统的变换域分析,通过对离散系统画零、极点图,以及求其频率响应来分析其变换域。

(g)IIR滤波器的设计,通过通带截止频率,阻带截止频率,通带衰减,阻带衰减,使用双线性变换法设计低通IIR滤波器。

(h)FIR滤波器的设计,通过通带截止频率,阻带开始频率,阻带衰减,以及不同的窗函数来设计FIR低通滤波器。

2 采集卡的应用设计

由于采集卡USB2831的驱动程序采用面向对象编程,所以要使用设备的一切功能,则必须先用CreateDevice函数初始化一个设备对象句柄,有了这个句柄便可以用InitDeviceAD函数初始化AD部件,关于采样通道、频率、量程的参数设置是由这个函数的pADPara参数结构体决定的。只需要对这个pADPara参数结构体的各个成员简单赋值即可实现所有硬件参数和设备状态的初始化,然后这个函数启动AD设备。接着便可用ReadDeviceAD反复读取AD数据以实现连续不间断采样,当需要关闭AD设备时,ReleaseDeviceAD便可实现。

由于采集卡USB2831的驱动程序是C++程序,所以本设计利用MATLAB的MEX命令调用C++程序生成动态链接库。MEX文件是由原C/C++代码加上MEX文件专用的接口函数后编译而成的。可以这样理解,MEX文件实现了一种接口,它把在Matlab中调用函数时输入的自变量通过特定的接口调入了C/C++函数,得出的结果再通过该接口调回Matlab。该特定接口的操作,包含在mexFunction这个函数中。

3 信号处理实验各模块的设计与实现

为实现数字信号处理实验的各内容,需制作9个图形用户界面。先在GUI中选择所需的控件,再对每个控件的属性进行设置,保存并编程。这里需要注意的是,属性设置中最重要的是pushbutton控件的“callback”(回调函数)属性,因为编程基本上都是对pushbutton控件进行,若其“callback”属性设置不好将不能实现对它进行编程。

界面设计好后,需要对一些控件进行编码,以实现相应的功能。采样MATLAB语言进行编程比较简单,与C语言相似,且由于SPTOOL工具箱的开发,许多功能可直接调用函数就可实现。

4 实验测试

测试也是系统开发中一个重要的环节,检查系统能否正常运行、模块间的调用是否正确以及能否实现设计预期的要求。通过测试能够对隐藏在系统中的错误作及时修改,使系统更加完善。在系统开发过程中,对每一个开发好的模块均进行了单元测试,在模块组装成系统时进行了集成测试,下面介绍系统确认测试即性能测试和演示过程,看其是否完成了预定的功能。(以FIR滤波器设计为例)

(1)采集卡启动模块测试

如图4.1所示,在采集卡启动模块界面输入采样频率,AD量程,采样点数按顺序点击初始化采集卡、AD采集按钮,显示如图4-1所示。

图4-1 AD采集效果图

点击选择实验按钮,出现图4-2所示选择实验界面,选择要进行的实验。

图4-2选择实验效果图

选择实验7,进行FIR滤波器设计实验。输入要设计滤波器参数,选择要使用的窗函数,点击生成滤波器按钮,再点击采集信号按钮和滤波按钮,结果如图4-3所示。

图4-3设计FIR滤波器效果图

5 总结

经过这几个月的努力,我终于完成了毕业设计,并且得出的结果达到了预期的效果,通过对数字信号处理实验系统的设计,我提高了软件编程能力,并学习了MATLAB中GUI界面设计,还温习了数字信号处理课程中和设计课题相关的知识,感受到了学以致用的成就感,在系统的完成和论文的撰写工作中,我体会到整个过程的艰辛,给我留下了深刻的记忆,相信会对我以后的学习有很大帮助。

在做软件平台的过程中,遇到了很多困难,如采集卡的驱动程序是用C++编写的,不能直接在MATLAB中使用,所以我又查了VC++与MATLAB混合编程的书籍,最后终于通过MEX文件实现了混合编程,这个是这次设计最大的收获。虽然花了时间,但还是很值得的。

在设计实验程序过程中也遇到了很多难点,如滤波器的设计,涉及内容较多,所以我又把数字信号处理中相关的知识仔细温习了一遍,才对滤波器的设计有一个直观的认识。在设计过程中还遇到了很多小难点,我深深体会到只有在编写程序的实践中发现问题,提出问题,并耐心的尝试解决问题,才会有意想不到的收获。

参考文献

[1]刘维.精通MATLAB与C/C++混合程序设计.北京:北京航空航天大学出版社,2011.1。

[2]程佩青.数字信号处理教程[M].北京:清华大学出版社,2007。

[3]楼顺天,李博菡.基于Matlab的系统分析与设计[M].西安:西安电子科技大学出版社,1998。

[4]李强,明艳,陈前斌。基于Matlab的数字信号处理实验仿真系统的实现[B].实验技术与管理.2006,23(5):83-84.

[5]丁玉美,高西全.数字信号处理[M].西安:西安电子科技大学出版社,2008.

[6]沈媛媛.基于Matlab的数字信号处理综合性实验设计[A].实验室研究与探索.2009,28(8)61-62.

关闭窗口