當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]本文介紹的嵌入式系統(tǒng)基于該芯片,采用ARM處理器及嵌入式Linux操作系統(tǒng),實現(xiàn)了較低成本的嵌入式多路語音記錄器。

摘要AC48304C-C是Audiocodes公司的一款四通道VOIP語音處理器,大量地應(yīng)用于各種小型語音網(wǎng)關(guān)中,實現(xiàn)多種語音編碼、解碼及信令處理等功能。本文介紹的嵌入式系統(tǒng)基于該芯片,采用ARM處理器及嵌入式Linux操作系統(tǒng),實現(xiàn)了較低成本的嵌入式多路語音記錄器。數(shù)據(jù)采集在內(nèi)核級別的用戶進(jìn)程中實現(xiàn),從而保證了系統(tǒng)的實時性。
關(guān)鍵詞:AC48304;嵌入式;S3C2410;Linux;內(nèi)核空間

1. 引言

    數(shù)字多路語音記錄器在安全、監(jiān)控方面有很多應(yīng)用。一些傳統(tǒng)的設(shè)計方案基于工控機(jī),用數(shù)據(jù)采集卡實現(xiàn)語音的A/D轉(zhuǎn)換,用軟件實現(xiàn)語音編解碼,這種方案成本高、功耗大。如果采用嵌入式的設(shè)計方案,可以實現(xiàn)同樣的功能,并且具有低成本,低功耗的特點。

    普通的低成本嵌入式處理器性能不高,不足以實現(xiàn)多路語音的實時編碼、解碼,需要用專門的語音處理芯片完成這一工作。基于DSP自主設(shè)計語音編碼器是一種方法,但工作量大。AC48304廣泛應(yīng)用于各種小型VOIP網(wǎng)關(guān)中,價格低廉,是一種很好的替代方案。同時AC48304還具有DTMF識別和靜音檢測等功能,便于實現(xiàn)電話號碼識別和語音的自動記錄。

    ARM是一種應(yīng)用廣泛的嵌入式處理器,Samsung、Atmel等廠家生產(chǎn)的ARM處理器接口豐富,技術(shù)支持全面。ARM處理器價格低、性價比高,向下取代了大量單片機(jī)的應(yīng)用,向上滲透高端嵌入式處理器的市場。在本多路語音記錄器中,采用了Samsung的ARM9處理器S3C2410,操作系統(tǒng)則采用了嵌入式Linux。

2. 系統(tǒng)結(jié)構(gòu)

    語音記錄器包括語音處理模塊、ARM系統(tǒng)模塊、硬盤記錄模塊、網(wǎng)絡(luò)接口模塊幾個部分。為使系統(tǒng)配置靈活,將系統(tǒng)設(shè)計為主控板和擴(kuò)展板兩個部分,在主控板上實現(xiàn)16路語音通道,另設(shè)計一個16通道的語音擴(kuò)展板,整個系統(tǒng)可以用4的倍數(shù)進(jìn)行語音通道的擴(kuò)展,最多達(dá)到32個語音通道。計算機(jī)控制部分集成S3C2410 處理器、64MB SDRAM及16MB 的FLASH,構(gòu)成一個嵌入式小系統(tǒng)。

    語音CODEC采用AMD的LE58QL021,該器件是3.3V單電壓用戶線語音處理器,在小型語音網(wǎng)關(guān)中是AC48304的常用搭配,支持4通道語音AD/DA,支持E1 PCM Highway,能與AC48304實現(xiàn)無縫連接。LE58QL021的工作模式可軟件編程控制,ARM通過MPI(Microprocessor Interface)串行控制總線設(shè)置LE58QL021的各種工作參數(shù)。

    基于DM9000網(wǎng)絡(luò)控制器,系統(tǒng)實現(xiàn)10/100Mbps自適應(yīng)以太網(wǎng)接口,Linux操作系統(tǒng)提供設(shè)備驅(qū)動支持。IDE接口則是由一片CPLD實現(xiàn),硬盤用于語音的本地記錄。主要部分電路原理見圖1。

圖1 語音處理模塊的硬件電路原理圖

3. AC48304語音處理器

    AC48304是AudioCodes公司基于DSP設(shè)計的一個四通道語音處理器,支持多種標(biāo)準(zhǔn)、多種碼率的G系列語音編碼器,如G.723.1,G.711,G.726和G.729等,支持T.38傳真中繼和其他語音信號處理功能。在系統(tǒng)中,ARM通過CPU局部總線實現(xiàn)對AC48304的控制及數(shù)據(jù)交換。AC48304與LE58QL021之間通過E1 PCM Highway接口實現(xiàn)多通道數(shù)字語音接口。E1接口由2.048Mhz時鐘驅(qū)動,有0~31共32個8位時隙,工作時序如圖2所示。

