引言
IP电话是以IP网络为传输载体,实现计算机对电话、电话对电话及计算机对计算机之间进行话音通信的技术。就方便、实用而言,电话对电话为最好的一种方式。话音通过公共电话网(PSTN)后,需要经过连接网关(CG)、话音网关(VG)分别与No.7信令系统(SS7)网和IP网连接。其中CG完成IP协议(如H.323和SIP)和PSTN协议(如ISUP、PRI)之间的互联;SS7网充当其中介物;VG则完成时分复用(TDM)信号与TP分组之间的转换;IP路由器(包括IP边缘路由器和IP中心路由器)主要用来进行路由选择。其中,话音网关是通过Internet提供phonetophone通信的关键设备,是Internet和PSIN/ISDN/PBX网络之间的接口设备。电话进入Internet前是模拟信号,不能直接在Internet中传输,因此必须经过话音网关转换,将模拟信号转换成数字信号;然后压缩、打包,最终转变成适合Internet传输的IP报文数据。在接收端,话音网关完成逆过程。
该话音网关系统以美国TI公司的客户端数字信号处理器(DSP)为核心,配置普通电话机以及电话线侧信号处理芯片,实现对语音信号的采集和输出、调制和解调、处理和存储等功能。数字语音信号通过串口转接到USB口,方便、实时地传送到PC机,由上层软件实现IP传送数据。本文主要介绍电话端和DSP端的软、硬件设计。
1 系统结构
整个系统由普通电话机、DSP、SI3016、串口转USB设备以及Flash组成,系统硬件结构框图如图1所示。图中,DSP是核心控制单元,负责与电话端和PC端的信号交换;在DSP内部采用双音多频信号检测和产生、回音相消、数据压缩和解压以及数据组包和拆包等多种语音信号处理算法。SI3016负责DSP和普通电话机之间的语音传输;Flash保存DSP所需要的程序,供DSP上电调用;JTAG是DSP的仿真接口。在PC连接端,使用一个串口转USB设备,实现TMS320C54cst的串口数据由USB传输到PC机,使得连接方便、可靠。
图1 系统硬件结构框图
2 电话端软硬件设计
话音网关系统采用TMS320C54cst和SI3016芯片。TMS320C54cst是美国TI公司最近推出的一款针对客户端信号处理的专用DSP芯片。该芯片完全兼容TI公司的C54系列DSP,内部具有通用DSP芯片常有的缓冲串口、HPI接口、定时器等片内外设,还具有和客户端相关的专用直接访问设备(DAA)单元。DAA实际上是一种电话终端数据收发模块,提供一个可编程的接口电路,该接口电路可以直接与全球的电话线连接。DAA的内部结构框图如图2所示。
图2 DAA内部结构框图
DAA由两个部分组成,DSP片内设备以及与其匹配的片外设备。DAA的片内设备是嵌入到DSP内部的SI3021模块,该模块与Silicon公司的SI3021芯片的功能完全相同。DSP和SI3021在片内通过缓冲串口2通信,它们之间的通信占用缓冲串口2,使得缓冲串口2不能再连接其他设备。通信时,DSP必须提供时钟信号到SI3021模块。为了与电话时钟同步,该时钟信号的频率只能是58.982 4 MHz或者117.964 8 MHz,SI3021模块对该时钟进行分频,得到串口通信的位同步时钟和帧同步时钟,再将这些时钟信号返回到DSP。DSP为信号的被动接收方。
DAA的片外设备选择为Silicon公司的SI3016芯片,SI3016与DSP之间只有1根信号线通过匹配阻容连接。SI3016的内部寄存器全部直接映射到DSP的内部地址,通过对DSP内部寄存器的读写控制,DAA片内设备SI3021自动将这些寄存器的值写入SI3016或者从SI3016中读出。SI3016的周边硬件电路如图3所示。
图中右下方的RING和TIP是2根电话线,通过4个二极管组成无级性电压变换,最后通过晶体管连接到SI3016的DC1引脚,提供电源到SI3016。
为了保证不受电话线侧电源的损坏,SI3016上电后保持低功耗状态。为了使能SI3016工作,必须按照以下步骤对SI3016进行初始化:
① 设置采样控制寄存器,使能采样时钟。
② 等待SI3016的锁相环电路锁定采样时钟,等待的时间介于100 μs和1 ms之间。
③ 设置SI3016的第2寄存器为00h,这将使得SI3016进入工作状态;同时使能AOUT跟踪电话,可以使用电路测试SI3016的输出。
④ 设置SI3016的其他寄存器。
正确设置后,SI3016就进入正常工作待机状态,处于检测振铃(ring detection)和摘机(off hook)状态。在待机状态(on hook),SI3016所消耗的电量很少,直接从DSP侧取电;而在摘机状态,尤其是拨号(call)状态,SI3016所消耗的电量很大,不能直接从DSP取电,SI3016就从两根电话线取电。这样,对于SI3016自身,不需要提供电源和地信号。这与一般的芯片不同,一般芯片都有电源和地引脚。
图3 SI3016与电话线的连接电路
SI3016从待机状态到摘机状态时可以检测是否有并机存在,从而避免第三方监听电话。SI3016摘机后,检测电话电流并将结果反映到第19寄存器的LVCS位,如果有较大的电流下降,表明存在并机。较多的并机存在,可能会使得LVCS位的值为0,不能通过LVCS位确定是否有正确的线压可用,但可以检查第19寄存器的DOD位,判断是否有可用的线压。
SI3016提供来电检测(Caller ID)功能。在待机状态下来电号码在第一次和第二次的振铃中由交换机发送,这样SI3016必须在这两次振铃之间检测接收到的数据,并翻译成号码,在LCD上显示。检测的步骤如下:
① 检测到振铃后,判断是否是第一次振铃。
② 设置第16寄存器的OFF/SQL2位,该位设置后将复位电话的交流电压,准备接收交换机发送的来电电话号码,OFF/SQL2位将一直保持为1,直到来电号码检测到。
③ 依次设置第18寄存器的MODE位和第5寄存器的ONHM位。这两位设置后,将使能检测来电号码电流的A/D转换器,将电流转换成数字信号。不同的来电号码对应不同的电流值,实际上只有0~9等10种电流大小。A/D转换器是低功耗器件,工作时从DSP取电,其工作电流为7 μA左右。
④ A/D转换器输出的数字信号从RNG1和RNG2引脚提供到SI3016,SI3016再通过C1D引脚传输到DSP。
⑤ 检测到来电后,依次清除所设置的ONHM、MODE和OFF/SQL2位。
3 DSP端软件结构
DSP端的软件结构如图4所示。SI3016收到电话机语音信号首先经过G.168回音相消算法消除回音。如果进行语音压缩,则调用G.726S算法进行压缩,压缩之前还可以调用VAD(Voice Activity Detection)语音激活检测技术判断是否有语音信号,从而压缩掉2个字之间的空隙,大大提高压缩效益;如果不进行压缩,信号就直接经过UMTD(Universal Multifrequency Tone Detector)双音多频检测算法,这样语音信号到达RTP实时组包,组包之后将数据包传送到PC机,以上为数据上传流程。其中,除了组包算法必须由用户软件完成外,其他算法均集成在DSP芯片内部,只需要简单的调用即可。
数据下传是上传的逆过程,主要包括数据拆包、UMTG(Universal Multifrequency Tone Generator)双音多频产生、可能需要的数据解压等算法。与上传一样,只有数据拆包由用户程序完成,其他算法均集成在DSP芯片内部。
图4显示了G.723.1和G.729数据压缩解压算法。这些算法均可以替代芯片内部集成的G.726算法,且均需要用户程序完成,为特定需求的应用场合提供软件的可适应性。
4 总结
本文详细介绍了基于DSP的IP电话网关的系统构成、硬件连接以及软件程序开发。系统设计简单、可靠、实用,是一种比较好的IP电话网关解决方案。该系统可以应用于电话到电话、PC到电话、电话到PC等多种方式的IP电话系统。
图4 系统软件结构框图