基于ARM9的嵌入式網(wǎng)絡(luò)語(yǔ)音通信終端
掃描二維碼
隨時(shí)隨地手機(jī)看文章
傳統(tǒng)的語(yǔ)音通信是以公共交換電話網(wǎng)(PSTN)為語(yǔ)音系統(tǒng)進(jìn)行話音交流,該系統(tǒng)以電路交換為通信基礎(chǔ),信道利用率低、通信資費(fèi)較高。而隨著通信技術(shù)和網(wǎng)絡(luò)的快速發(fā)展,越來(lái)越多的用戶采用IP網(wǎng)絡(luò)進(jìn)行語(yǔ)音通信與視頻通話,該通信系統(tǒng)采用分組交換為基礎(chǔ),具有靈活的業(yè)務(wù)擴(kuò)展能力和低廉的話費(fèi)價(jià)格。從2013年開(kāi)始到如今,工信部已經(jīng)發(fā)放了兩批虛擬運(yùn)營(yíng)商牌照,此舉必然會(huì)進(jìn)一步推動(dòng)國(guó)內(nèi)市場(chǎng)的網(wǎng)絡(luò)語(yǔ)音發(fā)展。
本文采用嵌入式處理器、以太網(wǎng)控制芯片、音頻處理芯片設(shè)計(jì)出一款語(yǔ)音通信終端,該終端通過(guò)音頻采集、播放語(yǔ)音、處理器進(jìn)行數(shù)據(jù)處理,通過(guò)網(wǎng)卡進(jìn)行數(shù)據(jù)傳送與接收,從而實(shí)現(xiàn)終端的語(yǔ)音通信功能。
1 硬件電路設(shè)計(jì)
網(wǎng)絡(luò)語(yǔ)音終端系統(tǒng)硬件由微處理器、以太網(wǎng)通信模塊、音頻處理模塊、電源等模塊組成。該終端系統(tǒng)各個(gè)模塊之間進(jìn)行數(shù)據(jù)交互的示意圖如圖1所示。
圖1 系統(tǒng)模塊數(shù)據(jù)交互圖
網(wǎng)絡(luò)語(yǔ)音終端啟動(dòng)音頻模塊后,從麥克風(fēng)拾取語(yǔ)音進(jìn)行A/D轉(zhuǎn)換采集,把語(yǔ)音信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),經(jīng)I2S總線送給處理器處理,并通過(guò)以太網(wǎng)通信模塊把數(shù)據(jù)發(fā)送到IP網(wǎng)絡(luò)上;從IP網(wǎng)絡(luò)上把數(shù)據(jù)取出,經(jīng)處理器處理后,由I2S總線送給音頻模塊進(jìn)行D/A轉(zhuǎn)換,然后把語(yǔ)音信號(hào)送給揚(yáng)聲器播放語(yǔ)音。
系統(tǒng)采用S3C2440微處理器實(shí)現(xiàn)數(shù)據(jù)處理,利用DM9000CEP以太網(wǎng)控制芯片來(lái)實(shí)現(xiàn)與IP網(wǎng)交互,并且采用UDA1341TS音頻芯片進(jìn)行語(yǔ)音采集及播放。其他接口電路比較常見(jiàn),這里不再贅述。
1.1 以太網(wǎng)通信模塊
主控芯片采用三星公司的S3C2440通用32位微處理器,該處理器采用ARM920內(nèi)核,具有低功耗、處理計(jì)算能力強(qiáng)等特點(diǎn)。以太網(wǎng)控制芯片采用DAVICOM(聯(lián)杰)公司的DM9000CEP芯片。該芯片支持16位數(shù)據(jù)傳輸,集成10/100M自適應(yīng)收發(fā)器,可以自動(dòng)協(xié)調(diào)功能將自動(dòng)完成配置以最大限度地適合其線路帶寬,且支持IEEE802.3x全雙工流量控制。
為實(shí)現(xiàn)DM9000CEP與S3C2440的連接,對(duì)兩者間的數(shù)據(jù)、地址、控制三大總線進(jìn)行連接和轉(zhuǎn)換。由于S3C2440是32位微處理器,可尋址1G的地址空間,但其只有27根地址線,理論上只能尋址2的27次方(即128M)的地址范圍。所以引出了8根BANK線(對(duì)應(yīng)nGCS0~nGCS7),用這8根線來(lái)選通和關(guān)閉不同的存儲(chǔ)器,實(shí)現(xiàn)1G地址空間的尋址。本文DM9000與S3C2440之間數(shù)據(jù)交換,是通過(guò)NGCS4線選擇基址為0x2000 0000來(lái)實(shí)現(xiàn)的。圖2給出了S3C2440與DM9000CEP的連接方法。
圖2 DM9000CEP與S3C2440的接口圖
1.2 音頻處理模塊
音頻處理芯片選用Philips公司的UDA1341TS音頻芯片,該芯片內(nèi)部集成了立體聲的ADC、DAC,可以實(shí)現(xiàn)模擬信號(hào)和數(shù)字信號(hào)的相互轉(zhuǎn)換,并可用可編程增益控制(PGA)和自動(dòng)增益控制(AGC)來(lái)對(duì)模擬信號(hào)進(jìn)行控制,該芯片還提供數(shù)字信號(hào)處理功能。微處理器通過(guò)L3總線接口對(duì)音頻芯片進(jìn)行控制。其與處理器連接圖如圖3所示。
圖3 UDA1341TS與S3C2440的接口圖
UDA1341TS音頻芯片提供一組I2S總線接口和一組L3總線接口。其中,I2S總線接口包括音頻系統(tǒng)時(shí)鐘線(SYSCLK)、位時(shí)鐘輸入信號(hào)線(BCK)、字選擇輸入線(WS)、數(shù)據(jù)輸出信號(hào)線(DATAO)、數(shù)據(jù)輸入信號(hào)線(DATAI)。而L3總線接口由時(shí)鐘線、數(shù)據(jù)線以及模式選擇線組成。S3C 2440處理器通過(guò)這兩組總線接口實(shí)現(xiàn)與UDA1341TS芯片之間的音頻數(shù)據(jù)交互及控制。
2 軟件實(shí)現(xiàn)
網(wǎng)絡(luò)語(yǔ)音終端系統(tǒng)軟件部分主要由系統(tǒng)初始化、語(yǔ)音采集播放模塊、網(wǎng)絡(luò)通信模塊等部分構(gòu)成。
2.1 系統(tǒng)初始化
使用UDA1341TS芯片與I)M9000CEP芯片之前,需要對(duì)芯片內(nèi)部的寄存器進(jìn)行初始化。
DM9000CEP芯片的初始化設(shè)置工作方式:通過(guò)CMD與ADDR2引腳相連,高電平時(shí)為數(shù)據(jù)端口,低電平時(shí)為地址端口。CS與NGCS4引腳相連,選擇DM9000CEP的端口基址為0x2000 0000,偏移300個(gè)單位。發(fā)送給DM9000的地址信息固定放在0x2000 0300上,把存放在該地址的數(shù)據(jù)放在0x2000 0304,采用此方式可對(duì)DM9000CEP內(nèi)部的寄存器進(jìn)行操作,如啟動(dòng)、復(fù)位、TX控制、RX控制以及MAC地址初始化等。其代碼如下:
UDA1341TS芯片的初始化工作需要與L3的總線連接,該L3總線是MCU通過(guò)GPB2、GPB3、GPB4三個(gè)引腳來(lái)模擬控制,用于處理器配置UDA1341內(nèi)部的寄存器。UDA1341有兩種模式:地址模式和數(shù)據(jù)傳輸模式。地址模式表示傳輸?shù)氖堑刂沸畔?,它的?位永遠(yuǎn)是000101,低兩位用來(lái)表明模式是狀態(tài)模式、數(shù)據(jù)0模式還是數(shù)據(jù)1模式,其中狀態(tài)模式主要用于配置UDA1341的各類初始狀態(tài):采用頻率、ADC、DAC等;數(shù)據(jù)模式主要用于改善音頻輸入、輸出的效果、音量大小調(diào)節(jié)等。
此外,要初始化S3C2440芯片內(nèi)部的特殊寄存器,對(duì)I2S、DMA、中斷相關(guān)的各個(gè)寄存器進(jìn)行初始化設(shè)置,以及各個(gè)引腳功能的設(shè)置,如把GPF7引腳設(shè)置為EINT7外部中斷功能引腳,當(dāng)以太網(wǎng)網(wǎng)卡接收到數(shù)據(jù),此引腳電平就會(huì)因中斷跳變以使程序進(jìn)入網(wǎng)卡中斷接收處理函數(shù)。
2.2 語(yǔ)音采集播放模塊
完成實(shí)時(shí)語(yǔ)音通話,UDA1341TS芯片在錄音同時(shí)也必須完成放音功能。數(shù)據(jù)傳輸使用兩個(gè)DMA通道。其錄音過(guò)程為:音頻芯片從麥克風(fēng)中拾取聲音信號(hào)進(jìn)行采樣、量化、編碼,把采集到的數(shù)據(jù)通過(guò)I2S總線傳給DMA1通道,并通過(guò)內(nèi)部總線傳到內(nèi)存緩沖區(qū)中,之后送給處理器處理。放音:內(nèi)存從處理器中獲取數(shù)據(jù),通過(guò)內(nèi)部總線傳給DMA2通道,之后通過(guò)I2S總線把數(shù)據(jù)傳給音頻芯片送給揚(yáng)聲器播音。通過(guò)采用DMA通道數(shù)據(jù)傳輸方式,處理器不需要花大量時(shí)間參與數(shù)據(jù)的傳輸,有充足的時(shí)間來(lái)處理其他事件。
本設(shè)計(jì)需要實(shí)現(xiàn)全雙工語(yǔ)音通信功能,本終端采用雙緩存的設(shè)計(jì)方法,緩存處理機(jī)制以錄音為例,系統(tǒng)在使用緩存2來(lái)存放音頻設(shè)備量化好的數(shù)據(jù)時(shí),CPU則處理緩存1的數(shù)據(jù),當(dāng)設(shè)備填充完緩存2,則轉(zhuǎn)向緩存1進(jìn)行填充,此時(shí)CPU處理緩存2的數(shù)據(jù),如此不斷循環(huán)交替,其處理過(guò)程如圖4所示。[!--empirenews.page--]
圖4 雙緩存處理過(guò)程
其錄音與播放過(guò)程都采用雙緩存設(shè)計(jì)方案,以錄音為例,程序流程圖如圖5所示。
圖5 錄音程序流程圖
2.3 網(wǎng)絡(luò)通信模塊
處理器首先將從麥克風(fēng)采樣的數(shù)據(jù)信號(hào)封裝成規(guī)定格式(其封裝步驟如圖6所示,封裝到14字節(jié)以太網(wǎng)層),然后把封裝好的數(shù)據(jù)交給DM 9000CEP驅(qū)動(dòng)部分的發(fā)送函數(shù)dm_tran_packet(unsigned char*datas,intlength),通過(guò)設(shè)置TCR的發(fā)送請(qǐng)求位將數(shù)據(jù)發(fā)送出去,數(shù)據(jù)發(fā)送過(guò)程就是對(duì)數(shù)據(jù)打包的過(guò)程。而數(shù)據(jù)的接收是通過(guò)DM9000CEP的網(wǎng)絡(luò)中斷函數(shù)DM9000ISR()進(jìn)行的,網(wǎng)卡每接到一個(gè)數(shù)據(jù)包將會(huì)產(chǎn)生一個(gè)中斷,進(jìn)入中斷處理函數(shù),按規(guī)定的格式從數(shù)據(jù)包中取出其語(yǔ)音數(shù)據(jù),之后數(shù)據(jù)經(jīng)處理器處理送到揚(yáng)聲器上播放外音。網(wǎng)絡(luò)各層數(shù)據(jù)封裝如圖6所示。
圖6 數(shù)據(jù)封裝示意圖
語(yǔ)音數(shù)據(jù)進(jìn)行封裝之后,不管是發(fā)送數(shù)據(jù)幀還是接收數(shù)據(jù)幀,都需要底層網(wǎng)卡驅(qū)動(dòng)函數(shù)提供服務(wù),本文以發(fā)送數(shù)據(jù)幀為例,簡(jiǎn)述底層網(wǎng)卡驅(qū)動(dòng)原理,在發(fā)送數(shù)據(jù)和接收數(shù)據(jù)過(guò)程中,特別需要注意的是關(guān)閉網(wǎng)卡中斷,以防打斷數(shù)據(jù)處理過(guò)程。DM9000CEP內(nèi)部有3 KB的SRAM用于發(fā)送數(shù)據(jù)緩存。在發(fā)送之前,數(shù)據(jù)是暫存在這個(gè)SRAM中的。當(dāng)需要連續(xù)發(fā)送時(shí),需要用DM9000CEP寄存器MWCMD賦予數(shù)據(jù)端口,這樣就指定了SRAM中的某個(gè)地址,并且在傳輸完一個(gè)數(shù)據(jù)后,指針會(huì)指向SRAM中的下一個(gè)地址,從而達(dá)到連續(xù)訪問(wèn)數(shù)據(jù)的目的。如果在此過(guò)程中到達(dá)發(fā)送數(shù)據(jù)緩沖區(qū)末尾,指針將折回緩沖區(qū)的開(kāi)頭。發(fā)送數(shù)據(jù)幀的流程圖如圖7所示。
圖7 發(fā)送數(shù)據(jù)幀流程
3 終端語(yǔ)音測(cè)試結(jié)果
使用ADS軟件將程序編譯成可執(zhí)行文件,下載到語(yǔ)音終端A和B上。在兩個(gè)終端分別接上麥克風(fēng)和耳麥進(jìn)行話音通信,通過(guò)實(shí)驗(yàn)驗(yàn)證了系統(tǒng)可以進(jìn)行清晰的語(yǔ)音對(duì)話。另外,可將終端A的麥克風(fēng)接口與函數(shù)信號(hào)發(fā)生器相接,終端B的揚(yáng)聲器接口與示波器相連。函數(shù)信號(hào)發(fā)生器將正弦信號(hào)送給終端A,其頻率為1 kHz,幅度為100mVpp。在示波器上可以看到經(jīng)放大的正弦信號(hào),其輸出信號(hào)波形如圖8所示。測(cè)試結(jié)果表明,該網(wǎng)絡(luò)語(yǔ)音終端系統(tǒng)可以應(yīng)用于遠(yuǎn)程網(wǎng)絡(luò)語(yǔ)音通信。
圖8 終端B輸出信號(hào)圖
結(jié)語(yǔ)
本文作者利用嵌入式技術(shù)開(kāi)發(fā)的網(wǎng)絡(luò)語(yǔ)音終端具有可靠性高、控制界面強(qiáng)大以及可擴(kuò)展性好的特點(diǎn),使該終端可不通過(guò)計(jì)算機(jī)、直接連上網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸,能充分利用現(xiàn)有網(wǎng)絡(luò)通道實(shí)現(xiàn)快捷的語(yǔ)音通話。