<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM7TDMI的SoC語(yǔ)音處理系統的設計

基于A(yíng)RM7TDMI的SoC語(yǔ)音處理系統的設計

作者: 時(shí)間:2005-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:片內AC97模塊和片外CODEC-UCB1400,采用ITU-T的G.721算法統;提出一種低端RISC核的系統方案。該方案結合的片內eSRAM模塊進(jìn)行性能優(yōu)化;通過(guò)在流片后的實(shí)際樣機上驗證,編碼速率為19.88 KB/s,解碼速率為22.68 KB/s,達到了實(shí)時(shí)性要求。


關(guān)鍵詞: G.721 雙Buffer機制 eSRAM優(yōu)化

引 言

  隨著(zhù)微電子和計算機技術(shù)的高速發(fā)展,許多嵌入式應用系統應運而生。其中,各種語(yǔ)音處統不斷被開(kāi)發(fā)出來(lái),在各行業(yè)得到廣泛應用,如語(yǔ)音報站器、自動(dòng)解說(shuō)裝置、采訪(fǎng)錄音筆等,為人類(lèi)的生產(chǎn)、生活提供了極大的便利。本文東南大學(xué)國家專(zhuān)用集成電路系統工程技術(shù)研究中心自主研發(fā)的內核的32位嵌入式――SEP3203器,采用G.721標準ADPCM算法,實(shí)現了語(yǔ)音信號的軟件實(shí)時(shí)編解碼,為語(yǔ)音應用提供了一種有效的嵌入式解決方案。

1 G.721標準概述

  1937年,A.H.Reeves提出脈沖編碼調制(PCM),開(kāi)創(chuàng )了語(yǔ)音數字化通信的歷程。CCITT在20世紀80年代初,開(kāi)始研究低于64 Kb/s的非PCM編碼算法,先后制定通過(guò)了G.721、G.728、 G.729等編碼標準。其中,G.721協(xié)議作為ADPCM的典型算法,不僅具有與PCM近乎相同的語(yǔ)音質(zhì)量,而且有簡(jiǎn)單的算法結構和優(yōu)良的抗誤碼性能,在衛星、海纜及便攜式數字語(yǔ)音設備等方面都有廣泛應用。G.721算法的簡(jiǎn)化框圖如圖1所示。

  編碼過(guò)程:

 ?、?計算Sl(k)與自適應預測器輸出Se(k)的差值E(k)=Sl(k)-Se(k);
 ?、?通過(guò)自適應量化模塊對E(k)進(jìn)行量化,得到ADPCM碼字I(k);
 ?、?通過(guò)自適應反量化模塊對I(k)計算得到量化差分預測信號Dq(k);
 ?、?根據重建信號Sr(k)=Se(k)+Dq(k)和Dq(k)更新預測濾波器系數;?
 ?、?利用新的系數,計算得到Se(k+1),重復上述5個(gè)步驟,壓縮下一個(gè)語(yǔ)音采樣數據。

  解碼過(guò)程:

 ?、?通過(guò)自適應反量化和自適應預測得到Dq(k)和Se(k),得到語(yǔ)音重建信號Sr(k);?
 ?、?對重建信號Sr(k)進(jìn)行PCM格式轉換,得到PCM碼字Sp(k);

  
              圖1 G.721編碼器和解碼器簡(jiǎn)化框圖

 ?、?采用與編碼器相同的方法更新預測濾波器系數;
 ?、?為實(shí)現雙向通信,同步調整Sp(k);
 ?、?利用新的濾波器系數,重復上述5個(gè)步驟,解碼下一個(gè)I(k)。

