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