《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM7的SoC語音處理系統(tǒng)的設(shè)計(jì)
基于ARM7的SoC語音處理系統(tǒng)的設(shè)計(jì)
摘要: 在設(shè)計(jì)一款面向多媒體應(yīng)用的嵌入式系統(tǒng)時(shí),實(shí)時(shí)性能非常重要,。本文提出了一種基于ARM7TDMI內(nèi)核的SoC中語音處理系統(tǒng)的設(shè)計(jì)方案,,并根據(jù)該款SoC具有eSRAM的特點(diǎn),,進(jìn)行了系統(tǒng)性能的優(yōu)化,。對樣機(jī)的測試表明系統(tǒng)在主頻70 MHz、有操作系統(tǒng)的情況下編碼速率為19.88 KB/s,,解碼速率為22.68 KB/s,,達(dá)到了語音系統(tǒng)的實(shí)時(shí)性要求。而且,,如果語音處理作為樣機(jī)的子系統(tǒng)應(yīng)用,,其硬件設(shè)計(jì)也支持MP3播放和LCD觸摸屏 的功能,實(shí)現(xiàn)了系統(tǒng)板面積減小,、整機(jī)成本降低的目的,,不失為一種高效價(jià)廉的設(shè)計(jì)方案。
關(guān)鍵詞: SOC ARM7 語音處理
Abstract:
Key words :

  引 言

  隨著微電子和計(jì)算機(jī)技術(shù)的高速發(fā)展,,許多嵌入式應(yīng)用系統(tǒng)應(yīng)運(yùn)而生,。其中,各種語音處理系統(tǒng)不斷被開發(fā)出來,,在各行業(yè)得到廣泛應(yīng)用,,如語音報(bào)站器、自動解說裝置,、采訪錄音筆等,,為人類的生產(chǎn)、生活提供了極大的便利,。本文基于東南大學(xué)國家專用集成電路的32位嵌入式SoC——SEP3203處理器,,采用G.721標(biāo)準(zhǔn)ADPCM算法,實(shí)現(xiàn)了語音信號的軟件實(shí)時(shí)編解碼,,為語音處理應(yīng)用提供了一種有效的嵌入式解決方案,。

  1、G.721標(biāo)準(zhǔn)概述

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

  編碼過程:

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

  解碼過程:

  ① 通過自適應(yīng)反量化和自適應(yīng)預(yù)測得到Dq(k)和Se(k),,得到語音重建信號Sr(k),;
  ② 對重建信號Sr(k)進(jìn)行PCM格式轉(zhuǎn)換,,得到PCM碼字Sp(k),;

 


 

圖1 G.721編碼器和解碼器簡化框圖


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

 

  2、芯片簡介

  SEP3203芯片為系統(tǒng)處理核心,,總體結(jié)構(gòu)框圖如圖2所示,。該芯片是東南大學(xué)國家專用集成電路系統(tǒng)工程技術(shù)研究中心自主設(shè)計(jì)的基于ARM7TDMI的32位SoC,采用AMBA2.0標(biāo)準(zhǔn),,0.25μmCMOS工藝,,主要面向嵌入式中低端手持設(shè)備。片上提供AC97控制器、外存接口EMI,、6通道DMAC,、TIMER、PMU,、INTC等模塊,。其中,語音系統(tǒng)使用的模塊有:EMI,,負(fù)責(zé)控制對外存的訪問,;片上存儲器

eSRAM,用于優(yōu)化耗時(shí)的核心代碼,;AC97,,提供AC97標(biāo)準(zhǔn)的音頻接口;DMAC,,用于實(shí)現(xiàn)大數(shù)據(jù)量的DMA傳送,。

 


 

圖2 SEP3203芯片結(jié)構(gòu)框圖

 

  3、系統(tǒng)設(shè)計(jì)

  3.1 硬件系統(tǒng)

  硬件系統(tǒng)框圖如圖3所示,。虛線框內(nèi)是片內(nèi)模塊,;框外為片外器件,包括外存(SDRAM/SRAM/FLASH等),、CODEC等,。Philips公司的UCB1400作為CODEC。以下為系統(tǒng)工作過程,。

 


 

