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