圖2  PCM Highway時序

    AC48304是一種專用的語音處理DSP芯片,需要運(yùn)行相應(yīng)的DSP程序。正常運(yùn)行前,  AC48304有兩個程序需要下載:kernel(內(nèi)核)程序和application(應(yīng)用)程序。kernel程序是個只有幾百字節(jié)的小程序,完成DSP的初始化工作,為下載應(yīng)用程序做準(zhǔn)備。application程序則完成AC48304的所有功能,在kernel程序程序下載完成后,才可以下載application程序。AC48304有4個工作模式:內(nèi)核下載模式、程序下載模式、初始化模式、運(yùn)行模式。其中運(yùn)行模式有兩個狀態(tài):空閑狀態(tài)和激活狀態(tài),用戶只能在空閑狀態(tài)改變芯片的工作參數(shù)。

4. 軟件設(shè)計

4.1Linux中的驅(qū)動程序設(shè)計

    操作系統(tǒng)采用的是嵌入式Linux操作系統(tǒng)。Linux具有效率高、內(nèi)核小的優(yōu)點,且開放源代碼,完全免費(fèi)。在Linux操作系統(tǒng)下,應(yīng)用程序不能直接訪問硬件,盡管Linux在ARM平臺上有較完整的板級支持包,但在該系統(tǒng)的開發(fā)工作中仍然要完成部分設(shè)備的驅(qū)動程序設(shè)計,包括AC48304驅(qū)動程序、LE58QL021驅(qū)動程序、S-EEPROM驅(qū)動程序等。

    設(shè)備驅(qū)動程序要為應(yīng)用軟件提供設(shè)備打開、關(guān)閉、設(shè)備控制及數(shù)據(jù)讀/寫等接口, 即一些類似于open、close、read和write的函數(shù),在主程序中直接采用文件讀寫的方式實現(xiàn)數(shù)據(jù)的收發(fā)。LE58QL021與ARM處理器之間采用MPI串行控制總線,MPI驅(qū)動接口結(jié)構(gòu)定義如下:

       static file_operations mpi_ctl_fops = {

       ioctl:       mpi_ctl_ioctl, //設(shè)備控制

       open:       mpi_open, //打開設(shè)備

       close:      mpi_ close, //關(guān)閉設(shè)備

}

    Linux提供ioremap函數(shù)將I/O內(nèi)存資源的物理地址映射到核心虛地址空間,然后可像操作寄存器那樣進(jìn)行數(shù)據(jù)讀寫。編寫驅(qū)動程序的時候,必須提供兩個函數(shù),一個是module_init(),insmod在加載此模塊的時候自動調(diào)用,負(fù)責(zé)進(jìn)行設(shè)備驅(qū)動程序的初始化工作,一個函數(shù)是module_exit,在模塊被卸載時調(diào)用,負(fù)責(zé)進(jìn)行設(shè)備驅(qū)動程序的清除工作。

4.2 AC48304的數(shù)據(jù)讀寫實現(xiàn)

    每個AC48304可同時進(jìn)行4個通道的語音編/解碼,片內(nèi)有數(shù)據(jù)緩存區(qū),編碼后的語音數(shù)據(jù)先存儲在各通道的緩存區(qū),然后依次拷貝到輸出緩沖區(qū)。表1為本系統(tǒng)支持的幾種主要語音編碼格式的相關(guān)參數(shù)。其中G.711的A/u律數(shù)據(jù)量最大為64kbps,每個通道每秒有8000字節(jié)的數(shù)據(jù),而AC48304的數(shù)據(jù)讀取區(qū)的有效量為80字節(jié),即每秒鐘要進(jìn)行100次的讀取操作,對每個AC48304而言每秒鐘要進(jìn)行400次讀取操作才能保證數(shù)據(jù)及時讀取。由于語音編碼包是以恒定的速率產(chǎn)生的,因此每2.5毫秒必須對DSP進(jìn)行一次讀取操作。本平臺的Linux內(nèi)核中,進(jìn)程調(diào)度算法的時間單位為10毫秒,在進(jìn)程中執(zhí)行數(shù)據(jù)的讀取操作很難保證數(shù)據(jù)及時讀取,如果某個服務(wù)進(jìn)程或者是本進(jìn)程中的某個控制操作執(zhí)行時間過長,就會造成語音數(shù)據(jù)的丟失。

表1:語音數(shù)據(jù)特性

編碼

方式

每幀大小(byte)

每幀時長(ms)

碼率

(kbps)

G.711 A/u

80

10

64

G.726(24k)

30

10

24

G.726(40k)

50

10

40

G.723.1(5.3)

20

30

5.3

G.723.1(6.3)

24

30

6.3

G.729

20

20

