基于TIGER560B的USB網(wǎng)絡電話終端的實現(xiàn)
關鍵詞:網(wǎng)絡電話;H.323協(xié)議;USB;網(wǎng)守
隨著因特網(wǎng)(也稱IP網(wǎng))技術的快速發(fā)展,IP網(wǎng)絡電話已經(jīng)得到廣泛使用。所謂IP網(wǎng)絡電話是指利用因特網(wǎng)以分組數(shù)據(jù)包形式傳輸語音/傳真等的新型電信業(yè)務,簡稱VoIP(Voice over IP:IP網(wǎng)絡承載語音業(yè)務)。它以低廉的價格,靈活的應用使傳統(tǒng)電信業(yè)務受到極大的挑戰(zhàn),截止2004年底,幾乎占到長途業(yè)務量的50%。當然,這主要指各大電信運營商推廣IP電話卡形式的IP電話長途業(yè)務,其特點是接入部分使用傳統(tǒng)電信終端(如電話機、手機),以特殊號碼形式識別(179XX),在主干線上以分組的數(shù)據(jù)包的形式在因特網(wǎng)上傳輸話音。
本文介紹基于TIGER560B的USB網(wǎng)絡電話終端(以下簡稱USB網(wǎng)絡電話),它采用即插即用的USB接口與計算機相連,不需要借助傳統(tǒng)電信終端,就可以直接接入因特網(wǎng)。不僅可以撥打長途電話,而且還可以撥打市話。如果用在局域網(wǎng)或者虛擬局域網(wǎng)內(nèi),通話完全免費。在因特網(wǎng)普及的今天,使用USB網(wǎng)絡電話能為大中型企業(yè)事業(yè)單位節(jié)約大量話費。
1 TIGER560B控制器
早期在計算機上實現(xiàn)話音通信主要采用純軟件形式,借助于網(wǎng)卡連接因特網(wǎng),聲卡通過麥克風和音響實現(xiàn)話音的輸入與輸出。但缺點首先是接聽或撥打電話都要操作計算機鍵盤,不僅復雜而且不符合人們使用電話的習慣;其次是來話從音箱播出既泄漏隱私又影響他人工作;還有,通話質(zhì)量差,易產(chǎn)生回音。基于TIGER560B的USB網(wǎng)絡電話終端可以克服上述缺點。
TIGER560B是Tiger Jet Network公司研制的專門用于低成本、高話音質(zhì)量的VoIP處理器,內(nèi)部包含USB接口。它的集成度很高,內(nèi)部集成有很多功能模塊,外部僅需少量元件就可實現(xiàn)VoIP功能。TIGER560B的功能及外圍引腳如圖1所示。
控制邏輯是電路的核心,內(nèi)含專用處理器,用來協(xié)調(diào)整個電路的工作;音頻通道連接外部音頻編解碼器,完成音頻PCM數(shù)據(jù)流的輸入與輸出;USB接口與計算機的USB接口連接,配置控制TIGER560B芯片及TIGER560B連接的編解碼器,同時接收和發(fā)送計算機側(cè)音頻數(shù)據(jù)流,具有橋接通信作用;通用I/O接口可以控制指示燈、振鈴、液晶顯示;外設接口接收鍵盤號碼和連接編解碼器;配置控制接口采用硬件連接對TIGER560B在不同工作模式進行配置,以便加載不同的驅(qū)動程序。
TIGER560B的功能如下:
●支持鍵盤掃描、液晶顯示驅(qū)動、電話接口(SLIC);
●支持H.323協(xié)議和SIP協(xié)議,實現(xiàn)全部VoIP功能;
●不必安裝驅(qū)動,因為驅(qū)動都已經(jīng)嵌入到Windows操作系統(tǒng)中;
●能夠?qū)崿F(xiàn)PC到PC的點對點通話,實現(xiàn)因特網(wǎng)內(nèi)IP電話,通過網(wǎng)關實現(xiàn)與傳統(tǒng)電話通話;
●支持USB供電節(jié)電模式和遠端喚醒功能;
●音頻功能
使用Windows音頻USB驅(qū)動;
支持8bit μ-Law編解碼器接口;
支持音量調(diào)節(jié)、閉音控制;
●PCM接口支持
Silicon Labs公司的Si3210用戶接口電路,華邦公司的W681511型音頻編解碼器和Motorola公司的MC145480型音頻編解碼器;
支持TDM、IOM2、GCI;
長幀模式和短幀模式;
●USB接口
全速12Mb/ps,兼容USB101協(xié)議;
鎖相環(huán)、MAC、PHY、收發(fā)器集成在芯片上;
內(nèi)有3.3V調(diào)節(jié)器;
●支持SPI 4線接口總線;
支持外設總線接口;8bit數(shù)據(jù)總線、6根地址線、22根通用I/O線、讀寫復位線等;
●單12MHz晶振、5V工作電壓,100引腳PQFP封裝。
TIGER560B幾乎集成了IP電話終端必備的所有功能,外部僅需連接PCM音頻編解碼器和鍵盤等就可以實現(xiàn)VoIP功能。
2 系統(tǒng)組成、工作原理和H.323協(xié)議
2.1 USB網(wǎng)絡電話的結(jié)構
圖2為基于TIGER560B VoIP處理器的USB網(wǎng)絡電話模塊框圖。
以TIGER560B為核心的USB網(wǎng)絡電話有3種組成形式。
(1)用TIGER560B和音頻編解碼器(W681511)組成的USB網(wǎng)絡電話相當于一個USB外置聲卡,沒有操作鍵盤,不需要安裝任何額外驅(qū)動軟件,使用計算機鍵盤操作電話的撥出和接口。
(2)TIGER560B、音頻編解碼器、鍵盤和振鈴電路組成的USB網(wǎng)絡電話是一個完整的網(wǎng)絡電話,使用方法和使用傳統(tǒng)電話機撥打、接聽完全一樣。這種形式需要附加鍵盤掃描驅(qū)動軟件和振鈴控制驅(qū)動軟件。若沒有安裝附加驅(qū)動則使用計算機鍵盤操作。另外,如果需要,還可以增加液晶顯示。
(3)TIGER560B和用戶接口電路(ProSLIC:Si3210)組成的USB網(wǎng)絡電話。此種形式為一單接口小網(wǎng)關,通過它把一個標準的普通電話接入因特網(wǎng),實現(xiàn)網(wǎng)絡電話的功能,能夠識別摘機/掛機操作、接收雙音多頻(DTMF)電話號碼,提供全工雙向通話。這種形式網(wǎng)絡電話需要安裝附加驅(qū)動軟件。本文主要對第二種形式加以說明。
2.2 USB網(wǎng)絡電話的工作原理
由于USB接口具有即插即用功能,因此,USB網(wǎng)絡電話與計算機的連接十分方便,也可以隨身攜帶。
作為主叫撥打電話時,直接按“摘掛機鍵”,接著輸入電話號碼,TIGER560B對鍵盤直接掃描,將輸入的摘掛機信息和電話號碼傳送到計算機,進行呼叫,被叫摘機進入通話狀態(tài)。此時,主叫話音由話機手柄麥克風輸入,音頻編解碼器將模擬信號變成PCM格式的數(shù)據(jù)信號,送入TIGER560B進行處理,再由TIGER560B的USB接口送到計算機,計算機采用H.323協(xié)議處理,最后通過網(wǎng)絡接口連接到因特網(wǎng)。
被叫是主叫的逆過程。如果有振鈴,按“摘掛機鍵”,直接接聽。此時,從因特網(wǎng)來的話音,經(jīng)計算機處理后從USB接口送到TIGER560B,然后由TIGER560B將話音信息變成PCM數(shù)據(jù)格式送到音頻編解碼器,再由音頻編解碼器將PCM數(shù)據(jù)格式話音變成模擬話音后,送到被叫話機手柄的耳筒。
不論作為主叫還是被叫,都是全雙工、雙向?qū)崟r通信。呼叫、通話、掛機等各種狀態(tài)在計算機界面都有指示,撥打或者接聽電話與使用傳統(tǒng)電話完全相同,無需操作鍵盤進行干預。
2.3 H.323協(xié)議實現(xiàn)網(wǎng)絡電話過程
本文所述網(wǎng)絡電話是計算機的一種輔助外部設備,其網(wǎng)絡協(xié)議和實現(xiàn)網(wǎng)絡電話的多媒體協(xié)議H.323均在計算機上實現(xiàn)。
實現(xiàn)網(wǎng)絡電話可以采用H.323協(xié)議和SIP協(xié)議。目前我國主要采用前者。
H.323協(xié)議是ITU-T(國際電聯(lián))制定的因特網(wǎng)多媒體實時通信協(xié)議簇,由呼叫控制、媒體編碼、管理控制、網(wǎng)絡安全等系列協(xié)議組成,其全稱是“基于分組交換的多媒體通訊系”。H.323協(xié)議提供基于因特網(wǎng)的聲音、視頻和數(shù)據(jù)傳送的相關標準,定義了4種基本的構成單元:終端(terminal)、網(wǎng)關(gateway)、網(wǎng)守(gatekeeper)和多點控制單元(MCU)。其中網(wǎng)關和網(wǎng)守是網(wǎng)絡電話系統(tǒng)的關鍵。網(wǎng)關實現(xiàn)因特網(wǎng)和網(wǎng)守是網(wǎng)絡電話系統(tǒng)的關鍵。網(wǎng)關實現(xiàn)因特網(wǎng)電話與傳統(tǒng)電信網(wǎng)電話的連接,網(wǎng)守負責因特網(wǎng)內(nèi)電話呼叫、計費和管理等。USB網(wǎng)絡電話僅是網(wǎng)絡電話終端的一種形式。其協(xié)議軟件構架如圖3規(guī)范,而網(wǎng)絡電話僅涉及到音頻通信部分,因此,多點控制單元MCU不作為其必備設備。
計算機中的軟件設計:音頻編解碼部分能夠與USB網(wǎng)絡電話手柄通過USB接口收發(fā)G..722、G.729、G..723.1等編碼,由網(wǎng)絡接口傳送。提供了網(wǎng)絡電話與網(wǎng)守、網(wǎng)關及其他終端之間必需的控制接口,采用H.225.0呼叫控制、H.245信道控制、RTCP實時控制協(xié)議來實現(xiàn)。
網(wǎng)關是兩種不同網(wǎng)絡之間的互通設備,完成信令格式、內(nèi)容轉(zhuǎn)換、通信協(xié)議轉(zhuǎn)換、流媒體格式轉(zhuǎn)換。它是網(wǎng)絡電話與傳統(tǒng)電話互通的必備設備。如果網(wǎng)絡電話僅使用在局域網(wǎng)或者虛擬局域網(wǎng)等小范圍,可以不需要網(wǎng)關設備,如圖4所示。
3 硬件電路設計
USB網(wǎng)絡電話機使用TIGER560B型專用控制器,外圍硬件電路很少。確保電路成本低,可靠性高。具體電路如圖5所示。
圖5僅給出TIGER560B的主要連接線,如音頻編解碼器、鍵盤、USB接口、振鈴電路、晶振電路和工作指示。其他如模式配置,電源線、地線、電阻器連接等具體內(nèi)容可參閱參考文獻[4]。采用TIGER560B設計的網(wǎng)絡電話,電路非常簡單,不需要編制電話機內(nèi)軟件,所有設置、驅(qū)動和應用軟件均在計算機上運行,便于批量生產(chǎn)。
TIGER560B能夠產(chǎn)生MC14LC5480的時序,如圖6所示。使用短幀模式。不需要額外時序產(chǎn)生電路。作為主叫時,MC14LC5480將手柄送來的模擬信號變成PCM數(shù)據(jù)碼流(符合G..711編碼規(guī)范),然后送到TIGER560B進行處理,TIGER560B通過USB接口將PCM碼流送入計算機,計算機將其進行音頻編碼,轉(zhuǎn)換為G..729、G.723.1、G..722(可在計算機使用界面可設置),再將其從計算機網(wǎng)絡接口送到因特網(wǎng);作為被叫時,MC14LC5480把逆向傳來的PCM編碼變成模擬信號,送向手柄話筒。
鍵盤上有摘/掛機按鍵、號碼鍵、音量控制器、號碼修改鍵、閉音鍵等,撥打、接聽電話不需要操作計算機鍵盤。與使用傳統(tǒng)電話完全一樣,方便實用。如果有來話,蜂鳴器將發(fā)現(xiàn)“嘟嘟聲”提示,計算機屏幕也有指示。
4 軟件設計
USB網(wǎng)絡電話的音頻驅(qū)動軟件已經(jīng)嵌入微軟的WINDOWS操作系統(tǒng)中,可以實現(xiàn)即插即用功能。可以使用通用的網(wǎng)絡語音通信軟件如MSN、QQ、OPENPHONE等進行語音交流。此時,USB網(wǎng)絡電話相當一個外置聲卡,各種操作需要借助于計算機鍵盤和相應語音軟件完成,不能實現(xiàn)鍵盤掃描和振鈴功能。如果要實現(xiàn)完整的電話功能,必須另外開發(fā)驅(qū)動軟件。
本文設計的網(wǎng)絡電話軟件包括用戶界面設計和鍵盤掃描/振鈴驅(qū)動兩部分。界面設計主要以簡潔、實用、美觀為主,不作為重點介紹。
設計鍵盤掃描、振鈴驅(qū)動部分使用Tiger Jet Network公司提供的SDK開發(fā)包,通過編寫驅(qū)動軟件控制TIGER560B內(nèi)部寄存器實現(xiàn)。軟件流程框圖如圖7所示。H.323協(xié)議軟件使用SDK開發(fā)包提供的庫函數(shù),網(wǎng)絡協(xié)議軟件使用WINDOWS操作系統(tǒng)中的協(xié)議。
鍵盤掃描和振鈴驅(qū)動軟件子程序如下:
#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通信協(xié)議,計算機側(cè)使用WINDOWS支持的USB驅(qū)動軟件,USB網(wǎng)絡電話側(cè)協(xié)議軟件以微碼形式固化在TIGER560B中,不需再寫軟件。
5 結(jié)束語
本項目日前已經(jīng)完成實驗和測試。測試結(jié)果表明其話音質(zhì)量好,工作穩(wěn)定,可以作為計算機附件。
整個USB網(wǎng)絡電話以TIGER560B為控制核心,外接語音編解碼器,硬件電路簡單,軟件運行在計算機上,充分利用了計算機的優(yōu)勢,把計算機變成了一個標準的基于H.323協(xié)議的VoIP終端。如果在運營商提供基于純因特網(wǎng)上的網(wǎng)絡電話業(yè)務,本文所述的USB網(wǎng)絡電話一定會有很好的開發(fā)前景。
評論