基于麦克风阵列声源定位的硬件系统设计
扫描二维码
随时随地手机看文章
摘要:给出一种基于TMS320C6713的麦克风阵列声源定位系统。以DSP作为系统的核心控制器,通过TMS320C6713的 McASP接口与A/D芯片PCM4204连接,克服了单片机系统运算能力有限,数据处理速度慢的缺点,能更好地满足麦克风阵列声源定位的要求。介绍了系统的硬件设计方案和软件设计思想,实践证明了系统具有实时高速、精度高及可靠性好的优点。
关键词:麦克风阵列;声源定位;多通道音频串口;寄存器配置
0 引言
麦克风阵列的声源定位是指用麦克风拾取声音信号,通过对麦克风阵列的各路输出信号进行分析和处理,得到一个或者多个声源的位置信息。如果声源能够持续地输出声音,通过对麦克风阵列接收到的信号进行实时分析和处理,可以实现对移动声源的定位和跟踪。目前,基于麦克风阵列的声源定位广泛用于具有嘈杂背景的语音通信环境,如会场、多媒体教室、车载电话等,以提高通信质量。本文主要讨论了麦克风阵列声源定位的硬件系统设计,并对声源定位的软件系统设计做了一些考虑。该系统主要用于汽车笛声定位系统,通过麦克风阵列采集笛声信号,并根据定位算法实现汽车的定位。
1 硬件系统设计
硬件系统主要包括多个麦克风构成的阵列、信号调理单元、数据采集单元、算法处理单元、逻辑控制单元,如图1所示。
1.1 麦克风阵列
该设计中麦克风阵列选用声望公司的MPA416传声器来实现。MPA416传声器的灵敏度较高,可以达到50 mV/Pa;拥有低成本、低噪声;频率响应范围为20 Hz~20 kHz;当其用于阵列时,MPA416的相位差能控制在3°~5°之内,能满足系统对于精确度和稳定性的要求。由于均匀线列阵的结构最简单,处理方便,故系统采用一维线性麦克风阵列,其阵列间距取10 cm。
1.2 信号调理单元
由于麦克风所拾取的声音信号太小,易受环境噪声的影响,因此很有必要对声音信号进行预处理,通过对信号调理单元的处理,使之能够满足系统的要求。该系统采取两级放大电路,前级放大为低噪声放大,主要完成把麦克风信号由单端变为差分,故选用TI公司的低噪声放大器OPA1632,次级放大电路为线性放大电路。
1.3 数据处理单元
该设计中数据处理单元选择TI公司性价比较高的浮点DSP芯片TMS320C6713(以下简称C6713)作为系统算法处理的核心。它的内部采用改进的哈佛结构;具有256 KB片上存储空间;丰富的外设,包括2个多通道缓冲串口(McBSP)、2个多通道音频串口(McASP)、SPI和I2C等;增强的直接存储器访问(EDMA)控制器,可控制16个独立通道,完成不受CPU干预的数据传输;32 b的外部存储器接口(EMIF),能与SRAM,ERPOM,FLASH,SBSRAM和SDRAM无缝接。因此,C6713能满足系统对于一些复杂定位算法的快速处理。
1.4 数据采集单元
麦克风阵列拾取声音信号,经过前端调理单元的处理,使声音信号能达到A/D芯片的要求,从而进行模/数转换,完成数据的采样。
该设计中A/D转换器件选用TI公司的PCM4204,该芯片是24位、高精度,采样速率达到216 kHz的4通道音频模/数转换器件。该芯片具有音频串口和DSD数据口,其中音频串口能与DSP方便的连接,采样数据能迅速地被DSP读取。
TMS320C6713的McASP与ADC外设交换数据主要有2种方式:利用CPU,通过串口与外设通信,这种方式的传输速度慢,数据交换量小,且占用 CPU的时钟周期。为了实现高速的数据采集,该系统采用另外一种方式,利用EDMA。该方式能充分利用TMS320C6713的硬件结构特点,其ED- MA通道的独立数据和独立地址总线,不仅使数据传输速度快,传输量大,且不占用CPU时钟周期,而且使数据传输和DSP命令执行同步进行,大大提高了整个系统的运行速度。[!--empirenews.page--]
1.4.1 与DSP芯片的连接
通过TMS320C6713的多通道音频串口McASP1实现了与PCM4204:的连接,其连接示意图如图2所示。
在图2中,PCM4204的LRCK与C6713的AFSR1相连。作为帧同步信号,BCK是位时钟信号,与ACLKRl相连;PCM4204的两个数据输出管脚SDO-UT1和SDOUT2分别与DSP中McASP1的AXR[4]和AXR[5]相连,当采用I2S数据格式时,SDOUT1输出的是 1,2通道的数据,SDOUT2输出的是3,4通道的数据。PCM4204产生LRCK和BCK信号,以驱动DSP的AFSRl和ACLKRl。
1.4.2 采样芯片工作模式的设定
为了使系统能够正常工作,需要对PCM4204进行设置。通过芯片引脚S/M,FMT2,FMT1,FMT0,FS2,FS1和FSO可以实现配置。具体如下:
(1)s/M=0,使PCM4204工作在主模式下;
(2)FMT2=O,FMT1=0,FMTO=1,选取音频数据格式为24 b的I2S,其格式如图3所示;
(3)FS2=1,FS1=0,FS0=1,选取采样速率为96 kHz;
2 接口程序的编写
2.1 初始化
为了使DSP的McASPl口能够接收数据,需要编写相应的程序。由于是采用EDMA来进行数据传输的,所以首先要对McASP,EDMA进行初始化,即按照电路系统硬件接口的设计要求设置McASPl的相关寄存器,使其工作在EDMA模式。
(1)EDMA接收配置。分别对EDMA的opt,src,cnt,dst,idx,及rld寄存器进行设置,并通过opt寄存器设置数据长度为32 b,源数据和目的数据为一维方式,源地址固定,目的地址采用索引,启用帧同步等,并将源地址和目的地址分别写入src,dst寄存器。cnt寄存器主要是用来配置帧计数和单元计数。由于采用I2S的数据格式,所以一帧数据只包含2个单元数据。通过配置idex及rld寄存器,目的数据可以按照设
定的索引方式存储。
(2)McASPl的配置。分别对McASPl的PFUNC,PDIR,SRCTL,RFMT,AFSRCTL,ACLKRCTL及AHCLKRCTL等寄存器进行设置。注意几点:
①接收帧同步信号的宽度为32 b,由外部信号提供,即PCM4204的LRCK;
②接收位时钟信号也由外部信号提供,即PCM4204的BCK;
③串行化器使用AXR[4]和AXR[5]。[!--empirenews.page--]
2.2 接口程序
首先,需要打开McASP的1通道,利用MCASP_open函数可打开McASP的1通道,即 DEC6713_AIC23_DATAHANDLE=MCASP_open(MCASP_DEVl,MCASP_OPEN_RESET);然后通过使用 SetupEdma函数对EDMA如何进行数据的存放和连续工作进行定义,这里采用“乒乓缓存”的方式,根据idex和rld两个寄存器完成数据存储,具体存放如表1、表2所示:
接下来需要使McASP通道正确的工作,定义DEC6713_Mcasp_Setup函数。该函数的程序如下:
最后,需要定义函数SetInterruptsEdma(),通过建立中断向量表,使整个接口程序工作。
3 软件设计思想
系统可以把应用程序固化在FLAsH存储器内,每次上电时,DSP首先将程序从FALSH下载到片内的RAM,由于DSP可以零等待访问片内RAM,程序加载到片内RAM执行时,可以保证DSP全速运行,同时增强了系统的可靠性。
系统选取声源定位算法的依据是运算量较低或者利于硬件实现,能用硬件的思想将算法实现。基于声达时间差(TDoA)的定位技术是先利用 GCC,LMS,EVD等算法进行声达时间差的估计,再结合已知的麦克风阵列的空间位置定出声源的位置。它不受阵列结构的限制且计算量小,因而实际的麦克风阵列系统大都采用该技术。
4 结语
本文介绍了基于麦克风阵列声源定位系统的硬件设计和软件编程思想。高性能DSP器件TMS320C6713的使用,使系统对于算法的处理时间更快,尤其是多通道音频串口McASP的应用,使声音数据进出芯片变得更加流畅,使其核心处理单元的运算能力得以发挥,从而能迅速地定位,以满足多方面应用的需求。