?

基于Mini2440的低帶寬語音通信系統

2011-09-04 06:09章堅武
關鍵詞:碼器內核數據包

沈 磊,章堅武

(杭州電子科技大學通信工程學院,浙江杭州310018)

0 引言

語音壓縮技術是現代通信中最基本、最重要的技術之一,隨著信道帶寬資源越來越寶貴,對語音壓縮質量的要求也隨之提高,但如何保持高品質的語音質量與實現低速率傳輸是必須解決的問題[1]。AMBE-2000是美國DVSI公司對MBE(多帶激勵)算法作改進后,得到擁有專利的語音壓縮算法即AMBE算法,并集成到DSP芯片中而制成的語音壓縮專用芯片[2、3]。該芯片具有強的性能,合成語音質量優于相同碼率的其它壓縮算法。本文利用處理器為三星的S3C2440的Mini2440開發板,完成了AMBE-2000的接口電路設計,內核驅動的編寫等,實現了通過有線局域網進行點對點的低速率實時通信,達到了設計的目的。

1 系統設計實現

1.1 系統結構圖及設計基本原理

基于MINI2440平臺的系統總體的框圖如圖1所示。其通信的終端主要就由聲碼器電路、主控制電路和網絡收發模塊3部分組成。聲碼器電路中語音編碼譯碼器采用了AMBE-2000,A/D(D/A)轉換采用了AD公司的AD73311,AMBE-2000與A/D芯片之間是個標準16位的串行SPI接口,進行PCM數據交換,主控制器采用了三星S3C2440A處理器,網絡收發模塊采用了Mini2440開發板上自帶的DM9000網卡芯片,它可以自適應10M/100M網路,連接頭用RJ45,使用普通的網線即可將開發板與路由器相連。用戶接口電路主要由NSC制造的LM音響功放LM286實現。

圖1 系統總體框圖

1.2 硬件設計實現

硬件開發平臺Mini2440的主控制芯片為samsung S3C2440A,主頻400MHz,最高可達到533MHz,128M Nand Flash和2M Nor Flash,掉電非易失,帶有TFT真彩液晶屏和觸摸屏,Mini2440開發板上ARM9處理器中運行的內核為Linux2.6.29。在本系統中,處理器S3C2440A作為主控制器主要完成總體控制、讀寫語音編譯碼器和網絡數據傳輸。

本設計的主要實現芯片AMBE-2000壓縮率可在2.0k~9.6kb/s范圍內由軟件進行調節,應用十分靈活;有語音激活檢測,插入舒適噪聲功能;能檢測和產生雙音多頻信號;前向糾錯功能。

主芯片AMBE-2000與外部的接口按功能有:與主控制器相連的接口即接收發出壓縮語音信號的信道接口,它包括CHAN_TX_DATA、CHAN_TX_CLK、CHAN_TX_STRB分別是編碼后的數據輸出口、及對應得時鐘信號輸入口、同步信號輸入口。CHAN_RX_DATA、CHAN_RX_CLK、CHAN_RX_STRB分別是待解碼的數據輸入口、對應的時鐘信號輸入口、同步信號輸入口還有一個EPR一幀就緒標識輸出口;與A/D-D/A相連的接口即接收發送數字語音信號的接口,它包括了CODE_TX_DATA、CODE_TX_CLK、CODE_TX_STRB分別是由主芯片解碼后得到的PCM數據輸出到D/A芯片的輸出口、及對應的時鐘信號輸出口和幀同步信號輸出口,CODE_RX_DATA、CODE_RX_CLK、CODE_RX_STRB則接收A/D的信號口。AMBE-2000與主機和A/D-D/A的接口圖如圖2所示。

圖2 AMBE-2000與主機和A/D-D/A的接口圖

圖2 中AMBE-2000與主機的接口7條信號線中時鐘線短接,再分別連接6個I/O口。處理器S3C2440用了GPF口,配置為通用的I/O口與AMBE-2000通信,數據口采樣頻率為8KHz數據流。一些模式控制管腳用撥碼開關進行硬件控制,可實現的軟件或硬件來設置芯片狀態。

AD-DA芯片的好壞對于實現優良語音質量的系統起主導作用,此次選擇了AD公司的AD73311使用+3.3V和+5V雙電源供電,具有高的信噪比,且內部有一個16位的A/D-D/A轉換通道,保證了高語音質量,采樣頻率最高可達64kHz且編程可變。AD73311與聲碼器的接口是SPI串行口,接口關系圖如圖2中。需將AMBE-2000的CODEC_SEL0、CODEC_SEL1管腳由硬件至10b。此時一上電,聲碼芯片送控制字到寄存器,用來進行參數的設置、模數-數模的控制、設備電源的控制等。AMBE-2000與AD73311芯片的主時鐘為16.384MHz,有一個外部的有源晶振提供。有源電壓為5V。

2 軟件實現

本設計在軟件實現方面有兩部分:一是底層字符設備驅動的編寫與實現;二是在應用層上調用底層API函數與AMBE-2000進行通信,再將數據包經過簡單的封裝通過網卡芯片在局域網上進行傳輸。

2.1 嵌入式驅動程序的設計

在嵌入式系統上,很多設備被抽象為設備文件供應用程序調用。就像普通文件一樣也可對設備文件進行打開、關閉、讀寫等系統調用操作。這種訪問接口的統一使很多應用程序可以同時支持對普通文件和設備文件的操作。這種通過設備文件訪問的設備分為兩類:字符設備和塊設備。字符設備的特點是支持基本的讀寫操作,一般沒有讀寫位置的概念,數據的輸入輸出在時間上是順序的。塊設備與字符設備最大的不同是數據的讀寫以塊為單位,且有儲存位置的概念。顯然針對AMBE-2000的設備驅動,由于其讀寫的實時性以及數據量少就采用了字符設備的形式編寫。