圖3 語音處理硬件系統(tǒng)框圖

 

 ?、?編碼。CODEC采樣語音數(shù)據(jù),,暫存在AC97的輸入FIFO中,。然后,由DMAC通過中斷方式,,將數(shù)據(jù)傳送到指定存儲區(qū)域,。在ARM7TDMI的控制下,運(yùn)行G.721編碼程序,,將語音PCM數(shù)據(jù)壓縮為ADPCM碼,。

  ② 解碼,。運(yùn)行G.721解碼程序,把存儲器中的ADPCM碼解碼為PCM碼,。每解滿1幀數(shù)據(jù)后,,由DMAC通過中斷方式把數(shù)據(jù)傳送到AC97的輸出FIFO,通過CODEC驅(qū)動放音設(shè)備(耳機(jī)、揚(yáng)聲器

等),。

 

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

  3.2 軟件系統(tǒng)

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

 


 

圖4 編解碼的軟件流程

 

  (1) 編碼

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

  (2) 解碼

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

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

  Flg=0;
  Psmp=Buf Flg;
  Run_Sample(Psmp);//采樣第1幀數(shù)據(jù)
  While(1) { 
    Flg=! Flg;
    Penc=Buf !Flg;//編碼指針指向緩沖區(qū)Buf !Flg
    Psmp=Buf Flg;//采樣指針指向緩沖區(qū)Buf Flg
    Run_Sampler(Psmp); Run_Encoder(Penc); 
             //啟動采樣器和編碼器,,兩者并發(fā)
  }

  4、性能優(yōu)化

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

 


 

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

 

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

 


 

表2 eSRAM和SDRAM性能比較

 

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

 


 

表3 最耗費(fèi)時(shí)間的庫函數(shù)

 

  以上三個(gè)函數(shù)在總編解碼時(shí)間內(nèi)占用了近80 %的時(shí)間(Quan()、Fmult(),、Update()的功能分別為量化表查找,、定點(diǎn)化的浮點(diǎn)數(shù)乘法、狀態(tài)變量更新),,對這些代碼優(yōu)化就會明顯提高編解碼速度,。把這些函數(shù)代碼整合到文件rec_esram.c中,然后加載remap.scf文件進(jìn)行內(nèi)存映像(*.scf文件是ARM ADS集成開發(fā)工具提供的鏈接腳本文件),。下面是remap.scf文件的內(nèi)容:
  FLASH 0x30002000 0x1000000
  {
    FLASH 0x30002000
            //系統(tǒng)初始化入口及其他代碼存放地址
    {
      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)
    }
    /*堆棧設(shè)置部分*/
  }

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

 


 

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

 

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

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

 


 

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

 

  結(jié)語

  在設(shè)計(jì)一款面向多媒體應(yīng)用的嵌入式系統(tǒng)時(shí),,實(shí)時(shí)性能非常重要,。本文提出了一種基于ARM7TDMI內(nèi)核的SoC中語音處理系統(tǒng)的設(shè)計(jì)方案,并根據(jù)該款SoC具有eSRAM的特點(diǎn),,進(jìn)行了系統(tǒng)性能的優(yōu)化,。對樣機(jī)的測試表明系統(tǒng)在主頻70 MHz、有操作系統(tǒng)的情況下編碼速率為19.88 KB/s,,解碼速率為22.68 KB/s,,達(dá)到了語音系統(tǒng)的實(shí)時(shí)性要求。而且,,如果語音處理作為樣機(jī)的子系統(tǒng)應(yīng)用,,其硬件設(shè)計(jì)也支持MP3播放和LCD觸摸屏

的功能,實(shí)現(xiàn)了系統(tǒng)板面積減小,、整機(jī)成本降低的目的,,不失為一種高效價(jià)廉的設(shè)計(jì)方案。

 

參考文獻(xiàn)
1 凌明.基于ARM7TDMI的低成本手持多媒體設(shè)備處理器.南京:東南大學(xué)國家ASIC工程中心,2004
2 茍大舉,,楊啟剛.基于ADPCM 編碼的語音錄放系統(tǒng)開發(fā)平臺.四川大學(xué)學(xué)報(bào)(自然科學(xué)版), 1998.4, Vol.35 No.2:178~182
3 傅秋良,,袁宗寶.純軟件實(shí)現(xiàn)ADPCM語音壓縮算法.電信科學(xué), 1994.10, Vol.10 No.10:21~24
4 Gibson Jerry D. 多媒體數(shù)字壓縮原理與標(biāo)準(zhǔn).李煜暉譯.北京:電子工業(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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。