2 芯片簡(jiǎn)介

  SEP3203芯片為系統核心,總體結構框圖如圖2所示。該芯片是東南大學(xué)國家專(zhuān)用集成電路系統工程技術(shù)研究中心自主的基于A(yíng)RM7TDMI的32位SoC,采用AMBA2.0標準,0.25μmCMOS工藝,主要面向嵌入式中低端手持設備。片上提供AC97控制器、外存接口EMI、6通道DMAC、TIMER、PMU、INTC等模塊。其中,語(yǔ)音系統使用的模塊有:EMI,負責控制對外存的訪(fǎng)問(wèn);片上存儲器eSRAM,用于優(yōu)化耗時(shí)的核心代碼;AC97,提供AC97標準的音頻接口;DMAC,用于實(shí)現大數據量的DMA傳送。

  
                圖2 SEP3203芯片結構框圖

3 系統設計

  3.1 硬件系統

  硬件系統框圖如圖3所示。虛線(xiàn)框內是片內模塊;框外為片外器件,包括外存(SDRAM/SRAM/Flash等)、CODEC等。Philips公司的UCB1400作為CODEC。以下為系統工作過(guò)程。?

  
                圖3 語(yǔ)音處理硬件系統框圖

 ?、?編碼。CODEC采樣語(yǔ)音數據,暫存在A(yíng)C97的輸入FIFO中。然后,由DMAC通過(guò)中斷方式,將數據傳送到指定存儲區域。在A(yíng)RM7TDMI的控制下,運行G.721編碼程序,將語(yǔ)音PCM數據壓縮為ADPCM碼。
 ?、?解碼。運行G.721解碼程序,把存儲器中的?ADPCM碼解碼為PCM碼。每解滿(mǎn)1幀數據后,由DMAC通過(guò)中斷方式把數據傳送到AC97的輸出FIFO,通過(guò)CODEC驅動(dòng)放音設備(耳機、揚聲器等)。

  根據語(yǔ)音實(shí)時(shí)性的需要,設置UCB1400采樣速率為8 kb/s。該芯片用16位表示一個(gè)采樣點(diǎn),故采樣速率為128 kb/s。編碼后,每個(gè)采樣點(diǎn)用4位表示,故傳輸率為32 kb/s。

  3.2 軟件系統

  軟件流程如圖4所示。每幀數據為64個(gè)采樣點(diǎn),共計為128字節、16位表示的PCM碼,編碼后為32字節、4位表示的ADPCM碼。

    
                圖4 編解碼的軟件流程

 ?。?) 編碼

  首先對系統初始化,包括對AC97、CODEC、DMAC等模塊配置,以及有關(guān)狀態(tài)變量的初始化。然后,采樣第1幀語(yǔ)音數據,采樣結束進(jìn)入DMA中斷,在中斷處理中再次配置DMAC,觸發(fā)新的采樣傳輸,并對剛采樣的數據編碼。由于編碼由內核執行,采樣由CODEC和DMA完成,故對第K幀編碼和對第K+1幀采樣是并發(fā)進(jìn)行的。

 ?。?) 解碼

  同編碼過(guò)程類(lèi)似,首先對系統進(jìn)行初始化,然后解碼第1幀音頻數據。解碼完配置DMAC,觸發(fā)數據傳送至AC97輸出FIFO,通過(guò)放音設備播放錄音。同樣,解碼第K+1幀數據與播放第K幀數據并發(fā)進(jìn)行。

  本設計采用“雙Buffer”機制緩沖數據?!半pBuffer”是指:開(kāi)辟兩個(gè)幀緩沖區為Buf0、Buf1,緩沖標志Flg初始為0。編碼時(shí),采樣第1幀數據,DMA從AC97輸入FIFO向Buf0傳輸數據,傳輸完后,設置Flg=1,編碼器從Buf0中取數據編碼;同時(shí),DMA向Buf1中傳送新數據。周而復始,每幀數據采樣完,設置Flg=!Flg,編碼器從Buf!Flg緩沖區取數據編碼,DMA傳送采樣數據的目的地址為Buf Flg,從而實(shí)現了第K+1幀數據采樣和第K幀數據編碼并發(fā)。只要編碼速度高于采樣速度,就不會(huì )出現數據的覆蓋。處理過(guò)程如下(解碼時(shí)的情況類(lèi)似):

  Flg=0;?
  Psmp=Buf Flg;?
  Run_Sample(Psmp);//采樣第1幀數據?
  While(1) { ?
    Flg=! Flg;?
    Penc=Buf !Flg;//編碼指針指向緩沖區Buf !Flg??
    Psmp=Buf Flg;//采樣指針指向緩沖區Buf Flg??
    Run_Sampler(Psmp); Run_Encoder(Penc); ?
             //啟動(dòng)采樣器和編碼器,兩者并發(fā)?
  }


