随着因特网(也称IP网)技术的快速发展,IP网络电话已经得到广泛使用。所谓IP网络电话是指利用因特网以分组数据包形式传输语音/传真等的新型电信业务,简称VoIP(Voice over IP:IP网络承载语音业务)。它以低廉的价格,灵活的应用使传统电信业务受到极大的挑战,截止2004年底,几乎占到长途业务量的50%。当然,这主要指各大电信运营商推广IP电话卡形式的IP电话长途业务,其特点是接入部分使用传统电信终端(如电话机、手机),以特殊号码形式识别(179XX),在主干线上以分组的数据包的形式在因特网上传输话音。
本文介绍基于TIGER560B的USB网络电话终端(以下简称USB网络电话),它采用即插即用的USB接口与计算机相连,不需要借助传统电信终端,就可以直接接入因特网。不仅可以拨打长途电话,而且还可以拨打市话。如果用在局域网或者虚拟局域网内,通话完全免费。在因特网普及的今天,使用USB网络电话能为大中型企业事业单位节约大量话费。
1 TIGER560B控制器
早期在计算机上实现话音通信主要采用纯软件形式,借助于网卡连接因特网,声卡通过麦克风和音响实现话音的输入与输出。但缺点首先是接听或拨打电话都要操作计算机键盘,不仅复杂而且不符合人们使用电话的习惯;其次是来话从音箱播出既泄漏隐私又影响他人工作;还有,通话质量差,易产生回音。基于TIGER560B的USB网络电话终端可以克服上述缺点。
TIGER560B是Tiger Jet Network公司研制的专门用于低成本、高话音质量的VoIP处理器,内部包含USB接口。它的集成度很高,内部集成有很多功能模块,外部仅需少量元件就可实现VoIP功能。TIGER560B的功能及外围引脚如图1所示。
TIGER560B的主要组成部分有控制逻辑、音频通道、USB接口、通常I/O接口、外设接口和配置控制接口。
控制逻辑是电路的核心,内含专用处理器,用来协调整个电路的工作;音频通道连接外部音频编解码器,完成音频PCM数据流的输入与输出;USB接口与计算机的USB接口连接,配置控制TIGER560B芯片及TIGER560B连接的编解码器,同时接收和发送计算机侧音频数据流,具有桥接通信作用;通用I/O接口可以控制指示灯、振铃、液晶显示;外设接口接收键盘号码和连接编解码器;配置控制接口采用硬件连接对TIGER560B在不同工作模式进行配置,以便加载不同的驱动程序。
TIGER560B的功能如下:
●支持键盘扫描、液晶显示驱动、电话接口(SLIC);
●支持H.323协议和SIP协议,实现全部VoIP功能;
●不必安装驱动,因为驱动都已经嵌入到Windows操作系统中;
●能够实现PC到PC的点对点通话,实现因特网内IP电话,通过网关实现与传统电话通话;
●支持USB供电节电模式和远端唤醒功能;
●音频功能
支持USB音频类设备模式;
使用Windows音频USB驱动;
支持8bit μ-Law编解码器接口;
支持音量调节、闭音控制;
●PCM接口支持
Silicon Labs公司的Si3210用户接口电路,华邦公司的W681511型音频编解码器和Motorola公司的MC145480型音频编解码器;
支持TDM、IOM2、GCI;
长帧模式和短帧模式;
●USB接口
全速12Mb/ps,兼容USB101协议;
锁相环、MAC、PHY、收发器集成在芯片上;
内有3.3V调节器;
●支持SPI 4线接口总线;
支持外设总线接口;8bit数据总线、6根地址线、22根通用I/O线、读写复位线等;
●单12MHz晶振、5V工作电压,100引脚PQFP封装。
TIGER560B几乎集成了IP电话终端必备的所有功能,外部仅需连接PCM音频编解码器和键盘等就可以实现VoIP功能。
2 系统组成、工作原理和H.323协议
2.1 USB网络电话的结构
图2为基于TIGER560B VoIP处理器的USB网络电话模块框图。
以TIGER560B为核心的USB网络电话有3种组成形式。
(1)用TIGER560B和音频编解码器(W681511)组成的USB网络电话相当于一个USB外置声卡,没有操作键盘,不需要安装任何额外驱动软件,使用计算机键盘操作电话的拨出和接口。
(2)TIGER560B、音频编解码器、键盘和振铃电路组成的USB网络电话是一个完整的网络电话,使用方法和使用传统电话机拨打、接听完全一样。这种形式需要附加键盘扫描驱动软件和振铃控制驱动软件。若没有安装附加驱动则使用计算机键盘操作。另外,如果需要,还可以增加液晶显示。
(3)TIGER560B和用户接口电路(ProSLIC:Si3210)组成的USB网络电话。此种形式为一单接口小网关,通过它把一个标准的普通电话接入因特网,实现网络电话的功能,能够识别摘机/挂机操作、接收双音多频(DTMF)电话号码,提供全工双向通话。这种形式网络电话需要安装附加驱动软件。本文主要对第二种形式加以说明。
2.2 USB网络电话的工作原理
由于USB接口具有即插即用功能,因此,USB网络电话与计算机的连接十分方便,也可以随身携带。
把USB网络电话直接插入计算机USB接口,并安装相应的驱动软件,就可以在计算机“设备管理”——“人体学输入设备”中看到“USB人体学输入设备”;在“声音、视频和游戏控制”中看到“USB Audio Device”,同时在计算机桌面出现信息窗口。
作为主叫拨打电话时,直接按“摘挂机键”,接着输入电话号码,TIGER560B对键盘直接扫描,将输入的摘挂机信息和电话号码传送到计算机,进行呼叫,被叫摘机进入通话状态。此时,主叫话音由话机手柄麦克风输入,音频编解码器将模拟信号变成PCM格式的数据信号,送入TIGER560B进行处理,再由TIGER560B的USB接口送到计算机,计算机采用H.323协议处理,最后通过网络接口连接到因特网。
被叫是主叫的逆过程。如果有振铃,按“摘挂机键”,直接接听。此时,从因特网来的话音,经计算机处理后从USB接口送到TIGER560B,然后由TIGER560B将话音信息变成PCM数据格式送到音频编解码器,再由音频编解码器将PCM数据格式话音变成模拟话音后,送到被叫话机手柄的耳筒。
不论作为主叫还是被叫,都是全双工、双向实时通信。呼叫、通话、挂机等各种状态在计算机界面都有指示,拨打或者接听电话与使用传统电话完全相同,无需操作键盘进行干预。
2.3 H.323协议实现网络电话过程
本文所述网络电话是计算机的一种辅助外部设备,其网络协议和实现网络电话的多媒体协议H.323均在计算机上实现。
实现网络电话可以采用H.323协议和SIP协议。目前我国主要采用前者。
H.323协议是ITU-T(国际电联)制定的因特网多媒体实时通信协议簇,由呼叫控制、媒体编码、管理控制、网络安全等系列协议组成,其全称是“基于分组交换的多媒体通讯系”。H.323协议提供基于因特网的声音、视频和数据传送的相关标准,定义了4种基本的构成单元:终端(terminal)、网关(gateway)、网守(gatekeeper)和多点控制单元(MCU)。其中网关和网守是网络电话系统的关键。网关实现因特网和网守是网络电话系统的关键。网关实现因特网电话与传统电信网电话的连接,网守负责因特网内电话呼叫、计费和管理等。USB网络电话仅是网络电话终端的一种形式。其协议软件构架如图3规范,而网络电话仅涉及到音频通信部分,因此,多点控制单元MCU不作为其必备设备。
计算机中的软件设计:音频编解码部分能够与USB网络电话手柄通过USB接口收发G..722、G.729、G..723.1等编码,由网络接口传送。提供了网络电话与网守、网关及其他终端之间必需的控制接口,采用H.225.0呼叫控制、H.245信道控制、RTCP实时控制协议来实现。
网守是网络电话系统必备的管理单元,终端上电后首先向网守注册,将其IP地址和电话号码送到网守(电话号码也可以由网守分配),接受网守管理。每次呼叫某个电话,首先与网守交换信息,从网守得到被叫的IP地址,接着与被叫直接通信。通话结束,必须与网守通信,使网守得到本次通话结束信息,作为计费依据或作为历史记录标志。如果仅把USB网络电话用在点对点通话时,那么可以直接呼叫对方IP地址,而不需要网守。
网关是两种不同网络之间的互通设备,完成信令格式、内容转换、通信协议转换、流媒体格式转换。它是网络电话与传统电话互通的必备设备。如果网络电话仅使用在局域网或者虚拟局域网等小范围,可以不需要网关设备,如图4所示。
3 硬件电路设计
USB网络电话机使用TIGER560B型专用控制器,外围硬件电路很少。确保电路成本低,可靠性高。具体电路如图5所示。
图5仅给出TIGER560B的主要连接线,如音频编解码器、键盘、USB接口、振铃电路、晶振电路和工作指示。其他如模式配置,电源线、地线、电阻器连接等具体内容可参阅参考文献[4]。采用TIGER560B设计的网络电话,电路非常简单,不需要编制电话机内软件,所有设置、驱动和应用软件均在计算机上运行,便于批量生产。
TIGER560B能够产生MC14LC5480的时序,如图6所示。
使用短帧模式。不需要额外时序产生电路。作为主叫时,MC14LC5480将手柄送来的模拟信号变成PCM数据码流(符合G..711编码规范),然后送到TIGER560B进行处理,TIGER560B通过USB接口将PCM码流送入计算机,计算机将其进行音频编码,转换为G..729、G.723.1、G..722(可在计算机使用界面可设置),再将其从计算机网络接口送到因特网;作为被叫时,MC14LC5480把逆向传来的PCM编码变成模拟信号,送向手柄话筒。
键盘上有摘/挂机按键、号码键、音量控制器、号码修改键、闭音键等,拨打、接听电话不需要操作计算机键盘。与使用传统电话完全一样,方便实用。如果有来话,蜂鸣器将发现“嘟嘟声”提示,计算机屏幕也有指示。
4 软件设计
USB网络电话的音频驱动软件已经嵌入微软的WINDOWS操作系统中,可以实现即插即用功能。可以使用通用的网络语音通信软件如MSN、QQ、OPENPHONE等进行语音交流。此时,USB网络电话相当一个外置声卡,各种操作需要借助于计算机键盘和相应语音软件完成,不能实现键盘扫描和振铃功能。如果要实现完整的电话功能,必须另外开发驱动软件。
本文设计的网络电话软件包括用户界面设计和键盘扫描/振铃驱动两部分。界面设计主要以简洁、实用、美观为主,不作为重点介绍。
设计键盘扫描、振铃驱动部分使用Tiger Jet Network公司提供的SDK开发包,通过编写驱动软件控制TIGER560B内部寄存器实现。软件流程框图如图7所示。
H.323协议软件使用SDK开发包提供的库函数,网络协议软件使用WINDOWS操作系统中的协议。
键盘扫描和振铃驱动软件子程序如下:
#include "stdafx.h"
#include"TjIpApi.h"
#include"Tj560Bhandset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[]=_FILE_;
#endif
CTj560Bhandset_Hid::CTj560Bhandset_Hid()
{
}
CTj560Bhandset_Hid::~CTj560Bhandset_Hid()
{
}
BOOL CTj560Bhandset_Hid::InitTjHardware()
{
return TRUE;
}
BOOL CTj560BhandsetKeypad_Hid::InitTjHardware()
{
tjoutp(0x0b,100);//default is 48,now set to
100 ==> period =100/2=50ms
InitBuzzer();
Return TRUE;
}
char CTj560BhandsetKeypad_Hid::MapHardwareKeyToUserKey(WORD wHardwareKey)
{
char cNewKey=0;
switch(wHardwareKey)
{
case 0xb0;
case 0xb1;
case 0xb2;
case 0xb3;
case 0xb4;
case 0xb5;
case 0xb6;
case 0xb7;
case 0xb8;
case 0xb9;
cNewKey= (char) (wHardwareKey -0xb0)+'0';
break;
case 0xba:
cNewKey=(char)VK_MULTIPLY; // '*' key
break;
case 0xbb:
cNewKey=(char)VK_POUND; //'*' key
break;
case 0x26:
cNewKey=(char)VK_ALT_U;//hangup
break;
case 0x31: //Enter key
cNewKey=(char)VK_RETURN;
break;
case 0x2f:
cNewKey=(char)VK_ALT_TCD;
break;
case 0x51;
VK_DOWN; //down
break;
case 0x52;
cNewkey=(char)VK_UP; //up
break;
case 0x20:
cNewKey=(char)0;
break;
default:
break;
}
return cNewKey;
}
BOOL CTj560B Hand set Key pad_Hid::Ring(BOOLbOn)
{
SetBuzzerFreq(2400); //default to 2.4kHz
TurnBuzzerOn(bOn);
Return TRUE;
}
软件还包括USB通信协议,计算机侧使用WINDOWS支持的USB驱动软件,USB网络电话侧协议软件以微码形式固化在TIGER560B中,不需再写软件。
5 结束语
本项目日前已经完成实验和测试。测试结果表明其话音质量好,工作稳定,可以作为计算机附件。
整个USB网络电话以TIGER560B为控制核心,外接语音编解码器,硬件电路简单,软件运行在计算机上,充分利用了计算机的优势,把计算机变成了一个标准的基于H.323协议的VoIP终端。如果在运营商提供基于纯因特网上的网络电话业务,本文所述的USB网络电话一定会有很好的开发前景。