郭星 海軍701工廠,北京 100015
基于BF531的VoIP終端的設(shè)計(jì)與實(shí)現(xiàn)
郭星 海軍701工廠,北京 100015
本文介紹了VoIP原理和關(guān)鍵技術(shù),分析了SIP協(xié)議的呼叫流程,提出基于BF531的VoIP終端的設(shè)計(jì)方案,實(shí)現(xiàn)了一款支持通話、短信、通信錄等多種功能的終端。
VoIP;BF531;會話初始化協(xié)議;Qt/E
VoIP即Voice Over IP,通過對語音進(jìn)行數(shù)字化編碼壓縮成幀并封裝成IP包在Internet上傳輸,數(shù)據(jù)到達(dá)目的地后進(jìn)行解壓、數(shù)模轉(zhuǎn)換還原語音,是一種利用Internet技術(shù)進(jìn)行語音通信的新業(yè)務(wù)。由于VoIP技術(shù)促進(jìn)了網(wǎng)絡(luò)資源利用,降低語音業(yè)務(wù)成本,因此在全球范圍內(nèi)得到了迅速的發(fā)展,可以說是當(dāng)前世界上發(fā)展最快,普及最廣的應(yīng)用服務(wù)技術(shù)之一。鑒于VoIP在網(wǎng)絡(luò)和通信領(lǐng)域所占的重要地位以及表現(xiàn)出來的廣闊前景,本文提出一種在技術(shù)上可行的設(shè)計(jì)方案,即在高性能低功耗的BF531處理器平臺上實(shí)現(xiàn)VoIP終端。
1.1 VoIP原理
VoIP原理:運(yùn)用語音壓縮算法對語音數(shù)據(jù)進(jìn)行壓縮編碼,然后把語音數(shù)據(jù)按有關(guān)協(xié)議進(jìn)行打包,經(jīng)由IP網(wǎng)絡(luò)把數(shù)據(jù)包發(fā)送到接收地,接著再把語音數(shù)據(jù)包串起來,經(jīng)過解碼解壓縮處理后,就可以恢復(fù)成原來的語音信號了,從而實(shí)現(xiàn)互聯(lián)網(wǎng)傳送語音的目的。
1.2 VoIP關(guān)鍵技術(shù)
VoIP完全建立在IP網(wǎng)絡(luò)基礎(chǔ)上,關(guān)鍵技術(shù)包含信令、編碼、實(shí)時(shí)傳輸?shù)取?/p>
1.2.1 信令
保障電話呼叫的實(shí)現(xiàn)和話音質(zhì)量好壞的前提就是信令,VoIP主要信令包括ITU-T的H.323和會話初始化協(xié)議SIP。
1.2.2 語音編碼
由于現(xiàn)代信息技術(shù)的不斷發(fā)展,尤其是互聯(lián)網(wǎng)和無線通信的蓬勃發(fā)展,作為多媒體通信中信息傳輸重要環(huán)節(jié)的語音,也越來越受到重視,對語音編碼要求也就越來越高,在要求低延時(shí)、低碼率的同時(shí)還要保證語音的高質(zhì)量。語音壓縮編碼的目標(biāo)就是要在盡可能低的比特率下,最大化的提取語音信號的特征信息,并且在接收端還原出清晰自然的聲音。
1.2.3 實(shí)時(shí)傳輸
VoIP電話是一種語音通信,需要對音頻數(shù)據(jù)進(jìn)行實(shí)時(shí)傳輸。其中主要涉及到RTP協(xié)議和RTCP協(xié)議。
(1)RTP協(xié)議
RTP是一種應(yīng)用型的傳輸層協(xié)議,為應(yīng)用提供端到端的實(shí)時(shí)網(wǎng)絡(luò)傳輸。RTP需要與底層網(wǎng)絡(luò)協(xié)議相配合才可以實(shí)現(xiàn)傳輸數(shù)據(jù)的任務(wù)。由于語音傳輸對實(shí)時(shí)性要求較高,所以一般采用UDP來完成數(shù)據(jù)傳輸。
(2)RTCP協(xié)議
艦艇、飛行器和車輛對于核動(dòng)力裝置的空間要求遠(yuǎn)高于核能發(fā)電廠,而傳統(tǒng)核聚變反應(yīng)堆體積、重量很大,遠(yuǎn)超這些運(yùn)輸工具的體積和重量限制,難以做成適配于這些需求的移動(dòng)式能量供應(yīng)源。洛馬公司稱該堆的體積僅為同功率傳統(tǒng)托卡馬克裝置的1/10,一座直徑7米、長18米的該型反應(yīng)堆就可實(shí)現(xiàn)200兆瓦的熱功率輸出,運(yùn)行一年所需的燃料量僅為25千克,可以在線補(bǔ)充燃料,無需像裂變堆那樣定期停堆更換燃料棒,可連續(xù)運(yùn)行,大幅提升續(xù)航能力,而且設(shè)計(jì)與建造周期也只有數(shù)月,成本遠(yuǎn)低于大型聚變裝置。
RTCP是配合RTP的一種實(shí)時(shí)傳輸控制協(xié)議。它自己沒有QoS保證功能,但是能通過階段性的向會話參與者傳送控制分組數(shù)據(jù),并以此來提供網(wǎng)絡(luò)狀況的有關(guān)參數(shù)。
1.3 SIP協(xié)議
1.3.1 SIP簡介
S I P是2001年推出的I E T F標(biāo)準(zhǔn)(RFC3261),用于在IP網(wǎng)絡(luò)上建立、改變和終結(jié)多媒體會話,是基于應(yīng)用層的控制協(xié)議。同時(shí)SIP可以邀請第三方加入會話,也支持重定向服務(wù)和名字映射。
1.3.2 SIP呼叫流程
SIP是通過用戶代理之間的交互消息來建立呼叫的,它繼承了Internet中客戶機(jī)/服務(wù)器的模式,即主叫代理充當(dāng)UAC,被叫代理充當(dāng)UAS。SIP大致有三種呼叫模式:a.UAC向UAS直接呼叫,b.UAC在重定向服務(wù)器的配合下進(jìn)行重定向的呼叫,c.代理服務(wù)器代表UAC向被叫方發(fā)起呼叫。下面我們以直接呼叫為例(如圖1)說明呼叫過程的建立。
圖1 直接呼叫流程
2.1 VoIP終端組成框圖
圖2 VoIP終端組成框圖
2.2 硬件設(shè)計(jì)
硬件采用模塊化設(shè)計(jì),包括IP電話處理器、電源管理模塊、語音處理模塊、網(wǎng)絡(luò)接口模塊、存儲器、鍵盤和LCD7部分。其中IP電話處理芯片采用BF531,語音芯片采用UDA1341。
2.3 軟件設(shè)計(jì)
終端軟件分驅(qū)動(dòng)層、中間層和應(yīng)用層三層設(shè)計(jì),其中應(yīng)用層軟件采用Qt/E開發(fā),移植開源軟件linphone的庫文件,采用多線程設(shè)計(jì)思想,將整個(gè)應(yīng)用程序劃分為四部分,分別由四個(gè)線程來實(shí)現(xiàn)。
UI線程主要用來響應(yīng)用戶的鍵盤輸入和屏幕的顯示及傳遞消息到協(xié)議棧。通過在main.cpp程序中創(chuàng)建QApplication類型的對象實(shí)現(xiàn)。QApplication類負(fù)責(zé)圖形界面應(yīng)用程序的控制流以及主要設(shè)置管理,包括主事件的循環(huán)、應(yīng)用程序的初始化和結(jié)束及對話管理。
Codec語音線程主要完成語音處理,包括本地語音采集與編碼工作,網(wǎng)絡(luò)語音數(shù)據(jù)解碼、混音及播放等。
SIP信令交互線程調(diào)用linphone所依賴的eXoSIP和oSIP庫,使用UDP實(shí)現(xiàn)底層SIP接收/發(fā)送,并且封裝了SIP消息解析器。利用系統(tǒng)初始化時(shí)創(chuàng)建的eXosip_execute線程不斷查詢是否有數(shù)據(jù)需要處理。當(dāng)它發(fā)現(xiàn)狀態(tài)機(jī)中有需要處理的數(shù)據(jù)時(shí),它會調(diào)用在系統(tǒng)初始化時(shí)eXosip_set_callbacks 注冊的事件處理函數(shù)。利用函數(shù)eXosip_listen_ addr監(jiān)聽端口,等待連接。如果有數(shù)據(jù),立即接收并解析數(shù)據(jù),放到事件隊(duì)列中。
RTP/RTCP收發(fā)線程調(diào)用linphone所依賴的oRTP庫,用Socket套接字實(shí)現(xiàn)RTP/RTCP數(shù)據(jù)包收發(fā)工作。RTP負(fù)責(zé)傳送語音數(shù)據(jù),RTCP對數(shù)據(jù)分發(fā)質(zhì)量等信息進(jìn)行反饋。其中初始化函數(shù):rtp_session_ init,它執(zhí)行rtp會話的一些必要的初始話工作。發(fā)送函數(shù):rtp_ session _send_with_ ts,發(fā)送rtp數(shù)據(jù)包,session是rtp會話結(jié)構(gòu)體,返回值是成功發(fā)送到網(wǎng)絡(luò)中字節(jié)數(shù)。接收函數(shù):rtp_ session _recv _with_ ts,接收rtp數(shù)據(jù)包。
首先向SIP服務(wù)器注冊主叫方和被叫方的SIP地址,分別為100200@192.168.1.231和100300@192.168.1.23,然后進(jìn)行了通話測試,并進(jìn)行了語音時(shí)延測量。通過測試發(fā)現(xiàn)VoIP終端能夠?qū)崿F(xiàn)語音通話,語音清晰流暢,沒有出現(xiàn)明顯的時(shí)延和回音,達(dá)到預(yù)期效果,已在實(shí)際中應(yīng)用。
本文在深入分析VoIP原理和SIP機(jī)制的基礎(chǔ)上,提出基于BF531處理器的設(shè)計(jì)方案,利用Qt/E開發(fā)出一款支持通話、短信、通訊錄等多種功能的終端。通過測試結(jié)果分析,設(shè)計(jì)的終端達(dá)到了預(yù)期的目標(biāo),驗(yàn)證了本文提出的設(shè)計(jì)方案的可行性。
[1]徐熾,張聞芳.基于SIP協(xié)議的VOIP系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2008.8(10)
[2]倪繼利.Qt及Linux操作系統(tǒng)窗口設(shè)計(jì)[M].電子工業(yè)出版社,2006.P212~248
[3]陳峰.Blackfin系列DSP原理與系統(tǒng)設(shè)計(jì)[M].電子工業(yè)出版社,2010.P295~302
[4]陶慧明.基于SIP的嵌入式VoIP終端的設(shè)計(jì)與實(shí)現(xiàn)[學(xué)位論文].華中科技大學(xué),2008
[5]刁扣鎖.短信息在嵌入式Linux系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn)[學(xué)位論文].東南大學(xué),2005
郭星,海軍701工廠,工程師,主要研究方向是嵌入式開發(fā)。
10.3969/j.issn.1001-8972.2012.05.024