基于嵌入式处理器的VoIP双模语音网关设计
扫描二维码
随时随地手机看文章
VoIP双模网关是一种同时连接VoIP网络和PSTN网络并能在两者之间互相转换的用户端网关设备。双模网关能够使用VoIP网络节省大量通话成本,还能够在VoIP网络不可用(断电或路由不可达)时使用PSTN网络保障电话线路永远畅通,而且使用双模网关无需对PBX交换机做任何改变,用户还能够自由选择或由网关自动选择使用VoIP网络还是PSTN网络,具备很好的实用性和灵活性。
1 VoIP双模网关的工作原理
网关在VoIP网络中主要起协议转换、控制及关守作用,例如呼叫控制和呼叫管理等。双模网关在普通VoIP网关的基础上增加了VoIP和PSTN之间的转换。双模网关系统从功能上可分为双模转换模块、FXS接口电路模块、语音处理模块和软件控制模块,其系统框图如图1所示。各主要模块功能描述如下:
(1)双模转换模块
双模转换模块主要包括FXO接口电路,由CODEC和数据处理阵列DAA(Data Access Arrangement)组成。其中的CODEC和FXS电路中的相同;DAA仿真了一部话机,通过PSTN的环路闭合去除高压直流分量,只让PSTN线上的模拟交流信号通过。
(2)FXS接口电路模块
外部交换站接口FXS(Foreign Exchange Station):电路直接和模拟话机连接,提供拨号音、馈电、铃流电压,并能够检测话机的摘挂机和环路闭合,完成模拟信号和数字信号之间的相互转换。
外部交换局接口FXO(Foreign Exchange Office):在传统的PSTN电话连接中,电话中央局端交换机提供馈电和铃流,电话本身完成Tip/Ring电路来请求服务或应答PSTN上的呼叫。
明白了FXS和FXO的原理也就理解了本网关设计的理念,就是将网关模拟成一个交换机。其内部的FXS 电路将模拟电话局端交换的功能,为电话提供电源并进行振铃,同时检测环路电流。而FXO 电路则模拟电话功能,提供环路关闭功能并检测来话振铃。
(3)语音处理模块
网关的语音处理模块负责对PCM数字语音信号进行压缩和解压缩。压缩算法的标准包括G.711、G.723.1和G.729等。不同的算法压缩比不相同,占用的带宽也不同。压缩算法能够用硬件DSP实现,也能够用纯软件实现[1]。
(4)软件控制摸块
软件控制模块实现网关的协议栈处理和路由处理等功能。协议栈负责将压缩后的数据流进行封装,加上IP协议包头,形成可在VoIP网络中传输的IP数据包。现在VoIP的协议栈主要基于H.323和SIP两种标准。协议栈将数据流打成IP数据包后,选择适当路由经过以太网接口发送到VoIP网络中。接收端网关接收到IP数据包后,将数据包解压缩并将解压缩后的PCM数字信号解码,恢复原始语音信号[2]。
2 VOIP双模语音网关硬件设计
VOIP双模网关的硬件原理如图2 所示。
2.1 MCU
本网关设计的核心采用IP2022处理器,它不但要完成各部件的协同工作,还要做大量的计算处理(例如DSP处理后的编码数据打包通过网络传输)还要将网络传来的语音数据解包后经解码处理送到话机。
IP2022是美国UBICOM推出的一颗功能强大的网络通信处理器,采用RISC结构,带有片上Flash程序存储器,具有在线和离线编程调试功能及单字节时钟周期精简指令集,用4阶段并行流水线方式执行指令,有极高的代码效率和指令运行速度,速度可达120 MIPS。其内部已集成了Flash/RAM、模拟比较器、定时器等多种功能部件,可以在通用I/O口上实现USB、SPI等各种接口。与SX系列不同,IP2022能实现物理层接口及多种网络协议[3],这主要是因为它内含2个全双工串化器/解串器(Ser/Des)和4个线性反馈移位寄存器(LFSR)。IP2022以软件模块(ipModules)形式实现外设通信和控制功能,比传统硬件具有更大的系统设计灵活性。该软件模块加上缓冲器管理技术所编写的代码,其大小只是用Linux实现的20%。IP2022还提供有TCP/IP网络协议栈,并具有一系列完整的端到端连通方案所必需的附加软件。核心SDK软件包便于开发者用IP2022网络处理器设计嵌入式Internet应用。它包含了很多通用连接应用软件,如网络服务器、以太网、文件管理及Flash更新。高度集成的模块及高效设计使ipModules代码小、功能强健、可配置、可扩展。开发者也可按照指导方案利用API库增加自己的程序模块。
2.2 DSP
DSP主要完成音频、视频的编解码工作,因此在选择DSP部分时,既要考虑满足目前的基本需求(如会话功能),又要考虑今后的需要(如视频要求、VOCIE EAMIL功能等)。所以本设计采用了VoicePump公司的VP120产品。该低功耗、高性能DSP-1xx系列混合数字信号处理器专为针对话音处理的低密度语音网关、VoIP 的IAD设备(综合接入设备)而设计[4]。它通过主处理器灵活的接口协议,每个语音通道都可以配置多种语音编码和话音应用,再加上已经固化在DPS 内部ROM上的各种应用软件,可以将传统模拟语音信息和基于包处理的系列主机作无缝连接。[!--empirenews.page--]
2.3 电话接口(FXS)
SLIC接口电路主要是模拟PSTN电压电平。检测电话挂机还是摘机,并生成高达120 V的振铃电压,本设计采用英国Silver Telecom公司的带有DC-DC变换的Ag1170 系列SLIC接口模块。其网关连接示意图如图3所示。
2.4 用户线接口(FXO)
FXO接口由两部分组成:
(1)编解码电路。这部分的功能和前面FXS中的编解码功能完全一样,也是由DSP芯片VP120提供服务,并由主CPU根据线路实际情况进行FXS和FXO功能切换,以便判定语音信号是走互联网络还是PSTN线路;
(2)数据存取装置(DAA)。其重要作用是去除高电压直流偏置,将PSTN环路关闭,从而仅传送来自PSTN的模拟交流信号。本设计采用Clare的CPC 56XX系列产品作为DAA功能的设计。CPC 56XX系列产品号称是为工业上首创的单封装的DAA(数据存取装置),它包括一个芯片内的隔离势垒(额定均方根值1 500 V), 这种DAA还提供正常的交流和直流电话线端接、二至四线混合功能、挂机和摘机检测、呼叫人身份识别,半波和全波振铃检测电路,可支持大部分编解码器和DSP器件。适合于机顶盒和电话应用的这种芯片可取代磁变压器和各式各样的其他分立元件,从而减少占用板上空间和成本,在本网关的设计中采用的是Clare公司推出的32脚SoC封装的CPC 5622A。
3 基于SIP协议的双模网关软件设计
3.1 SIP协议栈的开发
为了设备互通、网络互连等,需要开发相应的基于应用层的SIP协议栈。目前开源(开放源代码)的SIP协议栈中比较常用的有VOCAL与OSIP,它们都是比较成熟和可商业化的SIP协议栈,其特点如表1所示。
本设计采用Libosip2进行程序开发,它是一种 GNU oSIP库,OSIP封装较好,操作简单、可读性较好,缺点是BUG较多,需调试时改进。
3.2 网关应用软件设计方案
软件部分主要由嵌入式操作系统和应用层软件组成,可完成协议栈处理、路由处理和其他控制功能,软件方案层次结构如图4所示。
应用层的软件主要由SIP协议栈处理模块、路由处理模块和DSP控制模块组成。SIP协议栈负责呼叫控制和信令、音频处理和媒体实时传输等功能。本系统采用开放源代码的OSIP协议栈作为参考,应用层上的功能模块都是基于该协议栈研发的[5]。
路由寻址模块主要负责路由寻址和路由管理,确定目的网关的IP地址,并选择最好路由将IP数据包经过IP网络传送到目的网关。DSP控制模块主要是在应用程序中根据通话流程编写相应的控制程序来控制DSP120的操作。网管模块提供了Web网管和CLI命令行界面,很容易对双模网关进行配置和维护[6]。
在SIP协议处理上直接采用OSIP所给出的函数调用,实现基本的SIP 协议功能,屏蔽了协议处理的内部细节。VP120 DSP处理器直接采用所提供的函数库,可实现对DSP 的初始化和编解码算法, 语音编解码类型包括G.723.1、G.729、G.711a和G.711u。网关软件主程序处理流程如图5所示,网关语音包数据处理流程如图6所示。
本文设计的VoIP双模语音网关,其硬件利用高性能嵌入式微处理器IP2022和专用语音处理芯片DSP120为核心构成,软件采用Libosip2程序开发及开源SIP协议栈为主,通过测试证明了其可行性。随着目前无线WiFi的流行,本方案也可以直接升级为WiFi应用,通过采用IP2K系列所配备的无线开发套件,可以开发出适合802.11 a/b/g功能的无线网关,在无线应用领域,值得参考和借鉴。