首先具體講下主機接收AMBE-2000數據的接口時序關系。AMBE-2000與主機的接口選擇了主動有格式的模式,數據選通信號由聲碼器提供。應注意的一點是只有有時鐘信號的前提下在數據線上才會有數據。所以在有時鐘信號的輸入下,AMBE-2000每20ms編碼器準備好一個數據包,解碼器收到一個數據包,改數據包由24個16bit字組成,其中前12個字為組成頭是一些ID狀態、控制信息,后12個字為數據語音信息??刂破髯x數據包的過程,主機每20ms接收一個數據包,AMBE-2000的EPR引腳有一個下降跳變標志有一個數據包要輸出。驅動中讀數據的時序編寫API函數過程具體如下:(1)等待略小于20ms的時間;(2)檢測AMBE-2000的CHAN_TX_STRB使能引腳,當該引腳為高電平CHAN_TX_DATA引腳上的數據;(3)判斷數據包第一個字是否為0x13ec如果不是則表示該數據幀不是有用的數據丟棄,再繼續執行(2);(4)如果是0x13ec則繼續讀取剩下的23個字。讀數據的時序圖如圖3所示:

圖3 主機讀取數據的時序圖

主機向AMBE-2000發送數據跟接收數據過程基本一致,區別在于寫使能信號線CHAN_RX_STRB上的脈沖信號由主機提供。相對于讀數據時序,主機寫時序的時候就比較靈活且比較簡單。在確保每隔20ms的前提下,可以靈活的選擇時隙發送數據來達到協調的讀寫數據,從而降低了cpu的資源消耗,提高了系統的效率。讀寫數據分別在API函數size_t read(int fd,char*buf,size_t count),size_t write(int fd,const char*buf,size_t count)中實現。在內核中調用vmalloc函數,在內核空間分配了一個5k大小的區域用于緩存數據。由于聲碼器每20ms發送接收一個數據包,每個數據包有48個字節,1s內傳輸約2.5kb,所以該緩存區可以容下1s的數據。在讀寫函數中用到了poll/select機制實現讀寫阻塞,若讀緩存區為空或寫緩存區滿了就進入阻塞狀態,等待驅動硬件動作來喚醒。

字符驅動編好之后,在drivers/char/Kconfig字符配置文件中加入改驅動的選項。

增加了上述信息后在內核配置選項中顯示了添加了的AMBE-2000字符驅動,并選擇該選項。同時內核配置的時候將網卡驅動也配置好,一般默認選上了。重新編譯內核,將內核鏡像燒入處理器S3C2410的Flash,系統即可運行。

2.2 應用層上編程實現

在應用層主要任務為在語音通信鏈路建立以后,從本端的AMBE-2000讀取數據通過局域網發送到對端,同時把從對端接收的數據發到解碼芯片解碼播放。采用Qt/E的UI開發框架編寫軟件界面如圖4所示,主要功能是實現目標IP地址的輸入,呼叫的發起及掛斷;采用Qt/E的網絡模塊實現局域網中UDP數據的發送及接收;繼承Qt/E的QThread類實現錄音線程ReadThread、放音線程WriteThread的多線程編程。從示波器中觀察得到的測試數據波形如圖5、6所示。圖5中,上下兩波形分別為數據CHAN_TX_DATA線上的時序波形和接收時鐘CHAN_TX_CLK線上的波形。從此數據波形可見數據線上是有數據在傳輸的且數據包的第一個字為0x13ec,是一個有效的數據幀;在圖6中上下兩波形分別為數據接收使能CHAN_TX_STRB線上的波形和編碼一包就緒標志EPR線上的波形,從圖中可見每隔20ms有一包數據幀就緒??梢娐暣a器芯片已正常工作,語音數據通過局域網傳輸,實現了在兩個終端之間進行全雙工、低速率通信。

圖5 編碼數據幀波形

圖6 編碼包間距

3 結束語

在處理器為S3C2440的Mini2440開發平臺上設計開發了基于AMBE-2000聲碼器為核心的低帶寬語音通信系統,可用于各種低速率條件下的實時全雙工的通信。在Mini2440開發板上還可以結合視頻流進行音視頻一起傳輸,達到實時通信。應用前景廣闊。

[1] 邱毅凌.現代嵌入式系統開發專案實務[M].北京:電子工業出版社,2009:67-79.

[2] 陳媛.一種基于AMBE-2000的語音系統的設計與實現[J].現代電子技術,2010,(16):205-207.

[3] 趙葉星,韋志棉.基于AMBE-2000的數字話音傳輸系統[J].無線電工程,2007,37(7):30-31.

[4] 孫天澤,袁文菊.嵌入式設計及Linux驅動開發指南[M].北京:電子工業出版社,2009:199-208.

[5] 石云.基于AMBE-2000的語音通訊系統[J].山西電子技術,2008,(2):47-48.

猜你喜歡
碼器內核數據包
基于Jpcap的網絡數據包的監聽與分析
對于多位置條煙條形碼統一檢測的應用研究
強化『高新』內核 打造農業『硅谷』
DataMan 370系列固定式讀碼器
基于嵌入式Linux內核的自恢復設計
Linux內核mmap保護機制研究
SmartSniff
微生物內核 生態型農資
康耐視 DataMan?8050系列手持式讀碼器
讀碼器DATAMAN 50L
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合