《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于Linux系统的VoIP语音接入网关设计与实现

基于Linux系统的VoIP语音接入网关设计与实现

2009-04-10
作者:赵婉芳1,2, 于 京2, 田

??? 摘??要: 提出一種基于Linux操作系統的VoIP語音接入網關設計,并給出了具體實現過程,其中重點闡述了硬件實現過程。該方案具有很強的擴展性,并且將終端和網關的功能整合為一,適用于改造中小企業內部電話網,以較低的價格從傳統電話網過渡到VoIP電話。?

??? 關鍵詞: VoIP;? EHPI; Linux

?

??? VoIP(Voice over Internet Protocol)是一種以IP電話為主,在使用了TCP/IP協議的網絡上進行語音傳輸并推出相應的增值業務的技術。VoIP可以在IP網絡上低成本地傳送語音、傳真、視頻和數據等業務,如統一消息、虛擬電話、虛擬語音/傳真郵箱、查號業務、Internet呼叫中心、Internet呼叫管理、電視會議、電子商務、傳真存儲轉發等。隨著IP網絡電話技術的發展,由最初的只是計算機對計算機的語音傳輸通信,到后來從普通電話機到普通電話機的VoIP網絡電話實現,使得IP電話使用范圍擴大。目前,IP網絡電話已經通過網關把因特網與傳統電話網聯系起來,廣泛地采用Internet和全球IP互聯的環境,提供比傳統業務更多、更好的服務。用戶可以像使用普通電話一樣,只要有網絡電話機就能打因特網的國際長途電話,而通話費用遠遠低于國際長途電話的費用,大大降低了通信成本。隨著VoIP技術的成熟,IP電話將逐漸取代傳統電話,成為未來電話的發展趨勢。?

??? 本文設計并實現一種基于Linux操作系統的VoIP網關設備。該設備以AudioCodes AC49012為核心,支持12路壓縮語音通道,擴展性強,將終端和網關的功能整合為一個設備,具有很好的應用前景。?

1 基本原理?

1.1系統原理?

??? 該系統主要由CPU、DSP、SLIC及一些外圍設備組成。CPU的主要功能是對網絡數據包進行處理并將數據傳送到以太網。DSP負責對語音數據進行壓縮編碼處理,再將語音數據組合成幀傳送給CPU。SLIC負責提供DSP與電話線的接口,對數據進行數模/模數轉換。另外SLIC芯片給電話線提供驅動電壓,產生電話機所需的信號,如振鈴等。系統結構示意圖如圖 1所示。?

?

?

??? 當兩個VoIP終端建立語音通道后,語音的處理過程如下:?

??? (1)用戶的聲音被SLIC數字化后,產生64kb/s PCM數據流。PCM數據流進入DSP后,DSP按編碼要求通過語音壓縮算法對語音信號進行壓縮編碼處理,再將語音數據按時間分段組合成幀,一般20ms語音數據構成一個幀。?

??? (2)DSP將壓縮語音數據幀傳給CPU,CPU再對語音數據幀進行處理。CPU將語音數據幀加上RTP頭構成RTP包,再使用UDP協議將RTP包傳到以太網上。?

??? (3)對端收到UDP包后,從中取出RTP數據包,再將RTP頭部去除得到壓縮語音數據幀。CPU將語音數據幀傳給DSP解壓。DSP將語音數據幀還原為64kb/s的PCM流,通過TDM總線送至SLIC,SLIC將數字信號轉變為模擬信號發送到電話機。?

1.2 AC49012簡介?

??? 語音處理DSP芯片是該VoIP設備的核心部件,它的選擇至關重要,在本方案中選擇的是AC49012。該芯片是一款新型的功能強大的語音/傳真/數據處理芯片。它最多能處理24個無壓縮通道或12個壓縮通道。該芯片很適合中低密度VoIP設備,具有擴展性強、功耗低、外形尺寸小等優點。AC49012對外提供了EHPI、TDM等接口,通過這些接口,AC49012很容易與其他芯片相連。在設計產品時,將AC49012與控制處理器和SLIC芯片相連,就可實現各種語音產品,如IP電話、VoIP網關、無線和有線網關、IP PBX等。這樣的結構提高了產品設計的靈活性。AC49012的主要功能包括:支持多種碼率的壓縮編碼,如G.711(64kb/s)、G.726(16~40kb/s)、G.727(16kb/s~40kb/s)、G.729AB(8kb/s)、G.723.1(6.3kb/s);支持回聲消除,符合G.168-2002標準;自動檢測和切換語音、傳真或數據等業務;支持傳真轉發功能,符合標準T.38;支持加密功能,能對數據包進行加密;能生成RTP/RTCP包,減輕外部處理器負荷。?

