基于DSP和ARM的音頻處理系統(tǒng)設(shè)計
隨著計算機(jī)技術(shù)、電子技術(shù)和通信技術(shù)的迅猛發(fā)展,音頻處理技術(shù)也在眾多領(lǐng)域得到廣泛應(yīng)用。如通信領(lǐng)域中的手機(jī)、IP電話,消費類電子產(chǎn)品中的MP3和CD播放器以及控制領(lǐng)域中的語音識別、聲控系統(tǒng)等[1]。針對DSP強(qiáng)大的數(shù)字信號處理能力和ARM處理器良好的實時性能,結(jié)合音頻編解碼芯片TLV320AIC23的接口特點,本文闡述了由三者組成的音頻處理系統(tǒng)的硬件接口設(shè)計和軟件編程,提供了有效和實用的音頻處理系統(tǒng)方案。
TLV320AIC23(簡稱AIC23)是TI公司的一款高性能立體聲音頻編解碼器Codec芯片。其內(nèi)部集成的模數(shù)轉(zhuǎn)換器(ADCs)和數(shù)模轉(zhuǎn)換器(DACs)采用了帶有過采樣數(shù)字插補(bǔ)濾波的多位Sigma-Delta技術(shù)。數(shù)據(jù)傳輸字長為16、20、24、32位,支持采樣頻率范圍8kHz至96kHz。ADC和DAC的信噪比分別達(dá)到90dB和100dB。內(nèi)置耳機(jī)輸出放大器,支持MIC和LINE IN兩種輸入方式,且對輸入和輸出都具有可編程增益調(diào)節(jié)。另外,AIC23功耗低,回放模式下功率僅為23mW,省電模式下更是小于15uW。因此,AIC23成為數(shù)字音頻應(yīng)用
TMS320VC5402(簡稱VC5402)是TI公司的一款優(yōu)秀16位定點DSP,運算速度快,指令執(zhí)行速度達(dá)到100MIPS。自帶片內(nèi)存儲器和多種片上外設(shè),廣泛應(yīng)用于語音編解碼和通信領(lǐng)域[3]。
S3C4510B(簡稱4510B)是Samsung公司的一款低成本、高性能的16/32位精簡指令集微控制器,其出色的ARM7TDMI內(nèi)核以及通用微處理器宏單元使其成為用戶定制應(yīng)用開發(fā)的理想選擇[4]。
2 系統(tǒng)硬件設(shè)計
本音頻處理系統(tǒng)主要由前述三個處理芯片組成:ARM控制單元,DSP信號處理單元以及AIC23音頻采集單元。系統(tǒng)原理框圖如圖1。
圖1 基于DSP和ARM的音頻處理系統(tǒng)原理框圖
AIC23是可編程芯片,內(nèi)部有11個16位寄存器,編程設(shè)置這些寄存器可得到所需的采樣頻率、輸入輸出增益和傳輸數(shù)據(jù)格式等。該控制接口有SPI和I2C兩種工作模式,由芯片上的MODE引腳進(jìn)行選擇:MODE=0為I2C模式,MODE=1為SPI模式。因ARM 4510B上也有I2C接口,故選用I2C模式。AIC23的I2C接口地址由 引腳的狀態(tài)決定, =0時地址為0011010, =1時地址為0011011。其中SDIN與SDA為數(shù)據(jù)線,SCLK與SCL為串行時鐘線。VC5402有兩個多通道緩沖串口,選用其中的McBSP0與AIC23進(jìn)行通信,信號連接如圖1所示。圖中AIC23工作在主模式,時鐘信號、DAC和ADC的幀同步信號BFSX0和BFSR0都由AIC23提供。而DSP VC5402與ARM 4510B的通訊是通過DSP上的HPI接口實現(xiàn)的。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)由ARM系統(tǒng)和DSP系統(tǒng)兩大部分組成,ARM作為主控制器管理整個系統(tǒng)的工作進(jìn)程,運行相關(guān)的應(yīng)用程序,可對多個任務(wù)進(jìn)行調(diào)度,完成與外部DSP系統(tǒng)或其他外設(shè)的通信。DSP則主要完成音頻數(shù)據(jù)的采集和信號處理,并將處理后的數(shù)據(jù)發(fā)送給ARM供應(yīng)用程序調(diào)用。這樣的設(shè)計可以大大提高系統(tǒng)的工作效率,這也是當(dāng)前嵌入式系統(tǒng),各移動手持設(shè)備如PDA、手機(jī)等的典型設(shè)計方案。
這里具體要做的是對AIC23的控制接口編程,使其工作在所需的模式下。然后初始化DSP的McBSP,進(jìn)行AD、DA轉(zhuǎn)換和數(shù)據(jù)處理。
3.1 ARM編程部分
系統(tǒng)中對ARM的編程主要涉及對AIC23的初始化,使其進(jìn)入正常工作狀態(tài),對音頻數(shù)據(jù)進(jìn)行采集和處理。這需要設(shè)置4510B的I2C總線特殊功能寄存器:控制狀態(tài)寄存器IICCON、預(yù)分頻寄存器IICPS和移位緩沖寄存器IICBUF,寄存器相關(guān)說明見表1[5]。
表1 4510B I2C總線特殊功能寄存器
AIC23的11個控制寄存器相關(guān)設(shè)置的詳細(xì)描述參見文獻(xiàn)2。這里的設(shè)置為:左右聲道線路輸入靜音;耳機(jī)左右聲道音量為6dB;使能DAC,麥克風(fēng)音量為20dB作為ADC輸入;使能ADC高通濾波;芯片各部分電路供電使能;芯片工作在主模式,采樣數(shù)據(jù)長度16位,采用DSP數(shù)據(jù)格式(同步幀后跟隨兩個數(shù)據(jù)字);采樣率88.2KHz(外部晶振為11.2896MHz);使能數(shù)字接口。
對AIC23編程時的I2C總線時序如圖2所示。設(shè)置好I2C的時鐘頻率后,首先發(fā)送開始條件(SCLK為高電平時,SDI從高電平向低電平切換),然后發(fā)送AIC23的器件地址,器件地址發(fā)出后發(fā)送AIC23相應(yīng)寄存器的地址,再發(fā)送對該寄存器設(shè)置的數(shù)據(jù),最后發(fā)送停止條件(SCLK為高電平時,SDI從低電平向高電平切換)。注意,這里的寄存器地址為7位,寄存器數(shù)據(jù)為9位,而I2C總線以字節(jié)為單位傳送數(shù)據(jù)。因此在對AIC23的寄存器編程時,第一個字節(jié)包括了前7位的寄存器地址B15-B9以及設(shè)置數(shù)據(jù)的最高位B8,第二個字節(jié)為設(shè)置數(shù)據(jù)的后8位B7-B0。
圖2 I2C時序
3.2 音頻數(shù)據(jù)采集與播放
初始化AIC23后,再初始化DSP以及McBSP0,之后進(jìn)行音頻數(shù)據(jù)的采集與播放。通過麥克風(fēng)采集語音信號,經(jīng)過數(shù)字濾波處理后由耳機(jī)輸出。使用McBSP0的接收中斷保存數(shù)據(jù),通過FIR數(shù)字濾波子程序處理音頻數(shù)據(jù)。程序流程如圖3所示。
圖3 音頻數(shù)據(jù)處理程序流程圖
初始化McBSP0使其與AIC23協(xié)調(diào)工作,這里要根據(jù)硬件設(shè)計和軟件要求來配置McBSP0的各個控制寄存器。本系統(tǒng)中串口的主要設(shè)置為:接收數(shù)據(jù)右對齊,帶符號擴(kuò)展;接收中斷使能;由片外提供發(fā)送、接收幀信號和發(fā)送、接收時鐘信號;發(fā)送、接收幀同步信號低電平有效;在時鐘上升沿采樣發(fā)送、接收數(shù)
據(jù);每幀發(fā)送、接收兩個16位字?jǐn)?shù)據(jù)[6]。
數(shù)據(jù)接收部分可在DSP中斷程序中用如下語句實現(xiàn):
mvkd drr10,*ar5 ;保存數(shù)據(jù)
pshd *ar5+% ;數(shù)據(jù)壓入堆棧
popd new_ad ;從堆棧彈出數(shù)據(jù)到自定義的寄存器
FIR濾波的相關(guān)程序如下:
ld new_ad,a ;新數(shù)據(jù)加載至累加器
stm #1,ar0 ;雙操作數(shù)增量
stm #N,bk ;設(shè)置循環(huán)緩沖區(qū)長度,即FIR濾波級數(shù)(N為濾波級數(shù))
stl a,*ar3+% ;新數(shù)據(jù)送至ar3指向的緩沖區(qū)
rptz a,#(N-1) ;重復(fù)執(zhí)行N-1級的乘加運算
mac *ar2+0%,*ar3+0%,a ;ar2為系數(shù)指針,結(jié)果在累加器高位中
sth a,temp ;保存計算結(jié)果
ld temp,a ;結(jié)果放入累加器低位
… …
stlm a,dxr10 ;將累加器地位中的數(shù)據(jù)送至串口發(fā)送寄存器
… …
基于前述對AIC23和DSP的相應(yīng)設(shè)置,采用21級系數(shù)對稱FIR數(shù)字濾波,對經(jīng)由麥克風(fēng)輸入的語音信號進(jìn)行濾波處理,濾波結(jié)果由耳機(jī)輸出,實際效果良好。所采集到的音頻數(shù)據(jù)還可通過HPI接口傳送至ARM供應(yīng)用程序調(diào)用。
3.3 語音識別應(yīng)用測試
語音識別的基本原理是對語音信號進(jìn)行特征提取。目前常用的語音識別算法有基于模式匹配的動態(tài)時間規(guī)正法(DTW: Dynamic Time Warping)、基于統(tǒng)計模型的隱馬爾柯夫模型法(HMM: Hidden Markov Model)以及基于神經(jīng)網(wǎng)絡(luò)的識別法(DNN、NPN、TDNN)等[7]。為便于系統(tǒng)應(yīng)用測試,本文采用一種最簡易的方法對系統(tǒng)進(jìn)行調(diào)試,即對英文元音的識別?;驹硎翘崛≡糇帜傅念l率特征,各元音在其頻域響應(yīng)中都有三個明顯的共振峰頻率,而最容易識別的是第一共振峰,由此可進(jìn)行有效的元音識別。在提取第一共振峰頻率特征時采用“零交越”法(統(tǒng)計單幀信號波形穿越零點的次數(shù)――過零率),將信號頻率特征的分析轉(zhuǎn)換為時域分析,計算得到的過零率與理論值進(jìn)行比較即可實現(xiàn)元音的識別。圖4所示分別為元音“A”的時域和頻域圖。
圖4 元音A的時域圖 和頻域圖
由頻域采樣圖可以看到很明顯的第一共振峰,此時計算時域采樣中信號的過零率可較為準(zhǔn)確的識別元音A,過零率的計算中近似等于零的采樣點通常是微弱的干擾,可以忽略不計。經(jīng)驗證,這種簡易單元音識別法的識別率在80%以上,由此證明本系統(tǒng)音頻處理的實用性。
4 結(jié)束語
本文闡述了基于信號處理和嵌入式應(yīng)用的音頻處理系統(tǒng)的設(shè)計和實現(xiàn)。論述了系統(tǒng)的硬件設(shè)計、軟件編程及其應(yīng)用。通過ARM對音頻芯片AIC23的控制和DSP與AIC23的通信,實現(xiàn)了音頻信號采集、處理、輸出的功能以及簡單的語音識別。構(gòu)建了基于ARM和DSP的音頻處理系統(tǒng)應(yīng)用框架,對進(jìn)一步的數(shù)據(jù)處理、控制應(yīng)用等提供了切實可行的軟硬件方案。
參考文獻(xiàn)
1 張大波. 嵌入式系統(tǒng)原理、設(shè)計與應(yīng)用. 北京:機(jī)械工業(yè)出版社,2004.11
2 TLV320AIC23, Stereo Audio CODEC, 8- to 96-kHz, With Integrated Headphone Amplifier. Texas Instruments Incorporated, 2002
3 TMS320VC5402, Fixed-Point Digital Signal Processor. Texas Instruments Incorporated, 2000
4 S3C4510B User’s Manual. Samsung Electronics, 2001
5 李駒光. ARM應(yīng)用系統(tǒng)開發(fā)詳解:基于S3C4510B的系統(tǒng)設(shè)計. 北京:清華大學(xué)出版社, 2004
6 TMS320C54xx McBSP to TLV320AIC24 Interface. Texas Instruments Incorporated, 2003
7 黃濤,胡賓.基于SPCE061A單片機(jī)的非特定人語音識別設(shè)計.微計算機(jī)信息,2006,3-2:19-20
評論