0 引言
IP电话以其通话费率低、方便集成和智能化等优势而得到了众多消费者的极大认可,并因此而对原有固定电话运营者的长途电话和国际电话业务造成了巨大冲击。因此,随着以太网接口的直接入户,开发出一种带有RJ-45以太网接口并直接连入因特网,从而使使用更加方便的IP电话非常需要。利用这种IP电话,用户可以直接拨叫远端的电话号码,并通过关守(gate keeper)把所拨的电话号码转换成远端IP电话的IP地址,从而建立通话连接。事实上,新型IP电话终端已经可以直接把输入语音信号数字化,并按照G.728或G.729等一定的语音压缩编码算法来完成对输入语音信号的实时压缩,使带宽从64kbps降低到8kbps,从而大大提高了信道的利用率。IP电话终端通常遵循SIP(或者H.323)协议,并通过网关(gate,way)实现IP电话和普通电话的互通。
1 IP电话系统组成
IP电话通信的基本原理是利用数字通信技术来对语音信号进行数字压缩编码处理,然后按TCP/IP标准进行打包.再经过互联网络把数据包发送到接收地。同时在接收端将这些语音数据包串起来,再经过解码解压处理,以使其恢复成原来的语音信号,从而达到由互联网传送语音的目的。IP电话的基本组成原理如图1所示。
IP电话系统一般有网络电话机(IPPhone)、网关(Gateway)、多点控制单元MCU(MultipointControl Unit)和网闸(Gatekeeper)等四个基本组件。其中网络电话机是IP电话的客户终端,多以硬件形式出现,它可以直接连接在IP网上,以便进行实时的语音或多媒体通信;网关是通过IP网络提供PHONE-TO-PHONE语音通信的关键设备,是IP网络和PSTN/ISDN/PRX网络接口设备;多点控制单位(MCU)的功能在于利用IP网络实现多点通信,以使IP电话能够支持诸如网络会议这样一对多的通信;至于网闸,有时也称为网守或关守,主要用来提供对整个电话系统端点和呼叫的管理。
网闸的主要功能包括地址翻译、呼叫接纳控制、呼叫管理以及呼叫权限等。在H.323建议中,网闸是一个可选部分,但是对于实际运行的局域网IP电话系统来说,网闸则是一个重要部件。本系统中,网闸设立在IP地址的一个终端上。通过网闸可对所有终端用户的姓名和IP地址进行统一登记和管理,并预先给每个终端用户分配一个类似电话分机的虚拟电话号码,以便其他终端用户进行呼叫。主叫用户无需知道被叫用户终端的IP地址,只需要输入其对应的虚拟电话号码或真实姓名即可。
2 IP电话单机的硬件设计
IP电话分为接收方和呼叫方。发起通话请求的一端称为呼叫方,另一端为接收方。根据不同的应用场景,呼叫方和接收方可以调换角色,也就是说,任意一方都可以发起通话请求,呼叫方发起通话请求并输入接收方的IP地址,两方通过网络连接成功后,利用麦克风和听筒就可以进行谈话了。
IP通话的主要工作在网络电话机单机部分。随着现在ARM微处理器技术的高度发达和日趋成熟,设计中选择了ARM9微处理器S3C2410和μC/OS-II搭建平台来制作网络电话单机部分。一般单机的基本工作框图如图2所示。
在图2中,CPU内核模块是搭建一个带CPU及存储器的工作核心。其中的微处理器采用的就是三星公司的S3C2410 fARM920T),Flash采用的是SST公司的SST39VF160的NOR Flash,SDRAM则采用hynix公司的HY57V641620HG;以太网接口主要帮助CPU完成TCP/IP数据包的接收和发送。本设计采用的RTL8019AS是一种全双工的即插即用型以太网控制器,它兼容RTL8019控制软件和NE2000 8bit或16bit的传输,并支持UTP、AUI、BNC和PNP自动检测模式,同时支持外接闪烁存储器读写操作以及I/O口地址的完全解码,此外,它还具有LED指示功能,其接口符合Ethernet2和E802.3、10Base5、10Base2、10BaseT等标准。
系统中的显示模块采用一块普通数显LCD,主要用来完成电话号码的显示及一些本机工作状态的显示;键盘模块和EEPROM主要提供网络电话机的拨号键盘,以完成拨号和电话机的功能设置。EEPROM主要用于系统参数的设置和存储。语音模块可选用飞利浦半导体公司的UDA1341TS音频编解码器。另外,系统中的上位机接口主要完成一些参数的设定和一些已经被记录的参数的读取。
3 系统软件设计
软件方面的工作主要是驱动程序的编写、任务的划分和任务的编写等三个方面。由于μC/OS-II基本上不提供API接口库或者需要额外购买,因此,网络电话中需要编写的主要驱动软件有包括TCP/IP、液晶驱动、EEPROM驱动、键盘驱动、IO驱动、USB驱动等程序。这些驱动程序的编写一般都有固定的模式和套路。一般情况下,IP电话软件应包括完成语音通话所需的所有功能。该软件按功能可划分为图3所示的四部分。
3.1 呼叫处理模块
呼叫处理模块主要完成呼叫的建立与拆除功能。呼叫控制可采用SIP协议建立会话。呼叫建立过程通常是先由一个SIP终端向本地的代理服务器发出呼叫请求,本地的代理服务器则通过查询本地的重定向服务器来查找下一个代理服务器的地址,并向其转发呼叫请求。当下一个代理服务器收到呼叫请求后,首先通过定向服务器查找被叫所在网络的代理服务器,然后向该代理服务器转发呼叫请求。被叫所在网络的代理服务器确定被叫终端后,再向被叫终端转发呼叫请求。最后由被叫终端应答,从而实现连接。
3.2 语音编码/解码模块
虽然语音采集所得到的PCM编码数据能够提供较好的长途通信语音质量,但其速率往往过高,因而占用网络带宽资源过高。为此,一般都需要对语音数据进一步压缩,以降低语音编码的速率。这样,相应的,在接收端也就需要同样的解压算法来恢复原始语音数据。编制这部分代码可采用现在比较成熟的语音编解码算法,并进行一定的改进,以提高语音通话质量。
3.3数据封包/拆包模块
数据封包/拆包软件模块主要对压缩编码后的语音数据进行打包,包括添加包头、时标和其他信息,以使其形成语音包。在接收时,则应进行相应的拆包,并提取语音压缩包。
3.4数据传输模块
该模块主要完成语音包的发送和接收。因为把音频数据实时地传输给对方才是保证实时语音通信的关键。所以,在考虑可靠性和实时性方面,更应注重速度和实时性。故在选择协议时,可采用UDP协议。并在编程时使用对应的数据报套接字。
4 结束语
IP电话通信系统是利用现有计算机网络资源组成的电话通信系统,它无需铺设电话线和购置电话通信网络设备,故可节省大量建设电话网络的设备费、线路费和工程费用,可在不需要铺设电话线的情况下,方便地实现电话通信,增加电话用户,缩短安装工程周期,提高计算机网络资源的利用率,扩大电话的普及范围,同时可加大信息传递量,因而具有良好的社会和经济效益。