国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Mini2440的低帶寬語(yǔ)音通信系統(tǒng)

2011-09-04 06:09章堅(jiān)武
關(guān)鍵詞:碼器內(nèi)核數(shù)據(jù)包

沈 磊,章堅(jiān)武

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

0 引言

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

1 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)

1.1 系統(tǒng)結(jié)構(gòu)圖及設(shè)計(jì)基本原理

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

圖1 系統(tǒng)總體框圖

1.2 硬件設(shè)計(jì)實(shí)現(xiàn)

硬件開發(fā)平臺(tái)Mini2440的主控制芯片為samsung S3C2440A,主頻400MHz,最高可達(dá)到533MHz,128M Nand Flash和2M Nor Flash,掉電非易失,帶有TFT真彩液晶屏和觸摸屏,Mini2440開發(fā)板上ARM9處理器中運(yùn)行的內(nèi)核為L(zhǎng)inux2.6.29。在本系統(tǒng)中,處理器S3C2440A作為主控制器主要完成總體控制、讀寫語(yǔ)音編譯碼器和網(wǎng)絡(luò)數(shù)據(jù)傳輸。

本設(shè)計(jì)的主要實(shí)現(xiàn)芯片AMBE-2000壓縮率可在2.0k~9.6kb/s范圍內(nèi)由軟件進(jìn)行調(diào)節(jié),應(yīng)用十分靈活;有語(yǔ)音激活檢測(cè),插入舒適噪聲功能;能檢測(cè)和產(chǎn)生雙音多頻信號(hào);前向糾錯(cuò)功能。

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

圖2 AMBE-2000與主機(jī)和A/D-D/A的接口圖

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

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

2 軟件實(shí)現(xiàn)

本設(shè)計(jì)在軟件實(shí)現(xiàn)方面有兩部分:一是底層字符設(shè)備驅(qū)動(dòng)的編寫與實(shí)現(xiàn);二是在應(yīng)用層上調(diào)用底層API函數(shù)與AMBE-2000進(jìn)行通信,再將數(shù)據(jù)包經(jīng)過簡(jiǎn)單的封裝通過網(wǎng)卡芯片在局域網(wǎng)上進(jìn)行傳輸。

2.1 嵌入式驅(qū)動(dòng)程序的設(shè)計(jì)

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

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

圖3 主機(jī)讀取數(shù)據(jù)的時(shí)序圖

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

字符驅(qū)動(dòng)編好之后,在drivers/char/Kconfig字符配置文件中加入改驅(qū)動(dòng)的選項(xiàng)。

增加了上述信息后在內(nèi)核配置選項(xiàng)中顯示了添加了的AMBE-2000字符驅(qū)動(dòng),并選擇該選項(xiàng)。同時(shí)內(nèi)核配置的時(shí)候?qū)⒕W(wǎng)卡驅(qū)動(dòng)也配置好,一般默認(rèn)選上了。重新編譯內(nèi)核,將內(nèi)核鏡像燒入處理器S3C2410的Flash,系統(tǒng)即可運(yùn)行。

2.2 應(yīng)用層上編程實(shí)現(xiàn)

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

圖5 編碼數(shù)據(jù)幀波形

圖6 編碼包間距

3 結(jié)束語(yǔ)

在處理器為S3C2440的Mini2440開發(fā)平臺(tái)上設(shè)計(jì)開發(fā)了基于AMBE-2000聲碼器為核心的低帶寬語(yǔ)音通信系統(tǒng),可用于各種低速率條件下的實(shí)時(shí)全雙工的通信。在Mini2440開發(fā)板上還可以結(jié)合視頻流進(jìn)行音視頻一起傳輸,達(dá)到實(shí)時(shí)通信。應(yīng)用前景廣闊。

[1] 邱毅凌.現(xiàn)代嵌入式系統(tǒng)開發(fā)專案實(shí)務(wù)[M].北京:電子工業(yè)出版社,2009:67-79.

[2] 陳媛.一種基于AMBE-2000的語(yǔ)音系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010,(16):205-207.

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

[4] 孫天澤,袁文菊.嵌入式設(shè)計(jì)及Linux驅(qū)動(dòng)開發(fā)指南[M].北京:電子工業(yè)出版社,2009:199-208.

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

猜你喜歡
碼器內(nèi)核數(shù)據(jù)包
基于Jpcap的網(wǎng)絡(luò)數(shù)據(jù)包的監(jiān)聽與分析
對(duì)于多位置條煙條形碼統(tǒng)一檢測(cè)的應(yīng)用研究
強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
DataMan 370系列固定式讀碼器
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
Linux內(nèi)核mmap保護(hù)機(jī)制研究
SmartSniff
微生物內(nèi)核 生態(tài)型農(nóng)資
康耐視 DataMan?8050系列手持式讀碼器
讀碼器DATAMAN 50L