基于ARM的局域网IP电话设计
扫描二维码
随时随地手机看文章
关键词: IP电话;网关;实时操作系统;高级精简指令集计算机;
前言
由于计算机网络技术发展与更新比PBX快,设备价格降幅大,建立一个以Internet(或Intranet)为基础的IP电话网络,以替代传统电话设备系统成为企业的目标。
局域网IP电话
局域网IP电话使用统一的网络通信设备和布线来传输话音和数据。 在传统的PBX (专用小交换机)系统中,话音呼叫通过与办公PBX连接的一系列标准话音线路进入办公室,即通过一种专用设备在标准的电话配线上接收和疏导话音业务量。然而在LAN电话话音网络中,话音呼叫通过基于IP的PBX进行接收和疏导,而这种IP PBX是与现有的数据网络连接的。IPPBX可以是一种独立的解决方案,也可以分解为几种分散的装置。具体功能框图如图1所示。
图1 局域网IP电话功能模块图
该IP电话的主要优点:
可方便的移动和增加终端设备;
支持多媒体终端;
有利于发展计算机电话集成技术;
硬件平台
通常硬件的基本设计要求是:高密度、低功耗和低成本。而VoIP的许多性能都对应特定的应用需求,诸如:(1)系统分割,包括分组数据包集合和路由;(2)定义产品功能的软件性能;(3)满足高可用性的网络管理能力。
LAN电话产品工作在纯IP方式下,所以话机在接入广域网后,在网络管理方面应该是兼容的。本方案的VoIP话机是一种网关下移的终端产品,无需通过网关就可将此设备直接接入以太网中,配置好相关的地址信息就可以使用。它的开发基于Atmel公司的AT75C220开发板。AT75C220是专为各种因特网应用而设计的高性能处理器芯片。它的核心部件—ARM7TDMI 微处理器运行能力为40MIPS,专门用于话音处理的OakDSPCore协处理器(图2中的话音处理芯片),运行能力可达60MIPS。两者之间信息的交互采用高效的双端口mailbox机制。这就决定了AT75C220能综合通用CPU的控制功能和专用CPU的信息处理功能,提高了系统的集成度,同时 ARM处理器的操作指令比较简单,降低了开发的复杂度。
AT75C220开发板除了具备用于连接计算机的标准串行接口和连接电话手柄的RJ11接口外,还有两个标准RJ45以太网接口用于连接网守。ARM7TDMI核心处理器控制整个VoIP话机的运行,并提供通用I/O接口用于连接拨号键盘、液晶显示器和振铃电路。AT75C220的结构框图如图2所示。
图2 AT75C220的结构框图
AT75C220开发板上装有存储应用程序的闪存(flash)。计算机利用超级终端程序通过开发板上的串行接口可以与AT75C220芯片进行信息交互,实现对flash的应用程序编程和其它软件管理功能。开发AT75C220应用软件的PC机必须启动运行siap-mClinux操作系统。应用程序开发完毕后,通过220software set提供的工具将包含应用程序及操作系统内核的img文件下载到220开发板上的flash中,最终完成系统的开发。
VoIP话机的构造如图3所示。其用户接口部分与普通话机无异,显示器用来显示相关的信息,如发起呼叫时所拨的号码、来电显示等。此外,VoIP话机可以由串行口与个人数字助理(PDA)设备相连,实现软件升级、自动拨号等功能。话音接口的功能是实现话音模拟信号与标准64Kbit/s PCM信号之间的相互转换。网络接口负责话音分组的发送和接收以及各种呼叫信令的交换。VoIP话机通过RJ45插头与局域网上的网守相连。
图3 IP话机构造图
软件实现
该实现依赖于网络协议栈和实时操作系统(RTOS)。多数应用系统需要RTOS以便同时处理多个流程和呼叫。采用的RTOS应具有以下特点以满足通信协议的复杂性:系统内核小;中断处理时间短;连续运行时间长;多个毫秒级或微秒级定时器的处理能力。ARM- mClinux是非常优秀的嵌入式实时操作系统,它提供了多种用于实时系统开发、调试、和运行的功能,如多任务机制、内核可裁剪、网络功能、实存储器管理策略等。同时,Linux的内核源代码是完全公开的,这对降低开发成本、提高软件开发的复用度等方面无疑是十分有利的。
对于网络协议栈,本方案采用标准的H.323协议栈,以便与公网进行互连。从TCP/IP的分层观点来看,H.323是一个应用层协议族,它包含了适用于各种媒体通信和信令控制的协议,建立的基础是TCP或者UDP协议。根据实际的使用需求,本文重点讨论的协议有语音编码方面的G.723.1、G.711等和呼叫控制信令H.225和H.245等。在CPU的正常设计能力下,系统所有的进程将会阻塞在各自的消息队列中,只有处于最低的IDLE进程处于运行状态,消息队列中消息总数处于比较低的数量水平。增加进程可能要增加共用的数据区和内部消息,相应的还要引入复杂的管理机制。
基于上述软件要求,该VoIP话机要能与符合H.323标准的网关和网守互通,并实现VoIP话机与VoIP话机及VoIP话机与网关所带的普通话机之间的话音通信功能。此外,VoIP话机还应具备一定的录音与重放能力。
对于IP话机而言,主要软件实现在话机和网守的通信以及话机之间的互通,其呼叫流程如图4。
图4 H.323呼叫信令流程
上述过程的通道实现机制是TCP或UDP。IP话机在成功登录到网守后,其接续过程完全类似于普通话机之间的接续,摘机后向网守发“呼叫请求” (udp),网守收到后发“是否运行主叫拨号”(tcp),如果不允许的话,提示挂机;若允许的话,主叫在收到拨号音后开始拨号,向网守送“拨号信息”报文(tcp),网守向主叫发送“被叫空闲信息”报文(tcp),然后是分别向主叫和被叫送回铃音和振铃音。等待被叫摘机后,被叫向网守送“被叫摘机”报文 (udp),网守向被叫送“停止振铃”(tcp), 网守向主叫送“被叫摘机”报文(tcp),进入通话(udp)状态。有关话音的处理要涉及到220话音处理模块。
网关向网守发送的报文:不管是高层用户端向网守发送的登录报文,还是IP话机或交换机侧向网守发送的呼叫处理报文,都会先放置在名为mqRecvBottom的消息队列中,然后根据报文所采用的传送方式发往以下三个队列:信令的TCP传送_mqSendTCP;信令的UDP传送_mqSendUDP;话音传送 _mqSendData(可以通过网守转发,也可以直接在两个网关之间发送),然后再通过socket发送出去。
几个关键问题的解决
摘挂机检测与号盘号码接收
AT75C220提供若干用户自定义的通用I/O接口。只需通过一定的硬件连接和软件编程,就可以实现摘挂机状态的检测与用户所拨号码的接收。
来话振铃
AT75C220内部寄存器中有专门指示有无来话的比特位。应用软件定期检测该比特,一旦发现有来话,立即通过某一个事先编程确定的通用I/O口送出振铃指示信号,该信号可作为振铃电路的使能信号。
话音处理模块
话音处理的功能均由ARM7TDMI控制OakDSPCore共同完成。
在进行IP通话时,将模拟前端电路送来的64Kbit/s PCM数字话音信号进行压缩,送至网络接口模块;同时将网络接口模块送来的压缩话音信号进行解压,形成64Kbit/s PCM数字话音信号送至模拟前端。
通过对OakDSPCore的灵活编程,VoIP话机可以方便地实现语音留言的录音和回放功能。
在用户从号盘拨号时,通过编程启动OakDSPCore的DTMF信号发生器功能,在用户听筒里产生相应的双音多频信号。如果需要,该DTMF信号还可以象话音信号一样经压缩编码后发送出去。
话音压缩和解压采用G.723.1算法。为了执行有效的语音压缩,必须考虑很多重要的因素。首先,当所有通道都工作时,必须确保性能没有任何下降。数据包必须是可配置的,以确保最大的灵活性。此外,本课题采用的G.723.1算法采用了话音激活检测技术,VAD技术是自适应增益控制的基础,能进一步实现带宽。