基于声卡的双通道实时信号采集处理系统设计

2013-09-19 10:29韩红帮解永刚张恒云杨亚彪李海雁
电子设计工程 2013年2期
关键词:声卡双路采集卡

韩红帮,解永刚,张恒云,杨亚彪,李海雁

(1.昆明学院 现代教育技术中心,云南 昆明 650214;2.昆明学院 资产管理与设备处,云南 昆明 650214;3.昆明学院 化学科学与技术系,云南 昆明 650214)

在高校教学和科研实践工作中,常常需要对一些信号进行采集分析处理,但由于经费不足等原因许多实验室无相应仪器设备,或者存在设备数量较少,功能单一等问题,不能很好地满足教学实验和科研实践要求。要实现信号采集,就需要数据采集卡的支持,而市场上数据采集卡价格比较昂贵,不可能在实验室中普遍配置使用。

目前声卡已成为多媒体计算机的一个标准配置,它是一个非常优秀的音频信号采集系统,其最高采样率可达192 kHz,量化精度可选择8比特、16比特和24比特,支持双通道模式,能够无失真采集25 kHz以下信号。在采样频率要求不高的情况下,可以利用计算机声卡作为数据采集卡,利用计算机CPU作为信号处理器,通过软件编程实现常规信号实时采集分析处理[1]。

本文设计的系统不仅能满足教学工作和科研实践要求,还能根据不同应用需求灵活方便的添加信号处理软件模块,实现采集信号的实时处理。

1 系统硬件结构

声卡一般有Mic In和Line In两个输入插孔,待采集信号可以通过这两个插孔输入到声卡。两个插口的区别是:1)MicIn接口有前置放大器,容易引入噪声且会导致信号过负荷,而LineIn接口噪声干扰小且动态特性良好;2)MicIn接口有4 kHz的前置低通滤波器,仅适合话筒信号输入,而Line In接口前置低通滤波器带宽范围为25 kHz,实用信号范围更广。声卡用作数据采集卡时一般选择Line in口为信号输入接口[2-3]。在本文系统中待采集信号分别以左右声道方式同时从Line in口输入。

2 系统软件编程技术

声卡作为数字采集卡使用,首先必须对其编程控制并连续不断的获取AD采样数据。其软件编程接口有几种可供选择,首先,声卡是一种多媒体设备,可以用MCI(Media Control Interface)命令来控制声卡,MCI提供了一组与设备无关的控制命令,是一种访问多媒体设备的高层次方法。但是该方法不够灵活,无法在录音的过程中访问内存中的采样数据,只有在录音完成后通过访问录音文件才可以得到采样数据,另外,声卡在采样过程中存取文件需要耗费时间,有可能造成采样数据的断续,显然该方法不能满足信号实时采集的要求。其次,Windows低级波形音频函数提供了对声卡最大灵活性的操作,它允许在采样过程中实时访问内存中每个采样数据,能很好地满足实时采集处理要求[4]。

2.1 双路信号实时采集实现原理

实现声卡采集数据的实时性、连续性和可靠性是软件设计的关键问题。本文软件系统中,通过直接调用Windows最底层波形音频接口函数,实现声卡的编程控制,系统中采用了多线程多缓冲技术,即声卡采集与数据处理使用不同的工作线程,同时给声卡提供多个用于承载采集数据的缓冲区,在同一时刻部分缓冲区供声卡采集线程装载数据的同时,另外已经装满数据的缓冲区供数据处理线程处理,从而使得信号采集和数据处理工作同时进行,有效保证了采集数据的连续性和信号处理的实时性[5-6],其原理框图如图1所示。

图1 声卡实时采集原理框图Fig.1 Schematic diagram of sound card real-time collecting

2.2 声卡软件编程

Windows以动态链接库Mmsystem.dll的形式提供低级波形音频函数,用以控制声卡实现信号的正确采集,在软件编程中采用面向对象的思想,将声卡实时采集功能封装成专门的类CSoundIn,以下从代码的角度给出声卡采集模块的软件实现过程[7]。

1)设置声卡基本参数。先定义WAVEFORMATEX结构变量m_Format,设置声卡采样数据格式、采样率、采样位数、通道数以及缓冲大小。具体代码为:

缓冲区设置不能太大也不能太小,太大时信号采集的实时性受到影响,太小时采集的信号有可能来不及处理就被覆盖了,从而导致数据不连续,起不到缓冲的作用。

2)打开声卡设备,添加数据缓冲区,开始数据采集,主要代码如下:

其中 waveInOpen(&m_hRecord,WAVE_MAPPER,&m_Format,(DWORD)waveInProc, (DWORD)this, CALLBACK_FUNCTION)函数打开声卡采集线程;AddInputBufferToQueue()函数通过调 用 waveInPrepareHeader (m_hRecord,m_pHdr[i], sizeof(WAVEHDR))和 waveInAddBuffer (m_hRecord, m_pHdr[i],sizeof(WAVEHDR))函数给声卡添加多个供存储数据的缓冲区。