4 性能優(yōu)化

  語(yǔ)音處理的實(shí)時(shí)性要求很高,否則,若數據處理速度跟不上語(yǔ)音變化速度,就會(huì )在錄音時(shí)出現剛采樣的數據覆蓋了先采入但未處理的數據;在放音時(shí),出現播放的速度比實(shí)際語(yǔ)音慢。當然,如果用足夠大的緩沖,可以避免錄音出現的問(wèn)題,但放音出現的問(wèn)題是無(wú)法避免的。同時(shí),鑒于存儲資源對于嵌入式系統是很寶貴的,故此方案沒(méi)有實(shí)際價(jià)值。上文介紹的“雙Buffer”機制,能夠使采樣和編碼之間、解碼和播放之間分別互不影響、并發(fā)執行,易于控制;但要滿(mǎn)足實(shí)時(shí)性要求,還要使編解碼速度符合采樣和播放的要求。語(yǔ)音速率是8 KB/s,而系統中一個(gè)采樣點(diǎn)用16位表示,故編解碼速度不能低于16 KB/s(即每秒至少編碼16 KB的PCM碼,每秒至少解出16 KB的PCM碼)。表1是未對系統優(yōu)化前,測試裸機無(wú)操作系統情況下,處理512 KB的PCM碼(對應128 KB的ADPCM碼)所用時(shí)間。該測試是使用SoC內部定時(shí)器TIMER進(jìn)行的,見(jiàn)參考文獻[1]。測試結果顯示,系統優(yōu)化前沒(méi)有滿(mǎn)足語(yǔ)音實(shí)時(shí)性要求。

    
                 表1 優(yōu)化前編解碼速度

  到此,系統目標代碼都是在SDRAM中運行的。SEP3203提供了一個(gè)很有用的模塊――片內高速存儲器eSRAM。eSRAM存取速度非???,可達到0.89 MIPS/MHz,所以對系統性能有很大的優(yōu)化作用,而SDRAM卻只能有其性能的1/3左右。表2是在50 MHz時(shí)鐘、32位ARM指令情況下,SDRAM和eSRAM的性能比較。各項指標的意義見(jiàn)參考文獻[1]。

    
                表2 eSRAM和SDRAM性能比較
  
  但是,SEP3203的20K的eSRAM資源是有限的,不可能也不必要將所有代碼都放在其中執行。ARM集成開(kāi)發(fā)工具提供了Profile功能,可以對整個(gè)程序進(jìn)行統計分析,得到各部分代碼(主要以標準C函數為單位)所耗時(shí)間占系統總時(shí)間的百分比。通過(guò)對軟件系統做Profile分析,得到各編解碼庫函數在總編解碼時(shí)間內所占的百分比,其中主要部分如表3所列。

    
                表3 最耗費時(shí)間的庫函數

  以上三個(gè)函數在總編解碼時(shí)間內占用了近80 %的時(shí)間(Quan()、Fmult()、Update()的功能分別為量化表查找、定點(diǎn)化的浮點(diǎn)數乘法、狀態(tài)變量更新),對這些代碼優(yōu)化就會(huì )明顯提高編解碼速度。把這些函數代碼整合到文件rec_esram.c中,然后加載remap.scf文件進(jìn)行內存映像(*.scf文件是ARM ADS集成開(kāi)發(fā)工具提供的鏈接腳本文件)。下面是remap.scf文件的內容:

  FLASH 0x30002000 0x1000000
  {?
    FLASH 0x30002000?
            //系統初始化入口及其他代碼存放地址
    {?
      init_ice.o (INIT, +First)?
      * (+RO,+RW,+ZI)?
    }?
    32bitRAM 0x00000000 //中斷向量表入口地址?
    {?
      boot_gfd.o (BOOT, +First)?
    } ?
    ESRAM 0x1fff0000 0x600 //核心庫代碼存放地址,在eSRAM中?
    {?
      rec_esram.o (+RO,+RW,+ZI)?
    }?
    /*堆棧設置部分*/
  }

  進(jìn)行內存映像后,rec_esram.c的目標代碼rec_esram.o(約為1.5KB)就加載到eSRAM(起始地址為0x1fff0000)中執行了。表4是經(jīng)過(guò)eSRAM優(yōu)化后編解碼速度測試結果。

    
              表4 eSRAM優(yōu)化后的編解碼速度

  在有操作系統的情況下,也對語(yǔ)音系統性能進(jìn)行了測試,如表5所列。該操作系統為東南大學(xué)專(zhuān)用集成電路系統工程技術(shù)與研究中心自主研發(fā)的面向嵌入式應用的ASIXOS,提供圖形用戶(hù)界面、網(wǎng)絡(luò )、時(shí)鐘、實(shí)時(shí)中斷管理等支持和清晰的應用程序開(kāi)發(fā)接口。語(yǔ)音系統為該OS環(huán)境中的一個(gè)應用,有獨立的用戶(hù)界面和底層服務(wù)。限于篇幅,本文不再詳述。

   從以上測試可以看出,在經(jīng)過(guò)eSRAM優(yōu)化后,無(wú)論是在裸機上還是在有操作系統的情況下,編解碼速度都能滿(mǎn)足語(yǔ)音實(shí)時(shí)性的需要,達到了設計要求。

    
              表5 eSRAM優(yōu)化后的編解碼速度

