2014/04/28 Tang
1引言
隨著IP技術的飛速發展,VOIP電話網關(Voice和Over IP Gateway/Internet Telephone Gateway)成為及其工作方式。連接因特網和電話網的橋梁,它將網絡IP網絡和傳統電話網(PSTN)相互連接起來,用Internet替換掉昂貴的長途電話線路來傳送話音,可以組合成功能強大的新的通信網絡。與PSTN采用的電路交換不同,VoIP完全建立在分組交換(packet switching)基礎上,而分組交換固有的時延、丟包等弱點使VoIP的通話質量根本得不到保證。因此在VoIP電話網關的設計、建設、使用過程中,通話質量一直是人們最為關注的問題。利用嵌入式技術來保障VoIP電話質量為眾多研究者和生產商所重視。本文介紹的就是一種基于ARM 9與DSP雙內核、嵌入式的VolP電話網關設計方案,并結合核心芯片TMS320C5416和S3C2410詳細分析了其設計流程、軟硬件結構及其工作方式。
2 基于ARM 9與DSP雙內核、嵌入式的VoIP電話網關硬件系統設計
按照“硬件+嵌入式操作系統+應用層軟件”的系統架構設計思想,在這種VoIP網關系統硬件設計中,主芯片采用MCU+DSP雙內核結構,其外圍有存儲器、以太網接口、音頻接口和I/O擴展電路等幾部分,其硬件框圖如圖1所示。
2.1 語音信號的采集、壓縮標準及VoIP主芯片
語音信號的采集、語音信號的壓縮,這里采用G.729協議標準,即共軛結構碼激勵線性預測編碼算法(CS-ACELP)E 。其編碼速率為8kb/s,可以滿足網絡通信的要求,具有良好的語音質量,對不同的應用環境有較強的適應性,是一種性能較好的語音壓縮國際標準。
單個語音流上G.729語音壓縮的計算開銷非常大,要求達到20MIPS,如果要求一個中央CPU在處理多個語音流的同時,還執行路由和系統管理功能,這是不現實的,因此,使用DSP可以從中央CPU卸載其中的復雜語音壓縮算法的計算機任務。本設計采TMS320C5416和S3C2410構成雙內核VoIP主芯片。TMS320C5416是TI公司推出的一款高性價比的通用16位定點DSP芯片,它的內核CPU基本組成與TMS320C54X系列一樣_2]。C5416的單指令周期為6.25 RS,每秒執行的指令數為160×106,指令系統豐富并具有很多多功能指令,使用了6級指令流水線結構,這些都很適合實現低時延的G.729聲碼器。S3C2410是三星公司生產的基于ARM920T內核的32位RISC微處理器(MCU),它最高可運行在203MHz、擁有獨立的16KB指令Cache和16KB數據Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM 的Timer,I/O 口,RTC,8路l0位ADC,Touch Screen接口,IIC_BUS接口,II BUS接口,2個USB主機,1個USB設備,SD主機和MMC接口,2路SPI。這種基于ARM 9與DSP雙內核的VoIP主芯片具有如下明顯優勢:
1)提高語音處理的實時性,避免傳統單內核設計功耗太大的缺點。傳統單內核設計致使MCU負擔過重、實時性能受到影響,從而造成VoIP電話語音質量下降、并限制了通信話路、不能滿足大量用戶通信的要求?,F由DSP處理器完成實時的語音信號壓縮,DTMF信號的檢測與產生、回波抵消等工作,既減輕了MCU 的負擔,同時又提供了多個話路,使網關為多用戶提供服務成為可能。
2)實現復雜的系統功能。采用32位MCU作為控制管理中心,能穩定地進行嵌入式實時操作系統,能支持各種網絡協議棧,使語音數據能夠在網絡中有效地傳輸。
2.2 編解碼器
IDT821034是IDT公司的4通道PCM編解碼器,具有可編程增益設置、主時鐘頻率為IDT821034是IDT公司的4通道PCM編解碼器,具有可編程增益設置、主時鐘頻率為2.048MHz最大支持128個可編程時隙、A律/μ律可選、內置數字濾波器、串行控制接口和低功耗等特點。利用該芯片負責對DSP解壓縮后送來的PCM數據進行解碼,并將濾波后的模擬語音信號送給用戶端;同時,它還負責將模擬語音信號進行PCM 編碼,然后送到DSP芯片進行壓縮處理。
2.3 以太網控制器
本設計采用DM9000,DM9000是DAVICOM公司的10/100Mb/s自適應以太網芯片。其特點是:支持8位、16位、32位數據總線寬度;寄存器操作簡單有效,有成熟的Linux驅動程序支持;3.3V接口電平;成本相當低廉;還可以使用MII接口和PHY芯片連接。DM9000還提供了介質無關的接口,以連接所有提供支持介質無關接口功能的家用電話線網絡設備或其他收發器;其物理協議層接口完全支持使用10MBps下3類、4類、5類非屏蔽雙絞線和100MBps下5類非屏蔽雙絞線。這是完全符合IEEE 802.3u規格。它的自動協調功能將自動完成配置以最大限度地適合其線路帶寬,還支持IEEE 802.3x全雙工流量控制 。
2.4 ARM和DSP的通信接口設計
1)關于DSP的HPI口
HPI是TMS320C54X等芯片提供的一種并行端口,專門用于DSP和外部主機并行通信。HPI接口有標準HPI接口和增強型HPI接口。這符合C5416和C5420DSP器件的主機接口為增強型主機接口的要求。
2)HPI硬件連接及其工作方式
S3C2410與TMS320C5416連接方式如圖2所示。其中,C5416具有單獨的8根數據線HD0~HD7和10根控制線。系統將HPI接口所有控制寄存器HPIC、地址寄存器HPIA、數據寄存器HPID統一編址,映射到S3C2410物理地址的I/O內存空間。
利用地址線A[4:1]產生HPI訪問所需的控制信號。A1 與A2決定訪問寄存器類型。A3決定訪問的是第一個字節還是第二個字節:A2=0時,表示寫入的數據為第一個字節;A2=1時,表示寫入的數據為第二個字節。在HPI一8中所有地址線和控制線是在HDSI和HDS2的下降沿采樣,而不是由HR/W 決定,因此HR/W 通過地址線表示當前操作是讀還是寫,而數據鎖存信號由nGCS3和nRW0相與后共同產生。HINT設置為S3C2410的EINT19中斷輸入腳,DSP通過中斷方式與底層HPI驅動程序通信。
2.5 S3C2410與DM9000的連接
實現DM9000與S3C2410連接,必須對兩者間的數據、地址、控制三大總線進行連接和轉換。S3C2410是32位微處理器,有32根地址線,支持4GB存儲空間。其中0-40000000的1G空間被分為8塊128M空間,分別由NGCSO—NGCS7片選。DM9000為16位以太網控制芯片。圖3給出了S3C2410與DM9000的連接方法。
3 基于ARM 9與DSP雙內核、嵌入式的VoIP網關的軟件系統及其工作方式
考慮到使用S3C2410時,其DSP可通過中斷方式與Linux底層HPI驅動程序通信,且Linux隨著自身不斷的改善,已能支持多種體系結構、大量外設以及其網絡功能完善、開放源代碼、軟件資源豐富、內核穩定而高效、大小及功能均可定制等,在嵌入式領域高速發展中催生了嵌入式Linux。因此在本設計中操作系統選用了嵌入式Linux。
3.1 基于嵌入式Linux的操作系統驅動程序裝載
基于嵌人式Iinux的操作系統,本設計將所用設備分為字符設備、塊設備和網絡設備三種,所有設備都看成普通文件,因此可以通過用操縱普通文件相同的系統調用來打開、關閉、讀取和寫人設備。設備程序利用結構file-operations與文件系統聯系起來。在嵌入式Linux操作系統下驅動程序裝載如圖4所示。其中,設備驅動程序是一組相關函數的集合,它包含設備服務子程序和中斷處理程序。每個設備服務子程序只處理一種設備或者緊密相關的設備,以從與設備無關的軟件中接受抽象的命令并執行。具體操作是:當執行一條請求時,根據控制器驅動程序提供的接口、并利用中斷機制去調用中斷處理程序配合設備來完成這個請求。
3.2 HPI驅動程序
HPI接口可用I/O端口方式,也可以用I/0存取方式。系統平臺采用I/O存取方式,將HPI訪問控制寄存器、數據寄存器、地址寄存器,映射到內存物理地址為OX30000000開始的空間,通過訪問存儲器指令對HPI進行操作。HPI具體物理地址定義如下:
#defineHPI_BASEOX30000000//HPI基地址
#define HPD_READ— LOWHPI—BASE+OXOO12//讀數
據寄存器第一字節
#define HPA—WRITE— HIGHHPI— BASE+0X000C//寫
地址寄存器第二字節在Linux下,類似Windows,程序不能直接訪問物理地址。設備驅動程序是內核的一部分,它像內核中其他代碼一樣運行在內核模式,驅動程序如果出錯就會使系統受到嚴重破壞,因此需要將物理地址映射到內核空間。在Linux下通過virtul—ad—dress===(u32)ioremap(HPI BASE,HPI—LENGTH)實現。驅動程序主要結構如下 :
struet file—operations hpi— fops一{
owner:THIS _MODULE,
read:hpi _read,
write:hpi_ write,
poll:hpi_ poll,
open:hpi_ open,
release:hpi_release,);
HPI通信協議采用幀結構,由于增強型HPI接VI允許訪問DSP內部RAM所有空間,系統通信在DSP內部分配2K字(16位)作為幀緩沖區,讀寫各1K字,協議采用一位滑動窗口協議。幀格式如表1所示。
3.3 應用程序設計及相關功能模塊
本設計應用層的軟件由系統應用層協議SIP和各個功能模塊組成。系統的應用層協議SIP實現通過VoIP網關實時傳送數據的功能。SIP通信協議棧負責IP電話中尋找被叫方、建立應答、并且按照彼此的數據處理能力發送數據,在網絡中進行實時語音傳輸。應用層軟件功能模塊主要包括語音包處理模塊,路由尋址模塊和網絡管理模塊等。 SIP是IETF標準進程的一部分,它是一個分層結構的協議。最底層是語法和編碼,它的編碼使用增強Backus-Nayr形式語法(BNF)來規定;第二層是傳輸層,它定義了網絡上一個客戶機如何發送請求和接收響應以及一個服務器如何接收請求和發送響應,所有的SIP元素包含傳輸層內;第三層是事務層,事務是DIP的基本元素,它處理應用層重傳、匹配響應到請求、以及應用層超時。事務層之上的層稱為事務用戶(TU)。每個SIP實體,除了無狀態代理,都是事務用戶。當一個TU希望發送請求,它生成一個客戶機事務實例并且向它傳遞請求和IP地址、端口和用來發送請求的傳輸機制。一個TU生成客戶機事務也能夠刪除它。當客戶機取消一個事務時,它請求服務器停止進一步的處理,將狀態恢復到事務初始化之前,并且生成特定的錯誤響應到該事務。這由取消請求完成,它構成自己的事務,但涉及要取消的事務。SIP提供它自己的可靠性機制從而獨立于分組層,并且只需不可靠的數據包服務即可。
語音處理模塊主要是在數字信號處理器(DSP)芯片上以G.729協議標準進行語音處理。主要包括四個過程:首先對輸入的語音數據進行抗疊濾波、模數轉換,再經DSP采集并存人RAM存儲器中,即語音存儲過程;接著運行編碼程序,將前面存儲的信息進行壓縮并存儲,這是編碼過程;然后進行解碼,并將數據存回原來的位置;最后DSP執行輸出指令,將解碼后的數據送到數模轉換器中,實現模擬輸出,這是語音回放過程。路由尋址模塊主要完成路由尋址及路由管理的功能。它將各個地區的電話區號映射為相應網關的IP地址,存放在數據庫中,當用戶撥打電話時,網關根據電話區號的數據庫資料,確立相應網關的IP地址,并將此IP地址加入到IP數據包中,同時選擇出最佳的路由以減少傳輸延遲,把IP數據包經過Internet傳送到目的網關。網絡管理模塊(SNMP/WEB/CLI)提供一個語音管理的接口,實現對VoIP語音網關的配置和維護。網絡管理信息是基于國際標準.ASN.1和SNMP(簡單網絡管理協議)的要求建立的,可以針對不同系統開發了三種模式管理:基于WEB的管理、基于SNMP(簡單網絡管理協議)的管理和基于命令行的管理。這使用戶對VoIP語音網關的配置和維護更加簡單和有效。
4 結語
基于雙內核、嵌入式的VolP電話網關設計,不僅實現提高語音處理的實時性,避免傳統單內核設計功耗太大的缺點,而且又提供了多個話路,降低了功耗,使網關為多用戶提供服務成為可能。同時采用32位MCU作為控制管理中心,能穩定地進行嵌入式實時操作系統,能支持各種網絡協議棧,使語音數據能夠在網絡中有效地傳輸。隨著以太網的發展和嵌入式系統設計被人們越來越廣泛的關注,這種設計方式將會在VoIP領域及工業控制領域得到越來越廣泛的應用。
40088 411661033743080@qq.com
中國廣東省深圳市南山區西麗九祥嶺工業區10棟3樓