3)通过回调函数实时获取采集数据。从上一步的waveIn Open()函数具体参数可知,采用了回调函数的方式实时获取声卡采样数据,当声卡缓冲队列中有装满数据的缓冲区时,操作系统会自动调用回调函数waveInProc()将装满数据的缓冲区及时回调供用户线程实时分析处理,同时将提取数据后的空缓冲区重新加入到采集缓冲队列中,继续循环使用。具体代码为:

4)当采集结束的时候,关闭声卡,释放缓冲队列,正常退出声卡采集模块的工作。

3 系统实际应用

如图2所示为本文设计的软件系统对数字移动无线电(DMR)集群通信系统C4FM调制方式信号进行双通道实时采集处理的运行情况。该系统实现了双路C4FM信号的实时采集,并对采集信号的波形和频谱进行了实时显示,如图所示系统提供了最多4个显示终端8个显示通道(每个界面中可以以不同的颜色同时显示两种数据信息),其中显示终端数目和每个显示终端要显示的数据信息用户根据需要自由配置。系统对左右声道采集和处理所得数据量,信号强度等进行实时显示。信号处理模块实现了C4FM信号的实时解调以及对其承载信息的实时还原。同时,对采集到的样点数据和处理结果,可以通过软件左下角的“系统设置”按钮切换到“系统设置”属性页进行设置,系统给出了对其实时存储和网络发送的接口,方便获取信号采集数据,以更好的满足教学实验和科研实践需求。

图2 系统对双路DMR系统之C4FM信号实时采集处理Fig.2 Real-time collecting and disposal of C4FM signals from doublechannel DMR system

如图3所示为系统对双路4FSK信号进行实时采集处理的运行情况。在该应用中,系统实现了4FSK信号的实时采集、解调等处理。

图3 系统对双路4FSK调制信号实时采集处理Fig.3 Real-time collecting and disposal of double-channel 4FSK modulating signals

在该系统平台基础上,紧密结合软件编程技术,实现了多种信号的采集处理,现已完成了多个教学实验,取得了很好的效果。

4 结束语

采用声卡代替商用数据采集卡,利用Visual C++软件编程技术,设计了基于声卡的双通道实时信号采集处理系统,实现了25 kHz范围内双路信号实时采集分析以及采集数据的文件存储和网络发送等功能。充分体现了声卡作为数据采集卡具有价格低廉、系统灵活的优越性,其性能稳定,界面友好,接口方便,有效地解决了实验室采集设备不足、专用数据采集卡价格昂贵等问题,具有广泛的推广应用价值。

[1]刘世刚,刘锋.基于声卡的QPSK信号的实时软解调[J].今日电子,2005(6):58-60.

LIU Shi-gang,LIU Feng.Real time soft demodulation based on sound card[J].Electronic Products,2005(6):58-60.

[2]曲喜强,刘哲.基于声卡的音频信号采集与分析系统设计[J].电子测试,2009(2):75-77.

QU Xi-qiang,LIU Zhe.Audio signal acquisition and analysis system design based on sound card[J].Electronic Test,2009(2):75-77.

[3]周爱军,马海瑞.基于声卡的LabVIEW数据采集与分析系统设计[J].微计算机信息,2005,21(25):108-110.

ZHOU Ai-jun,MA Hai-rui.Sound card based data acquisition and analysis system in LabVlEW[J].Control&Automation,2005,21(25):108-110.

[4]赵正敏,陈良海,崔树青,等.双通道声卡构成多通道数据采集系统[J].电声技术,2002(11):28-30.

ZHAO Zheng-min,CHEN Liang-hai,CUI Shu-qing,et al.Double-channel sound card constitutes multi-channel data collecting system[J].Audio Engineering,2002(11):28-30.

[5]张兵.基于多缓冲区实时音频采集和传输实现[J].计算机工程,2006,32(12):272-273.

ZHANG Bing.Real-time audio collection and transmission implementationbasedonmulti-buffer[J].ComputerEngineering,2006,32(12):272-273.

[6]董华,易克初,田斌.一种基于声卡的数据采集系统[J].山西电子技术,2006(1):3-4.

DONG Hua,YI Ke-chu,TIAN Bin.A data acquisition system based on sound card[J].SHANXI Electronic Technology,2006(1):3-4.

[7]叶向阳,黄国策,余侃民,等.计算机声卡在实时采样监控系统中的开发应用[J].微计算机应用,2006,27(5):582-584.

YE Xiang-yang,HUANG Guo-ce,YU Kan-min,et al.The application of soundcard in the real-time monitoring system[J].Microcomputer Applications,2006,27(5):582-584.

猜你喜欢
声卡双路采集卡
高精度AD采集卡性能测试及评价方法研究
血液采集卡存储装置的设计与应用
一种双路隔离输出反激变换器的设计
调度集中系统局间数据的双路冗余传输方案
面向数控机床的多通道传感数据采集卡设计
并行高速采样在地震物理模拟采集中的应用
浪潮国内首推6核Nehalem服务器
提升笔记本电脑音质
聊天室背景放音乐 为啥我的本本就不行?
风雨二十五载PC声卡春秋录