<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何基于ARM9的嵌入式網(wǎng)絡(luò)語音通信終端?

          如何基于ARM9的嵌入式網(wǎng)絡(luò)語音通信終端?

          作者: 時間:2018-08-07 來源:網(wǎng)絡(luò) 收藏

          傳統(tǒng)的語音通信是以公共交換電話網(wǎng)(PSTN)為語音系統(tǒng)進行話音交流,該系統(tǒng)以電路交換為通信基礎(chǔ),信道利用率低、通信資費較高。而隨著通信技術(shù)和網(wǎng)絡(luò)的快速發(fā)展,越來越多的用戶采用IP網(wǎng)絡(luò)進行語音通信與視頻通話,該通信系統(tǒng)采用分組交換為基礎(chǔ),具有靈活的業(yè)務(wù)擴展能力和低廉的話費價格。從 2013年開始到如今,工信部已經(jīng)發(fā)放了兩批虛擬運營商牌照,此舉必然會進一步推動國內(nèi)市場的發(fā)展。

          本文引用地址:http://www.ex-cimer.com/article/201808/385636.htm

          本文采用處理器、以太網(wǎng)控制芯片、音頻處理芯片設(shè)計出一款語音通信終端,該終端通過音頻采集、播放語音、處理器進行數(shù)據(jù)處理,通過網(wǎng)卡進行數(shù)據(jù)傳送與接收,從而實現(xiàn)終端的語音通信功能。

          1 硬件電路設(shè)計

          終端系統(tǒng)硬件由微處理器、以太網(wǎng)通信模塊、音頻處理模塊、電源等模塊組成。該終端系統(tǒng)各個模塊之間進行數(shù)據(jù)交互的示意圖如圖1所示。

          圖1 系統(tǒng)模塊數(shù)據(jù)交互圖

          終端啟動音頻模塊后,從麥克風(fēng)拾取語音進行A/D轉(zhuǎn)換采集,把語音信號轉(zhuǎn)換為數(shù)字信號,經(jīng)I2S總線送給處理器處理,并通過以太網(wǎng)通信模塊把數(shù)據(jù)發(fā)送到IP網(wǎng)絡(luò)上;從IP網(wǎng)絡(luò)上把數(shù)據(jù)取出,經(jīng)處理器處理后,由I2S總線送給音頻模塊進行D/A轉(zhuǎn)換,然后把語音信號送給揚聲器播放語音。

          系統(tǒng)采用S3C2440微處理器實現(xiàn)數(shù)據(jù)處理,利用DM9000CEP以太網(wǎng)控制芯片來實現(xiàn)與IP網(wǎng)交互,并且采用UDA1341TS音頻芯片進行語音采集及播放。其他接口電路比較常見,這里不再贅述。

          1.1 以太網(wǎng)通信模塊

          主控芯片采用三星公司的S3C2440通用32位微處理器,該處理器采用20內(nèi)核,具有低功耗、處理計算能力強等特點。以太網(wǎng)控制芯片采用 DAVICOM(聯(lián)杰)公司的DM9000CEP芯片。該芯片支持16位數(shù)據(jù)傳輸,集成10/100M自適應(yīng)收發(fā)器,可以自動協(xié)調(diào)功能將自動完成配置以最大限度地適合其線路帶寬,且支持IEEE802.3x全雙工流量控制。

          為實現(xiàn)DM9000CEP與S3C2440的連接,對兩者間的數(shù)據(jù)、地址、控制三大總線進行連接和轉(zhuǎn)換。由于S3C2440是32位微處理器,可尋址1G的地址空間,但其只有27根地址線,理論上只能尋址2的27次方(即128M)的地址范圍。所以引出了8根BANK線(對應(yīng)nGCS0~nGCS7),用這8根線來選通和關(guān)閉不同的存儲器,實現(xiàn)1G地址空間的尋址。本文DM9000與S3C2440之間數(shù)據(jù)交換,是通過NGCS4線選擇基址為0x2000 0000來實現(xiàn)的。圖2給出了S3C2440與DM9000CEP的連接方法。

          圖2 DM9000CEP與S3C2440的接口圖

          1.2 音頻處理模塊

          音頻處理芯片選用Philips公司的UDA1341TS音頻芯片,該芯片內(nèi)部集成了立體聲的ADC、DAC,可以實現(xiàn)模擬信號和數(shù)字信號的相互轉(zhuǎn)換,并可用可編程增益控制(PGA)和自動增益控制(AGC)來對模擬信號進行控制,該芯片還提供數(shù)字信號處理功能。微處理器通過L3總線接口對音頻芯片進行控制。其與處理器連接圖如圖3所示。

          圖3 UDA1341TS與S3C2440的接口圖

          UDA1341TS音頻芯片提供一組I2S總線接口和一組L3總線接口。其中,I2S總線接口包括音頻系統(tǒng)時鐘線(SYSCLK)、位時鐘輸入信號線(BCK)、字選擇輸入線(WS)、數(shù)據(jù)輸出信號線(DATAO)、數(shù)據(jù)輸入信號線(DATAI)。而L3總線接口由時鐘線、數(shù)據(jù)線以及模式選擇線組成。 S3C 2440處理器通過這兩組總線接口實現(xiàn)與UDA1341TS芯片之間的音頻數(shù)據(jù)交互及控制。

          2 軟件實現(xiàn)

          網(wǎng)絡(luò)語音終端系統(tǒng)軟件部分主要由系統(tǒng)初始化、語音采集播放模塊、網(wǎng)絡(luò)通信模塊等部分構(gòu)成。

          2.1 系統(tǒng)初始化

          使用UDA1341TS芯片與I)M9000CEP芯片之前,需要對芯片內(nèi)部的寄存器進行初始化。

          DM9000CEP芯片的初始化設(shè)置工作方式:通過CMD與ADDR2引腳相連,高電平時為數(shù)據(jù)端口,低電平時為地址端口。CS與NGCS4引腳相連,選擇DM9000CEP的端口基址為0x2000 0000,偏移300個單位。發(fā)送給DM9000的地址信息固定放在0x2000 0300上,把存放在該地址的數(shù)據(jù)放在0x2000 0304,采用此方式可對DM9000CEP內(nèi)部的寄存器進行操作,如啟動、復(fù)位、TX控制、RX控制以及MAC地址初始化等。其代碼如下:

          UDA1341TS芯片的初始化工作需要與L3的總線連接,該L3總線是MCU通過GPB2、GPB3、GPB4三個引腳來模擬控制,用于處理器配置UDA1341內(nèi)部的寄存器。UDA1341有兩種模式:地址模式和數(shù)據(jù)傳輸模式。地址模式表示傳輸?shù)氖堑刂沸畔ⅲ母?位永遠是000101,低兩位用來表明模式是狀態(tài)模式、數(shù)據(jù)0模式還是數(shù)據(jù)1模式,其中狀態(tài)模式主要用于配置 UDA1341的各類初始狀態(tài):采用頻率、ADC、DAC等;數(shù)據(jù)模式主要用于改善音頻輸入、輸出的效果、音量大小調(diào)節(jié)等。

          此外,要初始化S3C2440芯片內(nèi)部的特殊寄存器,對I2S、DMA、中斷相關(guān)的各個寄存器進行初始化設(shè)置,以及各個引腳功能的設(shè)置,如把GPF7引腳設(shè)置為 EINT7外部中斷功能引腳,當以太網(wǎng)網(wǎng)卡接收到數(shù)據(jù),此引腳電平就會因中斷跳變以使程序進入網(wǎng)卡中斷接收處理函數(shù)。

          2.2 語音采集播放模塊

          完成實時語音通話,UDA1341TS芯片在錄音同時也必須完成放音功能。數(shù)據(jù)傳輸使用兩個DMA通道。其錄音過程為:音頻芯片從麥克風(fēng)中拾取聲音信號進行采樣、量化、編碼,把采集到的數(shù)據(jù)通過I2S總線傳給DMA1通道,并通過內(nèi)部總線傳到內(nèi)存緩沖區(qū)中,之后送給處理器處理。放音:內(nèi)存從處理器中獲取數(shù)據(jù),通過內(nèi)部總線傳給DMA2通道,之后通過I2S總線把數(shù)據(jù)傳給音頻芯片送給揚聲器播音。通過采用DMA通道數(shù)據(jù)傳輸方式,處理器不需要花大量時間參與數(shù)據(jù)的傳輸,有充足的時間來處理其他事件。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();