??? 在該DSP芯片中每一個通道都有如圖2所示的結構。PCM數據進入DSP后,為了提高語音質量,先經回聲消除器處理,將其中的回聲衰減。DSP能自動檢測出PCM中的數據類型是語音數據、帶內信令還是傳真數據。每一類數據都有相應的處理模塊。語音數據經編碼器(Speech Encoder)壓縮成低碼率的數據流(該DSP支持多種壓縮編碼,如G.726、G.729等)。傳真數據在本地被解析出來后,放在數據包中傳輸。最后這些數據由CPU打包后發到網絡上。相反地,CPU將從網絡上收到的數據包解開后,通過EHPI傳給DSP處理。這些數據進入DSP后,也會被分類,根據數據包的協議分類。語音數據包經解碼器(Decoder)解碼成PCM流,發送到外部D/A轉換器轉換成電話信號。傳真數據調制產生PCM流輸出。?

?

?

2 系統硬件設計?

??? 系統硬件結構設計如圖3所示。系統中主處理器CPU選用Cirrus Logic EP9302芯片。它是一顆SoC芯片,內部集成ARM920T的核,帶有16KB指令緩存和16KB數據緩存。ARM9核的工作頻率為200MHz,系統總線頻率為100MHz。處理能力完全滿足該系統的需要。該芯片集成了多種硬件模塊,如USB、UART、SPI、SDRAM控制器、10/100Mb/s以太網MAC等。外部數據總線上可掛接多種存儲器,如Flash、SDRAM等。系統DSP選用AC49012。SLIC芯片選用LE88221,每片芯片提供兩個通道。該系統有12個通道,所以需要使用6片LE88221芯片,另外,該系統使用4MB NOR Flash存放Bootloader和程序映像(包括Linux內核和文件系統)。內存使用32MB SDRAM。?

?

?

??? CPU和AC49012之間的通信通過EHPI(即Enhanced Host-Port Interface,16位并行接口)來實現。通過該接口DSP能與Cirrus Logic EP9302芯片直接相連,中間不需要任何邏輯電路轉換信號。DSP通過EHPI接口連接到CPU的外部總線上,占用CPU的一段地址空間。這種連接方式可以使一片CPU連接多片DSP芯片。EHPI并行接口的信號如表1所示。?

?

?

??? 其中,當CPU訪問DSP所在地址時,連接到DSP的片選信號HCS必須有效。HCNTL0連接到地址線,通過地址來區分HPIC(控制寄存器)和HPID(數據寄存器)。CPU通過寫HPIC控制寄存器給DSP發中斷信號,同樣,DSP也能給CPU發送HINT中斷信號,CPU響應中斷后清除中斷標志位。?

??? SLIC與DSP連接使用TDM(Time Division Multiplex)總線。該總線是時分復用總線,6片SLIC可以連接到同一條TDM總線上。不同的語音通道使用不同的時隙(Time Slot)。每個時隙的帶寬是64kb/s,就是一個語音通道的帶寬。TDM總線的工作頻率可調,工作頻率越高時隙就越多,支持的語音通道也就越多。?

??? 要使LE88221芯片正常工作,必須初始化內部寄存器。LE88221有一個SPI接口用于CPU訪問其內部寄存器。通過SPI串行接口CPU可以讀寫SLIC芯片內部寄存器來初始化和控制SLIC。SPI接口由DIN(串行數據輸入)、DOUT(串行數據輸出)、DCLK(數據時鐘)和CS(片選信號)組成。CPU發給SLIC的數據有固定的格式,先發8bit地址,后面緊跟多字節輸入數據或多字節輸出數據(由LE88221輸出)。讀寫操作由地址的最低有效位區分,即奇地址表示讀出操作,偶地址表示寫入操作。CPU只有一個SPI接口,而該系統中有6片SLIC芯片需要連接,所以需要使用外部CPLD芯片來切換,同一時刻CPU的SPI只連接到一片SLIC芯片。6片SLIC芯片可以共用DIN、DOUT、DCLK這些信號,但它的片選CS信號必須由CPLD切換來確定是否與CPU的SPI片選連接。通過這種機制,驅動程序通過控制CPLD來選擇要控制哪片SLIC芯片。?

3 驅動程序設計?

??? 本系統采用的是實時Linux操作系統。實時Linux 操作系統源代碼開放,軟件成本較低,具有實時響應能力。此外Linux系統有大量開源的應用程序可使用,開發人員可以通過修改源代碼來進行功能的擴展,Linux還可以在廣泛的硬件平臺上運行,具有很好的可移植性,用戶很容易把應用程序從一個Linux平臺移植到另外一個Linux平臺。?

