引言
随着数字化网络技术的迅速发展,为了进一步提高煤矿安全生产及现代化管理水平,基于工业以太网+现场总线的数字化自动控制网络结构的语音广播系统,正在矿用语音广播领域受到越来越多的关注和重视。目前,在国内矿用CAN总线语音广播系统产品中,很多公司的产品都选择了基于话音的压缩编码技术(AMBE、CVSD等),把话音压缩成很低的速率进行传输并解码还原播放。这类低压缩率的编码技术对于话音有比较好的还原播放效果,但是对于质量较高的音频信号(MP3文件、WAV文件等),在解压后的播放效果非常不理想,从而只能采用上位机点播的方式进行本地播放,终端设备上必须安装大容量的存储设备,存储内容在井下的更新和修改很不方便。另一种基于以太网技术的语音广播系统为了实现远传输距离,需要在井下铺设光纤,成本非常高,加上井下工作环境复杂危险,光纤一旦折断损坏,在井下现场进行熔接修理很不方便,维护成本很高。
相对于国内外市场现有的基于以太网的语音广播系统,本文所介绍的基于CAN总线的语音广播对讲系统具有造价成本低、安装维护方便的优势;而相对于国内市场上的CAN总线型广播系统而言,增加了远距离、低带宽条件下高品质音频信号实时播放的功能,为煤矿井下数字化语音广播领域提供了一个低成本、低功耗、多功能的新型解决方案。
1 系统总体构架
本系统的总体构架如图1所示。该语音系统主要由井下语音终端节点、CAN转TCP/IP网关、地面调度上位机、通信电缆等组成。地面可以通过调度上位机对井下各个语音终端进行操作,实现话音和高质量音频文件以点播方式、组呼方式和全呼方式进行传输,井下各个语音终端节点可以实现话音的组呼或者调度呼叫。同时,调度上位机传输各种控制命令对各个节点进行远程控制,实现巡检、监听、联机等功能。
本系统中CAN总线的传输速率为20 khps,传输距离不小于2 km,CAN总线终端设备通过一对双绞线即可实现连接通信,在井下的安装布线方便,维护成本很低。在该系统中,选用了Cortex-M3内核的微处理器LPC1768,最高速率可以达到100MHz,足以满足系统的各项功能需要。
为了实现CAN总线的远距离传输,必须以牺牲传输波特率为前提。在该系统中,选择和实现一种低码速、高音质的语音压缩编码是整个系统的关键。共轭代数码激励线性预测(CS-ACELP)的8 kb/s语音编码G.729方法延迟小,可以提供与32 kb/s的ADPCM相同的语音质量。其音质是同档次码速率中最优的,而且在噪声较大的环境中也会有较好的语音质量,广泛地应用于多种数字语音通信领域。
在嵌入式平台上实现G.729压缩编码算法是该项目开发中的难点,在本系统中选用了一种单芯片的解决方案,利用一款多类别语音编解码芯片CMX7261,配合Cortex-M3内核的嵌入式软硬件平台实现了语音信号的G.729A压缩编码。
2 语音终端硬件设计
2.1 终端硬件总体设计
终端硬件总体设计示意图如图2所示。模拟语音通过麦克风输入,经过音频放大芯片MC34119进行放大,然后送到语音编解码芯片CMX72 61进行A/D转换;数据压缩打包后通过SPI接口传送给微处理器LPC1768,微处理器通过CAN收发器CTM8250将数据传送到CAN总线上;总线上的语音数据流通过CAN收发器传送给微处理器,通过微处理器的SPI接口传送给CMX7261,实现编码数据的解码;解码后的数据通过CMX7261内部的D/A转换器转换成模拟语音,经音频功放芯片TDA2822驱动喇叭播放。
2.2 语音处理模块设计
CMX7261是英国CML公司研发的一种多类别语音编解码芯片,支持多种语音编解码标准。它能将模拟语音编码成为PCM(线性、u率、A率)CVSD或者G.729A的数据格式,也能把PCM、CVSD和G.729A的语音数据流解码成模拟语音输出,并且支持PCM、CVSD和G.729A协议之间的相互转换。CMX7261由3.3 V电源供电,提供可选的低功耗模式。
图3为CMX7261与微处理器LPC7168的接口电路图。CMX7261与LPC1768通过C-BUS(SPI模拟)接口进行数据的传输。设置CMX7261的相关功能寄存器,产生压缩速率为8kb/s的G.729A语音的编码数据流,在CAN总线上传输,传输速率选择15kb/s,终端节点之间的传输距离2000m。由于G.729A的编解码标准对于质量较高的语音支持效果较好,所以采用CMX7261语音芯片能够低成本地实现话音和高质量语音的窄带通信。
2.3 CAN总线电路设计
在本系统中选用了带隔离的CAN收发器模块CTM8250。CTM8250是一款带隔离的通用CAN收发器模块,该模块内部集成了所有必需的CAN隔离及CAN收发器件,这些都被集成在不到3 cm2的模块上。模块的主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平,并且具有DC 2500 V的隔离功能。
3 软件设计
3.1 终端软件设计
对于语音传输系统而言,实时性是一个重要的评价指标。在该语音终端的软件设计中,引入了事件池的思想。事件池在具体软件实现上是一个封装好的结构体数组,数组的大小为事件池中能同时容纳的事件的个数,即在同一时刻,系统中允许最多发生事件的个数。
本系统软件设计中,响应外中断和功能函数的方式有两种:
①依据外部中断的类型或者功能函数的返回值,在结构体数组中依据事件参数初始化一个结构体变量,即在事件池中产生了一个待处理的事件。
②在结构体数组(即事件池)中,依据事件参数遍历查询相应的结构体,即依据事件参数遍历查询相应事件是否发生,并调用相应的功能函数;依据事件参数对该结构体进行处理,即对发生的事件进行处理;一个事件(结构体)处理成功结束后,重新初始化结构体中的事件参数,即把处理完的事件在事件池中销毁,如果事件处理失败,则不改变事件参数,等待下一轮的处理。
这样,微处理器在循环不断地处理事件(结构体)时,其实就是对系统中实时发生的各种情况进行快速响应,把封装好的结构体作为系统中各类事件的数学模型。
图4为系统终端进行语音数据流收发和编解码的软件事件池示意图。在本系统终端的软件设计中,按键扫描模块、CAN总线收发模块、语音编解码芯片CMX7261与LPC1768进行SPI数据通信等各种外部触发都采用了中断方式,减少了处理器的等待时间。在具体的软件设计上,在CAN总线的收发控制中设定了两级缓存,每级缓存都有对应的PUSH和POP两个变量来实时地作为收发缓存填充的标志,语音数据流在收发过程中做到了非阻塞,提高了语音数据流的传输效率和语音编解码效率。
当发生某一种特定的条件后,终端处理器并不是立马去执行相应的操作程序,而是产生相应的事件,初始化事件参数,放入软件事件池中。语音终端的软件设计由事件池作为系统软件的协调者,简化了软件的开发流程,使得软件开发层次清晰,效率高。
3.2CAN总线应用层协议设计
CAN总线的底层硬件工作于OSI的数据链路层和物理层,CAN总线网络通信协议仅解决了数据发送、接收、错误处理等底层硬件数据传输问题,对于应用层数据并没有规定相应的解析协议,应用层协议需要开发人员自定义,主要应考虑以下三个方面:数据帧格式确定、总线资源的分配、发送接收数据帧的分配。
该系统中,CAN应用层协议需要由开发人员进行设之间进行安全稳定通信的关键。所以,CAN总线技术,特别是CAN总线应用层协议是该系统设计中的一个关键点和难点。现在国内外存在一些现有的CAN总线应用层协议标准(CANopen、CANbus),本系统以这些应用层协议标准作为参考,结合本系统的功能设计出适用于该系统的CAN总线应用层通信协议。
本系统在CAN应用层协议的设计中,对于单个终端节点而言,在收到CAN总线语音数据的条件下(有CAN总线中断)没有发送语音的权利,即接收的优先级比发送的优先级高,这样就很好地避免了一条总线上语音数据流的冲突问题。在同一时间,整条CAN总线上最多只能有一对节点在进行语音数据的传输。
地面调度上位机在整个系统中是处于优先级最高的地位,当井下终端节点在进行广播通话的过程中接收有调度上位机的语音数据后,发送终端应该及时作出判断,关闭发送功能,转为接收调度上位机的语音数据。
在CAN总线的各个终端之间在进行数据发送接收工作时,调度上位机的控制信息仍然可以在总线中进行传输,不影响终端的语音传输的功能。终端节点在接收到调度上位机的控制信息后,应在空闲时进行相应的操作和回应。
结语
本文给出了基于G.729A语音编解码技术的煤矿井下语音传输系统构架、终端的软硬件设计方案和CAN总线应用层协议设计方案,用事件池的软件没计思路实现了G.729A压缩编码的语音数据流在井下CAN总线的实时安全传输,实现了话音和高质量语音信号在窄带宽的CAN总线上实时传输的功能。本系统的方案新颖,成本低,实现简单,对于煤矿井下语音传输系统的设计和开发有很好的借鉴意义。