基于MC68HC908的VoIP電話終端的設(shè)計與實現(xiàn)
隨著網(wǎng)絡(luò)的迅速普及和網(wǎng)速、帶寬的大幅提高,越來越多的企業(yè)接入了寬帶互聯(lián)網(wǎng)。同時為了更有效地利用網(wǎng)絡(luò)資源并降低長途電話費用,很多企業(yè)開始使用各種各樣的VoIP產(chǎn)品。這些VoIP產(chǎn)品大概可以分為兩類,一類是純軟電話,需要PC作為平臺,不需要外部硬件設(shè)備,該類型產(chǎn)品投入很?。涣硪活愂羌冇布腣oIP產(chǎn)品,不需要PC作為平臺,接上網(wǎng)線就可以使用,但這種產(chǎn)品的投入較大。針對PC已成為現(xiàn)代辦公室基本辦公工具的現(xiàn)狀,充分利用這個資源,設(shè)計了一種結(jié)合以上兩類特點的VoIP電話,它與PC結(jié)合使用。利用PC的USB口供電,使軟電話與傳統(tǒng)電話相結(jié)合,這樣,既具有軟電話廉價的特點又具有傳統(tǒng)電話方便使用的優(yōu)點。利用這種低成本的VoIP電話并結(jié)合以太網(wǎng)建立企業(yè)級的VoIP網(wǎng)絡(luò),可為企業(yè)節(jié)省60%-80%的長途通信費用和交通費[I.2]。
2 網(wǎng)絡(luò)拓?fù)浼皩崿F(xiàn)框圖
假設(shè)某企業(yè)的現(xiàn)狀為:總部在北京,在天津和上海各有一家辦事處,總部和辦事處都建立了自己的辦公網(wǎng)絡(luò)并且都接入Internet;企業(yè)內(nèi)部的信息溝通非常頻繁,以往都通過固定電話和E-mail聯(lián)系。電話費用很高,E—mail又存在時間滯后的缺點;每位員工都擁有一臺裝有Windows操作系統(tǒng)的PC。為了利用現(xiàn)有資源,可以為每位員工配置一部VoIP電話,通過USB接口與PC連接,局域網(wǎng)的連接方式和網(wǎng)絡(luò)拓?fù)淙鐖D1所示。各辦事處的網(wǎng)內(nèi)都需要一臺代理服務(wù)器,這可以通過在一臺普通PC上安裝相應(yīng)的服務(wù)器軟件來實現(xiàn)。這樣,通過對現(xiàn)有網(wǎng)絡(luò)的簡單配置便可以建立起跨省市的企業(yè)內(nèi)部即時通信系統(tǒng)。圖2是本文所設(shè)計的VoIP電話的實現(xiàn)框圖??梢钥闯觯琕oIP電話部分主要完成語音采集和基于G.711的編解碼。以及液晶顯示、鍵盤信息處理等電話的基本功能。而利用PC強大的處理運算能力可以實現(xiàn)諸如G.729的語音壓縮編碼、RTP控制以及對SIP、TCP/UDP/IP等協(xié)議的封裝。這樣通過與PC相結(jié)合便可實現(xiàn)一種低成本的VoIP電話。
3 VoIP電話工作原理
VoIP電話的原理框圖如圖3所示,主要由4部分組成:微控制器、PCM編解碼單元、鍵盤電路和液晶顯示電路。電話工作過程如下:首先,通過話筒將模擬話音送入PCM編碼器。經(jīng)過編碼輸出的是符合G.711標(biāo)準(zhǔn)的64 kb/s的PCM碼流,該碼流在微控制器輸出的位時鐘(BCLK)和幀時鐘(XSYNC)的控制下,以8位/幀的速度傳送給微控制器,然后,控制單元再將接收到的數(shù)據(jù)緩沖存儲,當(dāng)緩沖區(qū)滿時,將數(shù)據(jù)發(fā)送給USB控制器,最后通過USB把數(shù)據(jù)發(fā)送給PC。反之,USB控制器接收來自PC的數(shù)據(jù),然后,控制單元把這些數(shù)據(jù)反向發(fā)送給PCM單元解碼。最終還原成模擬信號并通過聽筒輸出。其中微控制器是整個電路的核心部分,它負(fù)責(zé)產(chǎn)生與PCM單元交換數(shù)據(jù)時的幀時鐘和位時鐘;運行液晶驅(qū)動程序顯示相關(guān)狀態(tài)信息;用軟件消除按鍵抖動并對按鍵信息讀取和處理;控制USB接口接收和發(fā)送音頻數(shù)據(jù);與PC之間相應(yīng)控制信息的處理,如振鈴、忙音、摘掛機檢測等。鍵盤單元作為人機接口,通過微控制器的鍵盤中斷接收來自外部的信息。該單元的連擊處理、按鍵去抖都由微控制器通過軟件來完成[3,4]。
4 硬件設(shè)計要點
4.1 器件選擇
由于本文設(shè)計的VoIP電話的特點是與PC結(jié)合使用,并且具有很低的成本,所以在器件選擇上需要考慮既保證功能的實現(xiàn)又要盡可能降低成本。經(jīng)過對比,選擇Freescale公司的MC68HC 908JB8作為控制器。它是一款低功耗、高性能的8位MCU,具有較豐富的硬件資源。內(nèi)部含有一個符合USB1.1標(biāo)準(zhǔn)的接口,傳輸速度為1.5 Mb/s,編碼后的音頻速率為64 kb/s,完全滿足與PC通信的要求,其次,還具有8個鍵盤中斷。利用其中的4個就可以完成4x4的矩陣式鍵盤設(shè)計[5]。PCM編解碼器選用OKI公司的MSM7702—01,該器件采用3.3 V電壓供電,具有低功耗、A/μ律可選、傳送增益可調(diào)的特點[6]。LCD選擇圖形點陣模塊LCM12232A,該模塊具有122*32點陣格式。采用8位并行工作方式。
4.2 電源設(shè)計
由于整個VoIP電話供電來自PC的USB接口,其工作電壓是+5 V,而MSM7702—01的供電電壓是+3 V,故可以利用MC68HC908JB的片上調(diào)壓器配合4.7 μF的耦合電容和0.1 μF的旁路電容產(chǎn)生+3 V電源,并由Vreg引腳輸出到MSM7702—01。
4.3 時鐘設(shè)計
HC908系列編程器內(nèi)部采用6 MHz的時鐘。如果電話內(nèi)部也使用這個頻率的時鐘,則經(jīng)過分頻后不能獲得準(zhǔn)確的64 kHz的BCLK和8 kHz的XSYNC信號。時鐘的不準(zhǔn)確將造成PCM時序的偏差,從而可能引起數(shù)據(jù)傳輸錯誤,因此采用雙時鐘設(shè)計,也就是在線編程時通過跳線選擇編程器上的6 MHz作為時鐘源供MC68HC908JB寫入程序,而當(dāng)電話工作時則選擇電話內(nèi)部的2.048 MHz時鐘源,該時鐘源經(jīng)過分頻可以得到準(zhǔn)確的64 kHz的BCLK和8 kHz的XSYNC信號,從而保證了PCM時序的準(zhǔn)確性。
5 軟件設(shè)計要點
5.1 同步時鐘產(chǎn)生
同步時鐘的產(chǎn)生是軟件設(shè)計中的關(guān)鍵點。MSM7702—01的數(shù)據(jù)發(fā)送時序如圖4所示,其中有兩個時鐘:BCLK和XSYNC。這兩個時鐘可以通過MSM7702一01內(nèi)部的定時器TIM對BusClock(總線時鐘)分頻計數(shù)來產(chǎn)生。
BusClock由下式?jīng)Q定:
BusClock=fosc/2=2.048 MHz/2=1.024 MHz
其中fosc是外部時鐘。由于BusClock較低,故可采用一分頻,即將TSC(狀態(tài)與控制寄存器)中PS2-PS0(分頻選擇位)設(shè)置為000。采用定時器的溢出中斷工作模式,設(shè)置定時器溢出間隔為1/128 kHz,則TCHOL(計數(shù)寄存器)預(yù)置數(shù)為:
TCHOL=BusClock/128 MHz=1.024 MHz/128 kHz=(8)10=(00001000)2
這樣,當(dāng)定時器在BusClock的驅(qū)動下計數(shù)8次后,產(chǎn)生脈寬為1/128 kHz的脈沖。這是因為BCLK的周期為1/64 kHz,而其脈寬為1/128 kHz,故設(shè)置定時器每隔1/128 kHz溢出中斷一次,在中斷例程中交替設(shè)置高低電平,這樣就可以得到BCLK。如果在中斷例程中再使用一個初值為0的計數(shù)器,每計數(shù)16次則可以產(chǎn)生幀時鐘XSYNC,這樣MSM7702-01的發(fā)送時序就完全可以通過TIM的溢出中斷模式來產(chǎn)生。接收時序與發(fā)送時序完全相同。不再單獨說明。
5.2 PCM時序及其數(shù)據(jù)采集
整個程序采用查詢式結(jié)構(gòu),分為主程序和中斷程序。主程序包括端口、變量和內(nèi)部寄存器初始化以及鍵盤信息采集、LCD顯示和數(shù)據(jù)處理等。中斷程序則包括鍵盤響應(yīng)中斷和TIM溢出中斷,用于響應(yīng)事件并對相應(yīng)標(biāo)志置位,然后將參數(shù)返回給主程序處理。由于TIM溢出中斷程序用來產(chǎn)生PCM數(shù)據(jù)傳輸時序,它是整個程序的關(guān)鍵點,故著重說明。
程序流程如圖5所示,在主程序初始化時已經(jīng)將Counter(計數(shù)器)和端口PTB0、PTB2的初值均設(shè)為O。進入中斷程序后計數(shù)器首先加1,然后判斷端口PTB2的電平狀態(tài),將其設(shè)置為相反的電平(產(chǎn)生BCLK)。如果此時計數(shù)器Counter的值為1則需同時設(shè)置PTB0為高電平(產(chǎn)生XSYNC),根據(jù)器件數(shù)據(jù)手冊的要求,tBCLK≤tXSYNC<100μs[6],故可以設(shè)計在TIM溢出3次后將PTB0置低(XSYNC大約持續(xù)23μs)。當(dāng)Counter計數(shù)到16后說明一幀數(shù)據(jù)已經(jīng)傳輸完畢,此時將Counter清零,下一次中斷將開始下一幀數(shù)據(jù)的接收和發(fā)送。在每一幀內(nèi)第一個BCLK上升沿到來時,PCM編碼器將第一比特數(shù)據(jù)放到PCMOUT上,下一個上升沿再放第二個比特數(shù)據(jù),如此循環(huán)8次后,可將一幀數(shù)據(jù)發(fā)送完畢,如圖4中PCMOUT的時序。由于PCMOUT在BCLK的上升沿發(fā)送而PCMIN在BCLK的下降沿采集,從而接收和發(fā)送時序產(chǎn)生流程都可以由圖5表示。
由于篇幅所限,主程序和鍵盤中斷例程不一一說明。
6 結(jié)束語
以上設(shè)計的VoIP電話配合相應(yīng)的PC機軟件就可以滿足企業(yè)、辦事處間語音通信的基本要求,電話所具備的各種復(fù)雜功能還可以在此基礎(chǔ)上進行擴充,比如電話號碼薄、來電防火墻、來電指示、來去電號碼存儲等。該VoIP電話的特點是具有很低的硬件成本,同時具備了軟電話的廉價和傳統(tǒng)電話方便使用的優(yōu)點,適合在企業(yè)內(nèi)部與辦事處之間大面積使用,故該設(shè)計在構(gòu)建企業(yè)內(nèi)部的初級VoIP綜合業(yè)務(wù)網(wǎng)方面具有一定的工程應(yīng)用價值。