Matlab环境下用声卡产生特殊波形
2011-10-17张光成鲁晓东
张光成 陈 娟 鲁晓东
浙江海洋学院 浙江舟山 316000
Matlab环境下用声卡产生特殊波形
张光成 陈 娟 鲁晓东
浙江海洋学院 浙江舟山 316000
介绍了一种在Matlab环境下利用虚拟仪器技术实现声卡产生特殊波形的方法。该方法以手绘波形或数学图形为信号数据源,通过调用Matlab DAQ工具控制声卡D/A转换器,实现了声卡在音频范围内波形信号的输出。
虚拟仪器;特殊波形;声卡;Matlab
1 实现原理
1.1 声卡工作原理
从功能上看,声卡是一块完整的音频数据采集卡,其中模数变换器ADC(Analogue Digital Converter)用于采集音频信号,数模变换器DAC(Digital Analogue Converter)则负责将数字信号转换为能被喇叭等设备所使用的模拟信号。由于D/A在转换时需要一个数据锁存的过程,使得输出信号呈阶梯形变化。D/A转换位数、速率越高,阶梯效应就不明显,信号的平滑度就越好。
声卡在工作时是用DMA方式进行数据传送的,即先把采集到的数据送到缓冲区,然后将缓冲区的数据整块读出来,所以必须预先设置采样率、数据格式、缓冲区长度等参数,之后就不需要CPU的参与,因此具有较高的工作效率。
1.2 软件控制原理
虚拟仪器技术是通过计算机软件控制硬件进行工作的。软件首先要完成对波形数据的采集,借助Matlab的数据处理函数,使要输出的任意信号图形转换为数据序列,并根据声卡采样率装配成帧,即1秒内的数据,若信号的频率为f,则要保证1帧内有f个波形,但帧内数据量保持不变;其次是对声卡的控制,Matlab很多音频处理函数支持声卡的运行,其控制的方法是面向对象的,主要完成声卡的参数设置、信号输出和停止结束任务。
(1)波形数据的导入
波形可以通过手绘或绘图软件描绘,并以图片文件格式保存,需要时可以随时调入内存,然后提取图片中的波形数据。数据提取算法如图1所示,具体实现可以描述为:①读入图片文件到内存;②转为灰度格式;③计算波形数据,设图形如图2所示共M行,则第k列m行位置数据点的波形数据为:
依据美国心脏协会给出的15段分段法实施评估,闭塞即为达到100%狭窄程度;重度狭窄即为处于75至100%之间的狭窄程度;中度狭窄即为处于50至75%之间的狭窄程度;轻度狭窄即为低于50%的狭窄程度;无狭窄即为不存在狭窄程度。
图1 波形数据的提取
图2 波形采样
所要注意的是:图片中曲线数据的像素点数必须足够声卡每次的采样,若不够则必须通过插值运算补足。对于超过一次采样的量,则可以继续作均匀间隔的抽取。此过程Matlab的控制语句:
(2)声卡控制
Matlab对外设操作时先建立设备对象,再操作对象的属性或方法。控制的方法实际是调用软件工具箱提供的声卡控制函数,设计者要根据实际情况设置函数所需参数,便能有效地控制声卡的工作状态,操作时比其他编程软件更加简单。
创建一个设备对象,'winsound’是指声卡
ao=analogoutput('winsound');
在对象中创建或增加一个信号通道,由于声卡只有左右2个通道,所以最多可以增加到2个通道
chan=addchannel(ao,1);
设置采样频率,即每秒向D/A转换器发送的数据量Fs=44100;
set(ao,'SampleRate', Fs);
要保证信号的连续性,要不停地发送数据,这儿可以设置为无限次
set(ao,'RepeatOutput',inf);输出数据操作的函数putdata(ao,yout);
当完成输出数据操作后,并没有真正输出数据,必须启动声卡,才能对外输出信号,启动并触发声卡设备操作的命令如下:
start(ao);
信号输出完成后,声卡设备仍然保留在计算机系统中,若不将声卡设备停止并删除,计算机系统中仍会保留该设备,在下次启动虚拟信号发生器系统时将会发出声卡设备仍然在使用的错误信息。从系统中停止和删除声卡设备操作的命令分别如下:
2 实现过程
2.1 系统结构
由于系统的功能可由软件实现,使系统的硬件构架得到很大的简化(如图3所示)。根据要实现的功能,确定几种产生波形数据的方式,例如可由函数生成的正弦波、方波等和由图像产生的自定义波形。为了平滑输出的波形,一般在输出端接一个滤波器,最简单的就是使用一个RC电路。
2.2 软件设计
由于M a t l a b为用户提供了一个界面开发环境(GUIDE),使得图形界面的创建变得简单。用户通过一系列用户控件来实现用户与应用程序的交互。信号发生系统的功能设计如图4所示,由下拉框选择不同波形,custom项表示用户选择自定义的任意波形。滑动杆用于调节信号的频率(Frequency)、幅度(AMP)和占空比(Duty),同时用一个AXES控件显示要描述的波形,确定后用一个Command按钮启动声卡D/A转换。
图4 波形交互界面
3 实验测试与分析
先测试系统的各项功能,外部导入一幅Marr小波波形图如图5(a)所示,示波器上显示结果如图5(b)所示,调节系统界面上的频率和幅度,示波器上的图形也随之变化。为了观察声卡的音频输出特性,输入选择4kHz方波,在没有滤波器的情况下,示波器上显示如图5(c)所示,信号存在明显的阶梯状。连接RC低通滤波器,选R=1k,C=0.01uF,经滤波平滑后如图5(d),但响应信号的边缘存在明显的震荡,这说明信号丢失了较多的高次谐波;由傅里叶分析可知,因周期信号的频谱是离散的,频谱的谱线只出现在基频的整数倍上,当基频是4000Hz时,5次以上的谐波即超出音频范围内的信号都被丢弃,因此造成一定的谐波失真。对于谐波不很丰富的信号在基频接近10000Hz时,图形也会严重失真。所以若要需要表达出信号的细节,要尽量减小基频。
图5 实验测试结果
4 结束语
虚拟技术的优点在于开发者不需要直接操作硬件,有效地降低了程序开发的复杂性,减小了程序开发的周期。实验中利用了Matlab强大的数据处理能力简化了波形数据的产生过程,实现了一些特殊波形的输出。但要输出任意的波形,显然声卡工作的精度和速度略显不足,特别是表现一些阶跃性的信号,失真较严重,这时建议使用专用的数据采集卡。
[1]清华大学电子学教研组.模拟电子技术基础简明教程[M].北京:高等教育出版社,1990
[2]刘君华,贾惠芹,丁晖,等.虚拟仪器图形化语言Labview教程[M].陕西:西安电子科技大学出版社,2003
[3]刘静宜,丁晓亮,黄瑜.基于Labview平台的任意波形发生器计算机控制[J].国外电子测量技术,2004,6:33~34
[4]潘亚琼,李斌.基于PC机声卡的过程类复杂信号发生器[J].自动化仪表,2005,26(9):14~16
[5]王俊国,王永骥,万淑芸.Matlab图形用户界面环境下的实时控制系统[J].仪表技术与传感器,2004,9:27~29
[6]郑君里,应启衍,杨为理.信号与系统[M].北京:高等教育出版社,2005
Abstract: A method, with virtual instrument technique, realizing the sound card to generate special waveforms based on Matlab is introduced. According to its data source in hand-drawn waveform graph or mathematic plots, the sound card generates waveforms in audio range by controlling the A/D of sound card with Matlab DAQ.
Key words: virtual instrument; special waveform; sound card; Matlab
Using sound card to generate special waveform on Matlab
Zhang Guangcheng, Chen Juan, Lu Xiaodong
Zhejiang ocean university, Zhoushan, 316000, China
2010-11-08
张光成,在读本科生。通讯作者:鲁晓东,硕士,实验师。