??? 本系統的Linux是在Linux 2.6.10上打實時補丁得到的。Linux內核和文件系統存放在Flash中。在Linux中使用設備文件表示設備,設備文件放在/dev目錄下。設備文件與設備驅動關聯,當應用程序讀寫設備文件時,系統會將讀寫請求發給相應的設備驅動,由驅動程序去控制芯片完成任務。該系統中有兩個主要的驅動程序,DSP驅動和SLIC驅動。它們分別對應設備文件“/dev/dsp”和“/dev/slic”。?

??? SLIC驅動的主要功能是初始化SLIC芯片并提供事件查詢接口。初始化過程是通過寫SLIC芯片的寄存器來配置工作參數,主要包括配置TDM總線工作頻率、每個通道占用的TDM時隙、配置濾波器參數等。初始化完成后,芯片進入正常工作狀態。應用程序通過驅動提供的接口查詢各種事件,如摘機、掛機、告警等事件。通過查詢,應用程序能及時了解電話機狀態。?

??? DSP驅動是系統中最重要的驅動程序,它的主要功能是初始化DSP芯片并提供應用程序與DSP通信的接口。在初始化過程中,首先將DSP的固件下載到DSP中,然后配置DSP的工作參數,如選擇編解碼器、語音處理參數、傳真轉發參數、信號音參數等。DSP驅動可簡單分為兩層:上層實現與DSP固件的通信,驅動與DSP固件使用私有數據包通信,這層實現這些私有數據包的構造和解析;下層實現EHPI總線的訪問,讀寫DSP中的數據。上層生成的數據包由下層寫入到DSP中;反之,下層從DSP讀出的數據包會傳給上層解析。?

??? 該系統使用ARM核CPU運行Linux系統,所以要使用針對ARM的GNU交叉編譯工具來編譯驅動程序。首先,要在一臺運行Linux的開發機上安裝開發軟件包,其中包含GNU交叉編譯器、映像工具、調試工具等;然后配置好開發機;編譯驅動程序使用make工具,將生成的驅動程序拷貝到設備文件系統中;使用映像工具將設備文件系統做成映像,再用JTAG調試器將Linux內核和文件系統映像寫入設備的Flash中;之后就可以啟動設備,進行程序調試了。另外,為了調試方便也可以使用NFS文件系統,設備通過網絡使用開發機上存放的設備文件系統。?

??? 在驅動程序調試過程中需要注意以下問題:?

??? (1) TDM時隙設置。在DSP驅動和SLIC驅動中同一通道必須設置相同的TDM時隙,包括收發兩個方向(SLIC到DSP、DSP到SLIC),否則SLIC和DSP無法交換數據。?

??? (2) CPU訪問EHPI總線的時序。在CPU中設置EHPI總線時序時,要根據EHPI總線的時序要求設置。該方案中CPU的總線頻率較高,設置EHPI訪問時序時需加入足夠的延時,否則EHPI訪問會出錯。?

??? 該系統采用CPU和DSP分離的結構,有較好的擴展性。當需要增加通道數量時,只需增加DSP的數量就可以實現。CPU主頻較高,有足夠的數據處理能力。該設備試用后證明,設備成本低,通話效果良好,可取代現在使用的傳統PBX設備,非常適合改造中小企業內部電話網。?

參考文獻?

[1] 糜正琨.IP網絡電話技術[M].北京:人民郵電出版社,?2000.?

[2] 張登銀,張精科.VoIP技術分析與系統設計[M]. 北京:人民郵電出版社,2003.?

[3] 張磊.VoIP 語音技術及應用[M].北京:機械工業出版社,2000.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 精品91免费| 中文字幕久久综合| 国内自拍欧美激情| 99爱精品视频| 国产在线观看91精品一区| 国产精品裸体一区二区三区| 久久精视频免费在线久久完整在线看| 国产精品久久久久免费| 久久精品国产欧美亚洲人人爽| 国产在线观看不卡| 国产精品777| 久久天天躁夜夜躁狠狠躁2022| 国产精品久久久久久久久免费看 | 亚洲欧美日韩精品综合在线观看| 激情婷婷综合网| 国外色69视频在线观看| 福利视频久久| 欧美激情第三页| 亚洲综合色av| 久久另类ts人妖一区二区| 国产精品久久久久av免费| 日本一区免费在线观看| 国产综合第一页| 国产精品露脸av在线| www.xxxx精品| 性欧美精品一区二区三区在线播放V| 国产精品免费观看久久| 国产成人精品久久亚洲高清不卡| 日韩中文字幕亚洲精品欧美| 性欧美精品一区二区三区在线播放V | 亚洲制服欧美久久| 久久久久久香蕉| 国产综合第一页| 欧美在线欧美在线| 久久免费观看视频| 91精品久久久久久久久久久 | 中文网丁香综合网| 国产一区二中文字幕在线看| 日韩无套无码精品| 99精品国产高清一区二区| 青青青在线观看视频|