引言
航行数据记录仪(Voyage Data Recorder,VDR)被称为“船舶黑匣子”,音频数据采集是VDR核心功能之一,驾驶室声音和通信声音作为事故调查及判定的重要依据,是VDR必须记录的数据项[1]。
本系统将音频数据采集、编码、打包处理和传输功能分离,使用独立的可加载OggVorbis开源算法的VS1053B音频编码模块、STM32F103高性能主控模块和内置TP/IP协议栈的W5300以太网通信模块,设计出了一款具备以太网接口的低功耗、低成本、高性能、高度灵活、可裁剪的分布式声音采集卡系统。
1 系统设计
声音采集卡系统结构框图如图1所示,系统硬件主要包括麦克风输入信号调理电路、VS1053B音频编码模块、STM32F103主控模块和W5300以太网通信模块等重要模块。
图1 声音采集卡系统结构框图
国际标准要求VDR记录的声音带宽为150~6 000 Hz,VS1053B音频Codec芯片声音信号输入带宽范围为20~20 000 Hz,满足VDR对声音带宽的要求。
VS1053B高质量立体声录音码流约为135 kbps,包含配置和控制命令总码流不超过500 kbps,W5300以太网通讯芯片可靠通信速率约为50 Mbps,完全满足声音采集卡数据传输的要求。
为了提高信号传输质量,VDR设备中的麦克风(MicroPhone,MIC)模拟音频信号多采用差分方式传输。声音采集卡音频调理电路负责将输入的麦克风差分音频信号转换为LINE信号,VS1053B具有左右声道两路LINE信号输入接口,因此每个芯片可以采集两路麦克风信号。
VS1053B采用SPI总线与STM32F103主控模块通信,接收STM32F103主控模块发送的配置和命令数据,并向该模块发送经过OggVorbis编码后的声音数据。
STM32F103主控模块通过可配置的静态存储器(Flexible Static Memory Controller,FMSC)接口控制W5300芯片完成以太网数据的发送和接收,主要包括向上位机发送编码后的音频码流,并接收和响应上位机发送的控制命令,从而完成与上位机的交互功能。
2 系统硬件设计
2.1 VS1053B音频编码模块
声音采集卡音频编码模块的核心部件为VS1053B芯片,VS1053B是芬兰VLSI公司生产的一款单芯片音频编解码器,支持用户加载的OggVorbis音频编码算法,其包含一个高性能、低功耗的DSP处理器核VS_DSP16 KB的指令RAM,0.5 KB的数据RAM,串行的控制和数据输入/输出接口[2]。
VS1053B具有一个高性能的可变采样率立体声ADC,可以将输入的MIC或LINE信号量化为数字音频信号,并通过内嵌的VS_DSP内核运行编码算法将数字音频信号编码为OggVorbis格式的音频码流,VS1053B内部结构示意图如图2所示。
图2 VS1053B内部结构图
VS1053B通过SPI总线与主控芯片STM32F103通信,xCS引脚使能串行命令接口(SCI)接收主控芯片的控制命令,xDCS引脚使能串行数据接口(SDI)向主控芯片发送编码后的音频码流。DREQ引脚高电平指示VS1053B可以接收新的命令,否则主控芯片不应向VS1053B发送新命令。声音采集卡的音频编码模块电路原理图如图3所示。
图3 音频编码模块电路原理图
2.2 STM32F103主控模块实现
STM32F103主控模块是声音采集卡系统的核心控制部分,控制着系统各个子模块之间的协调运行,它的稳定性和可靠性直接关系整个系统能否正常运行。
STM32F103是ST公司推出的基于CortexM3内核的低功耗、高性能ARM芯片,工作电压范围是2.0~3.6 V。
STM32F103主控模块外围电路主要由电源电路、晶振电路、复位及看门狗电路等组成。电源电路主要由AIC10843.3和LM11171.8电源芯片构成,AIC10843.3为系统提供不小于5 A的DC 3.3 V电源,LM11171.8可为系统提供不小于800 mA的DC 1.8 V电源,保证系统电源稳定可靠。MAX718S芯片具有看门狗复位、低电压复位和手动复位功能,不仅可以保证系统上电复位的可靠性,而且在系统死机时可以重新启动系统。
2.3 W5300网络通信模块
W5300是一款0.18 μm CMOS工艺的单芯片器件,内部集成10/100M以太网控制器、MAC和TCP/IP协议栈,传输速度可以达到50 Mbps,完全可以满足声音采集卡与上位机的网络通信[4]。
W5300通过并行数据地址总线与STM32F103相连,包括DATA0~15、ADDR0~9、NOE、NEW和RESET信号。W5300片选信号CS与STM32F103的FSMCNE4相连,使W5300映射到STM32F103芯片的地址范围为0x6C000000~0x6C0003FF。W5300共用系统硬件复位信号,也可以通过置位MR寄存器第7位执行软件复位。系统采用默认配置的内部PHY模式,即TEST_MODE[3:0]引脚和BITl6EN引脚均悬空,采用16位数据总线传输,直接访问模式,具体接口电路如图4所示。
图4 W5300与STM32F103接口简化电路图
3 系统软件设计
3.1 主程序
声音采集卡采用中断处理声音采集、编码和网络发送等工作,主程序较为简单,系统上电后先初始化STM32F103主控芯片内部时钟、定时器和各外设接口,包括与VS1053B通信的SPI接口和与W5300网络芯片通信的FMSC接口,然后分别初始化VS1053B和W5300,初始化完成后启动录音。主程序循环读取网络端口数据并及时处理上位机发送的各种命令,主程序如下:
int main(void){
STM32F103_init();/*初始化STM32F103主控芯片*/
VS1053B_init();/*初始化VS1053B音频芯片*/
Delayms(10);/*W5300 时钟稳定需要10 ms*/
W5300_init();/*初始化W5300网络芯片*/
VS1053b_OGGRecordStart(); /*启动录音*/
while(1){
loopback_tcpser(); /*循环读取网络端口数据*/
if(IfRecMICtestCmd())/*收到上位机的麦克风自检指令*/
MICTest();
if(IfRecAdjustCmd()) /*收到上位机的校时指令*/
Time_Adjust();
}
}
3.2 声音采集部分
声音采集部分主要由VS1053B芯片加载OggVorbis编码算法完成,既符合VDR音频采集高压缩率、低失真的特点,又增强了扩展及升级的灵活性。
3.2.1 OggVorbis音频编码算法特点和优势
OggVorbis音频压缩算法是一种源码完全开放的,具有较大编码灵活性的通用感知音频标准。Ogg代表的是开发一种有损音频压缩技术的计划,该计划有意设计一个完全开放源码的多媒体系统,而OggVorbis是这种音频压缩算法的名称,它是Ogg计划的一部分[5]。
OggVorbis音频压缩算法在VDR声音采集应用中具有以下优势:
① 开源算法不断改良和完善,文件格式固定,算法结构向前兼容,制造商可以通过不断更新算法提高录音音质,并且保持对声音回放软件的兼容性;
② OggVorbis音频编码算法在低比特率下有很好的表现力,在音质相同的情况下,OggVorbis拥有比MP3更好的压缩率,能保证VDR记录更长时间的音频信息;
③ 支持多通道(≤255)音频信号编解码,满足声音采集卡多通道录音要求;
④ OggVorbis格式完全免费、开放源码且没有专利限制,外贸不受专利困扰。
3.2.2 VS1053B初始化
VS1053B初始化关键步骤如下:
① 设置VS1053B的内部时钟、数据格式和中断模式;
② 关闭所有用户程序,清除除了通信总线之外的所有中断;
③ 将OggVorbis算法代码装载至VS1053B的内置SRAM,配置为高品质立体声录音模式;
④ 配置VS1053B的声音模拟接口输入特性;
⑤ 配置VS1053B的录音参数寄存器,设置AGC(自动增益)模式和16 Hz;
⑥ 启动内置的OggVorbis音频编码进程,开始录音;
⑦ 等待读取码流数据。
3.2.3 码流处理
码流处理步骤如下:
① 在VS0153B录音过程中,定时读取VS1053B的数据缓冲区,获取编码后的声音数据;
② 设置定时器,将每分钟的音频码流数据截取打包为一个文件,并通过以太网转发。
为保证每个文件可独立播放,需要在每个声音数据包前加入Vorbis包头,包头包括页捕获模式、码流版本、头类型标识、媒体编码相关参数、码流序列号、页顺序号、页校验码、页段数、段值表等9个字段,共28字节,声音数据采集发送流程如图5所示。
图5 声音数据采集发送流程图
3.3 网络通信部分
声音采集卡由W5300完成声音数据和控制命令的网络传输,W5300内置了TCP/IP协议,所以声音采集卡软件不需要操作系统的支持,不仅简化了软件设计,而且降低了对主控芯片处理能力和资源的要求。
3.3.1 W5300初始化
W5300初始化主要有3个步骤:
① 设置STM32F103主控芯片数据总线宽度,主机接口模式和时序;
② 设置网络参数,包括MAC地址、网关、子网掩码和IP地址;
③ 为Socket端口分配TX/RX存储器空间,不使用的端口存储空间可以分配为0。
3.3.2 网络管理
W5300初始化完成后,各Socket端口就可以配置为TCP或UDP模式收发数据,W5300支持8个Socket独立或同时使用。声音采集卡使用TCP模式与上位机通信,本地端口号配置为6060,上位机端口号配置为6070。TCP是ISO网络参考模型中一种面向连接的传输层协议,能确保数据传输的准确可靠。
声音采集卡采用定时器中断方式定时检测各Socket端口连接状态,当出现数据发送超时、上位机关机或网络连接断开等异常时,重启客户端并尝试重新建立TCP连接,保证声音码流的可靠传输,网络管理流程图如图6所示。
图6 网络管理流程图
4 试验与结论
试验表明,该系统运行稳定可靠,可以连续采集2个麦克风的音频信号,模拟音频信号经过OggVorbis算法编码后每个麦克风声音数据码流约为75 kbps。上位机接收软件根据码流中包含的声道号标识分别将每个麦克风码流数据存储为独立的音频文件。该文件经过千千静听、暴风影音等多款软件播放,人声清晰可辨,能较好地还原现场的各种背景声音,符合VDR对舱室背景声音和通话声音记录的要求。
结语
基于VS1053B、STM32F103和W5300芯片的声音采集卡系统不仅能够完成多通道声音的采集、编码和传输,还可以通过网络接收上位机命令,完成对声音采集卡的配置、监测和管理,满足了未来VDR音频数据网络化、分布式采集的要求。由于选用的均是低电压、低功耗的嵌入式芯片,声音采集卡功耗仅为9 W左右,相比采用工业计算机的声音采集方案,功耗降低了80%左右,减少了对电源的消耗,也有利于VDR系统的小型化设计。