結語(yǔ)

  在設計一款面向多媒體應用的嵌入式系統時(shí),實(shí)時(shí)性能非常重要。本文提出了一種基于A(yíng)RM7TDMI內核的SoC中語(yǔ)音處統的設計方案,并根據該款SoC具有eSRAM的特點(diǎn),進(jìn)行了系統性能的優(yōu)化。對樣機的測試表明系統在主頻70 MHz、有操作系統的情況下編碼速率為19.88 KB/s,解碼速率為22.68 KB/s,達到了語(yǔ)音系統的實(shí)時(shí)性要求。而且,如果語(yǔ)音處理作為樣機的子系統應用,其硬件設計也支持MP3播放和LCD觸摸屏的功能,實(shí)現了系統板面積減小、整機成本降低的目的,不失為一種高效價(jià)廉的設計方案。

                 參考文獻

1 凌明.基于A(yíng)RM7TDMI的低成本手持多媒體設備處理器.南京:東南大學(xué)國家ASIC工程中心,2004
2 茍大舉,楊啟剛.基于A(yíng)DPCM 編碼的語(yǔ)音錄放系統開(kāi)發(fā)平臺.四川大學(xué)學(xué)報(自然科學(xué)版), 1998.4, Vol.35 No.2:178~182
3 傅秋良,袁宗寶.純軟件實(shí)現ADPCM語(yǔ)音壓縮算法.電信科學(xué), 1994.10, Vol.10 No.10:21~24
4 Gibson Jerry D. 多媒體數字壓縮原理與標準.李煜暉譯.北京:電子工業(yè)出版社,2002
5 CCITT. Recommendation G.721: A 32kbit/s Adaptive Differential Pulse?Code?Modulation, Red Book,1984
6 CCITT. Recommendation G.711: General Aspects of Digital Transmission Systems and Terminal Equipments, Blue Book, 1988

張兵:碩士研究生,主要研究方向為嵌入式多媒體音頻技術(shù)研究。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>