8

    Linux中程序運(yùn)行的環(huán)境分為內(nèi)核空間和用戶空間,內(nèi)核空間的程序優(yōu)先級高于用戶空間。為保證編碼數(shù)據(jù)被及時讀取,需在內(nèi)核級別的進(jìn)程中定時讀取AC48304產(chǎn)生的數(shù)據(jù)。有兩種方式可將用戶程序加入到內(nèi)核空間中運(yùn)行:修改Linux內(nèi)核源代碼,直接將用戶程序代碼編譯到內(nèi)核中;利用Linux的模塊機(jī)制,動態(tài)的將用戶程序代碼添加到內(nèi)核空間中運(yùn)行。第一種方法實現(xiàn)難度比較大,而且容易出錯。第二種方法實現(xiàn)難度小,效果與第一種相同,本系統(tǒng)中采用的是第二種方法。

    將AC48304的讀取操作作為驅(qū)動程序進(jìn)行設(shè)計,使用insmod命令動態(tài)加載到內(nèi)核中去,在定時中斷的服務(wù)函數(shù)中讀取AC48304的數(shù)據(jù)。S3C2410中有5個用戶可編程的時鐘中斷,中斷優(yōu)先級別高,中斷的頻率可編程控制,其中時鐘中斷Timer3已用于DMA控制,Tmer4用于進(jìn)程調(diào)度。本系統(tǒng)的程序設(shè)計中使用Timer2,通過配置相關(guān)控制寄存器將Timer2的中斷頻率設(shè)為500HZ,適當(dāng)?shù)脑黾幼x取查詢操作頻率,保證數(shù)據(jù)及時讀取。中斷服務(wù)函數(shù)是由內(nèi)核來執(zhí)行的,優(yōu)先級高于用戶程序,可保證讀取操作的實時性。為AC48304的每個通道分配一個數(shù)據(jù)緩沖區(qū),定時中斷函數(shù)中讀取的數(shù)據(jù)先保存在緩沖區(qū)中,用戶程序通過讀取該緩沖區(qū)獲得語音數(shù)據(jù),這樣對外部用戶而言,語音數(shù)據(jù)沒有丟失,語音延遲在毫秒級別,完全可以滿足需求。

4.3 應(yīng)用軟件設(shè)計

    將應(yīng)用程序及驅(qū)動程序文件加入文件系統(tǒng)中,修改有關(guān)啟動的配置文件,使得系統(tǒng)啟動完畢時自動加載目標(biāo)程序,這樣每次設(shè)備啟動時將自動進(jìn)入應(yīng)用程序。主程序流程如圖3所示,主程序的功能主要是:

u    系統(tǒng)配置:系統(tǒng)的配置表存儲在一片S-EEPROM中,配置表可以通過串口終端或者網(wǎng)絡(luò)在線配置。

u    初始化系統(tǒng):包括向DSP下載內(nèi)核程序和應(yīng)用程序,啟動DSP及LE58QL021等。

u    語音數(shù)據(jù)讀寫:通過DSP的HPI總線讀取DSP數(shù)據(jù)實現(xiàn)語音采集,通過HPI把數(shù)據(jù)寫入DSP實現(xiàn)語音回放。

u     數(shù)據(jù)存儲:根據(jù)錄音計劃將需要錄音的語音數(shù)據(jù)保存到硬盤中。

u     命令處理:包括選擇語音通道命令、回放命令、校時命令、增益調(diào)節(jié)命令、配置表傳輸命令、錄音數(shù)據(jù)上傳命令等。

圖3.主程序流程圖

5. 結(jié)束語

     本記錄器最多支持32路語音實時處理,在硬盤上實現(xiàn)長時間錄音,并可通過10/100Mbps以太網(wǎng)實現(xiàn)數(shù)據(jù)上傳和管理。經(jīng)測試本記錄器可以很好的完成語音數(shù)據(jù)的采集、壓縮、存儲、解壓縮和回放,內(nèi)核級別的用戶進(jìn)程運(yùn)行正常,保證了整個系統(tǒng)的實時性。該語音記錄器具有低成本、低功耗、結(jié)構(gòu)精簡、使用簡單的特點,具有很好的實用價值。

    本文作者創(chuàng)新點:采用嵌入式實現(xiàn)系統(tǒng)設(shè)計,操作系統(tǒng)及應(yīng)用軟件完全固化在FLASH中,實現(xiàn)了高穩(wěn)定性;相對基于工控機(jī)的語音記錄器,本文設(shè)計的系統(tǒng)具有低成本、低功耗的特點;在本文中創(chuàng)新性地將VOIP語音處理器AC-48304應(yīng)用在多路語音記錄器中;在軟件是設(shè)計中,在LINUX操作系統(tǒng)內(nèi)核空間實現(xiàn)數(shù)據(jù)采集功能,從而保證了系統(tǒng)數(shù)據(jù)采集的實時性要求。

參考文獻(xiàn):

[1].華恒公司. HHARM2410平臺手冊. 2004.

[2].AC4830xC-C Vopp Designer's Manual.pdf. 2003.

[3].吳姣梅,李紅艷,吳保榮,嚴(yán)明.改善嵌入式Linux實時性能的方法研究.微計算機(jī)信息.2006年,02期,72頁.

[4].K.Wall,等.GUN/LINUX編程指南.王勇等譯,北京:清華大學(xué)出版社,2000.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