針對傳統(tǒng)音頻AGC處理中的一些缺陷提出有效的改良方法,,設(shè)計并實現(xiàn)應(yīng)用在數(shù)字電視臺實時視音頻處理中,,最終獲得穩(wěn)定平衡的音量輸出,并具有一定噪音抑制能力的基于SOPC技術(shù)的嵌入式數(shù)字音頻AGC系統(tǒng),。
1.系統(tǒng)結(jié)構(gòu)設(shè)計
技術(shù)是SOC(System on Chip)技術(shù)和電子設(shè)計自動化技術(shù)相結(jié)合的一種全新的嵌入式系統(tǒng)設(shè)計技術(shù),,為設(shè)計者提供了一個可以快速開發(fā)設(shè)計及驗證的系統(tǒng)設(shè)計平臺,用以搭建基于總線的系統(tǒng),。它包含了一系列的模塊,,例如NiosⅡ處理器、存儲器,、總線,、JTAG等IP核,還有包含操作系統(tǒng)內(nèi)核的嵌入式軟件開發(fā)工具,。它可以將處理器,、存儲器、I/O接口,、硬件協(xié)處理器和普通的用戶邏輯等功能模塊都集成到一個FPGA芯片里,,構(gòu)建一個可編程的片上系統(tǒng)。
在系統(tǒng)結(jié)構(gòu)上數(shù)字音頻AGC系統(tǒng)的設(shè)計主要包括3個層面:最底層是硬件層面,,即物理硬件電路的原理圖設(shè)計,,包括各功能IC的外圍電路設(shè)計;中間層是SOPC系統(tǒng)層,,其設(shè)計主要有NiosⅡ軟核處理器的配置和添加,,選擇各種可定制的外設(shè)IP核和自定義所需模塊,將定制好的各個外設(shè)模塊與Avalon總線進行連接,,并為分配外設(shè)地址及中斷,,最后經(jīng)編譯,、綜合生成可在FPGA內(nèi)實現(xiàn)相應(yīng)功能的SOPC系統(tǒng)模塊;最上層的是軟件層,,主要是NiosⅡ軟核處理器運行的軟件程序,,是用C/C++代碼編寫的,包括μC/OS-Ⅱ?qū)崟r操作系統(tǒng),,設(shè)備的驅(qū)動程序和應(yīng)用程序,。
本系統(tǒng)選用的FPGA芯片是Altera公司所推出的CycloneⅡ系列的EP2C20Q240C8。該芯片采用90 nm工藝制造,,最大可用I/O管腳142個并內(nèi)嵌26個乘法器塊,,支持使用Altera公司的SOPC Builder工具嵌入NiosⅡ軟核處理器。系統(tǒng)整體架構(gòu),,如圖1所示,。
圖1 嵌入式數(shù)字音頻AGC系統(tǒng)整體框圖
2 數(shù)字音頻AGC算法的設(shè)計與實現(xiàn)
嵌入式數(shù)字音頻AGC系統(tǒng)的核心就是音頻AGC算法的設(shè)計,音頻AGC是音頻自動增益控制算法,,是一種根據(jù)輸入音頻信號水平自動動態(tài)地調(diào)整增益的機制,,AGC算法的好壞直接反映在處理后輸出的音頻聽覺感知效果。
2.1 算法基本思想
文中提出一種多參數(shù)融合帶反饋機制的音頻AGC處理算法,,在保證輸出電平滿足條件的情況下,,能有效解決傳統(tǒng)AGC中過沖或過衰現(xiàn)象,并能夠抑制背景噪聲的提升,,能根據(jù)人耳聽覺特性輸出音量穩(wěn)定平衡的音頻信號,。
用yi(n)代表經(jīng)過AGC處理的第i幀數(shù)字音頻信號;xi(n)代表這一幀原始的數(shù)字音頻信號,;Gi表示這一幀的音頻增益因子,,音頻AGC處理可以用如式(1)表示
2.2 關(guān)鍵特征參數(shù)提取
計算音頻增益因子Gi的關(guān)鍵是對當前數(shù)字音頻的狀態(tài)判斷。由于人耳對音量的主觀感覺是從聲音響度上來體現(xiàn)的,,而響度是由發(fā)聲體振動幅度的大小來決定,,并且人耳對不同頻率聲音的感應(yīng)是不平坦的,所以人耳感知的聲音響度是頻率和聲壓級的函數(shù)曲線,?;谌硕捻懚雀兄匦裕珹GC算法中音頻增益因子Gi的計算需要綜合考慮聲音的振幅,、短時能量和頻率這3個特征,。
經(jīng)過數(shù)字化的音頻信號實際上是一個時變信號,為了能對音頻信號進行分析,,可以假設(shè)音頻信號在幾十ms的短時間內(nèi)是平穩(wěn)的,。為了得到短時音頻信號,要對音頻信號分幀處理,分幀是連續(xù)的,。為避免AGC系統(tǒng)處理后的因音頻分幀延遲帶來的畫音不同步現(xiàn)象,,本設(shè)計將分幀定為20 ms。數(shù)字電視的音頻采樣率為48 kHz,,所以一幀內(nèi)的音頻樣值數(shù)有960點,。
音頻信號的振幅可以用峰值表示,即由一幀音頻信號內(nèi)的絕對值最大項來表示,,用Pi代表第i幀數(shù)字音頻信號xi(n)的幀內(nèi)峰值,,那么
短時能量可以有效判斷信號幅度的大小,音頻信號的短時能量Ei定義如下
短時能量由于對信號進行平方運算,,考慮到處理器的性能和實時性的保證,,可以采用絕對值之和代替平方和來表示短時能量的變化,使運算簡化,,其公式為
短時過零率是指每幀內(nèi)信號通過零值的次數(shù),對于數(shù)字音頻信號實質(zhì)上就是一幀信號采樣點符號的變化次數(shù),,由于采樣頻率是固定的,,因此短時過零率可以在一定程度上反映音頻信號的頻譜特征,用作一種音頻信號頻率的粗略估計,。短時過零率Zi表示為
其中sgn[…]是符號函數(shù),,即
提取音頻中以上3個關(guān)鍵特征參數(shù)就可以作為音頻增益因子Gi的計算和判決的條件。
2.3 反饋機制的實現(xiàn)
在前饋處理中當輸入的第i幀數(shù)字音頻信號xi(n)的幀內(nèi)峰值Pi超過用戶設(shè)定的峰值電平門限值Ppeak信號就會被瞬間衰減,,增益因子變小,。而當輸入的第i幀數(shù)字音頻信號xi(n)的幀內(nèi)峰值Pi低于用戶設(shè)定的提升電平門限值Pact并且高于用戶設(shè)定的噪音電平門限值Pnoise信號就會被瞬間提升,增益因子變大,,低于噪音電平門限值Pnoise的信號就不會被提升,。
前饋機制能在音頻信號突變導致幀內(nèi)峰值溢出或過小時,迅速改變增益因子,,用非線性的變化將音頻穩(wěn)定在所設(shè)定的動態(tài)范圍內(nèi)(峰值電平門限Ppeak和提升電平門限Pact之間),。而新增加的反饋機制能通過判斷處理后的短時能量調(diào)整增益因子Gi+1,使音頻信號變化穩(wěn)定,,在一個較寬的時間尺度上均衡響度,。AGC算法中計算增益因子的具體流程,如圖2所示,。
圖2 增益因子計算流程框圖
在反饋機制中使用α歸一化濾波器對滿足條件的輸入音頻信號和上一幀的增益因子Gi調(diào)整計算新的增益因子,。
α 歸一化濾波器可以簡單表示為
為了避免增益因子的劇烈波動,需要加大增益因子Gi的權(quán)重值α,,而權(quán)重值α的大小決定了濾波器歸一化的收斂速度,,|1-α|越大,則收斂速度越快。權(quán)重值α的計算需要綜合參考短時過零率Zi,、處理前的短時能量Mi和處理后的短時能量,。在音頻劇烈變化的時候,增益因子仍然能夠收放自如,,穩(wěn)定平衡音頻信號的輸出,。
2.4 噪音抑制處理方法
在AGE中對噪音的抑制是一個重要的部分,噪音主要是音頻信號間的靜音噪音和AGE處理中產(chǎn)生的噪音,。對靜音噪音的抑制主要靠噪音電平門限的設(shè)定,,當輸入的第i幀數(shù)字音頻信號xi(n)的幀內(nèi)峰值Pi低于用戶設(shè)定的噪音電平門限值Pnoise時,就將該幀的增益因子Gi調(diào)整為1,,不進行放大處理,。當輸入的音頻峰值連續(xù)低于噪音電平門限的時間達到靜音時間ts則將輸出音頻靜音,這樣就可以抑制噪音而不影響音頻輸出質(zhì)量,。
AGC處理中一個重要問題是,,在音頻分幀的交界處的樣值點會因為增益因子Gi的突然改變而產(chǎn)生原本連續(xù)信號樣值的突變,當分幀為20 ms時,,AGC處理效果相當于產(chǎn)生50 Hz幅度不定的階躍信號噪音,。噪音信號Unoise的大小為
當xi-1(960)和xi(1)相差較大時會產(chǎn)生較大的影響。在本設(shè)計中為了消除該噪音,,改為在每一個處理幀開始后的第一個過零點進行增益因子的更新,。此時噪音的影響為
由于音頻信號樣值的連續(xù)性,在過零點處xi-1(n-1)和xi-1(n)均趨向于O,,因此unoise也趨向于0,。由于人耳的可聽聲音頻率范圍在20 Hz~20 kHz,在音頻采樣和A/D轉(zhuǎn)換時會濾除人耳的可聽聲音頻率范圍外的頻率分量,,而每個周期內(nèi)都有兩個過零點,,所以增益因子的更新速度不受影響。由此則AGC處理帶來的噪音也被很好的抑制,。
2.5 仿真結(jié)果及分析
為了驗證該算法的正確性和有效性,,采用Matlab對該數(shù)字音頻AGC算法進行仿真。仿真結(jié)果如圖3所示,。
圖3 AGC算法仿真結(jié)果
在仿真中輸入一段聲音忽大忽小的數(shù)字音頻,,從經(jīng)過AGC處理后的數(shù)字音頻輸出來看,大音量的音頻信號被有效衰減,,小音量的音頻信號被有效放大,,正常音量的音頻信號幾乎沒有變化。該段音頻長度為6 s,,增益因子在此期間可調(diào)整300次,,該算法的增益因子調(diào)整速度可以滿足音頻劇烈變化時的使用需求,。對噪音的抑制也起到了很好的效果,人耳的實際聽覺感知達到了滿意的效果,。
3 軟件層設(shè)計
目前比較流行的嵌入式操作系統(tǒng)主要有VxWorks,,Windows CE,uCLinux,,μC/OS-Ⅱ等,。μC/OS-Ⅱ的規(guī)模較小、實時性和可靠性較高,,能夠滿足嵌入式數(shù)字音頻AGE系統(tǒng)對實時性的要求,,考慮到NiosⅡIDE開發(fā)環(huán)境對μC/OS-Ⅱ的良好支持,故操作系統(tǒng)選擇μC/OS-Ⅱ,。μC/OS -Ⅱ是一種可移植,、可固化、可裁減,、占先式的多任務(wù)實時操作系統(tǒng)內(nèi)核,。它通過為每個任務(wù)分配單獨的任務(wù)堆棧來保存任務(wù)工作環(huán)境,提供任務(wù)管理與調(diào)度,,任務(wù)間的同步,、互斥與通信,時間和中斷管理,、內(nèi)存的動態(tài)分配等多種系統(tǒng)服務(wù)。
系統(tǒng)運行時,,首先進行系統(tǒng)初始化操作,,即初始化所有數(shù)據(jù)結(jié)構(gòu),分配堆??臻g,,然后建立任務(wù)間通訊的信號量或者消息隊列,進而創(chuàng)建任務(wù),,并且分配不同的優(yōu)先級,,所有任務(wù)被置于就緒態(tài),系統(tǒng)從優(yōu)先級最高的任務(wù)開始執(zhí)行,。
軟件設(shè)計主要包括嵌入式操作系統(tǒng)μC/OS-Ⅱ的移植,、LCD顯示控制器和自定義音頻模塊的驅(qū)動程序設(shè)計、算法設(shè)計實現(xiàn)3個主要部分,。嵌入式音頻AGC系統(tǒng)根據(jù)功能劃分主要有以下4個任務(wù),,如圖4所示。
圖4 嵌入式音頻AGC系統(tǒng)任務(wù)調(diào)度表
(1)系統(tǒng)初始化任務(wù),,主要是用以初始化整個嵌入式音頻AGC系統(tǒng),,包括初始化各種系統(tǒng)變量、LCD控制器、鍵盤,、自定義音頻接口模塊等系統(tǒng)模塊,,此外還擔負著創(chuàng)建其他任務(wù)和信號量的任務(wù),是系統(tǒng)正常運行必不可少的一環(huán),,該任務(wù)在系統(tǒng)中有最高的優(yōu)先級,。在正常初始化系統(tǒng)以后將該任務(wù)刪除以節(jié)省系統(tǒng)開支。
(2)音頻AGC處理任務(wù),,對自定義音頻接口的輸入音頻進行AGC處理,,配合自定義音頻接口的驅(qū)動程序?qū)⑻幚砗玫囊纛l進行輸出。該任務(wù)是嵌入式音頻AGC系統(tǒng)的核心任務(wù),,在系統(tǒng)初始化任務(wù)完成并刪除后成為系統(tǒng)內(nèi)優(yōu)先級最高的任務(wù),。
(3)鍵盤輸入響應(yīng)處理任務(wù),對PIO輸入的按鍵信息進行相應(yīng)處理,,如果有改變參數(shù)設(shè)置等重要信息要通過信號量及時反饋給音頻AGC處理任務(wù),,同時負責輸出要在LCD上顯示的內(nèi)容,通過郵箱信號量發(fā)送給LCD顯示任務(wù),。它的優(yōu)先級比LCD顯示任務(wù)高,。
(4)LCD顯示任務(wù),將接收到的內(nèi)容配合LCD控制器驅(qū)動程序進行LCD的顯示輸出,。
4 結(jié)束語
本設(shè)計采用SOPC技術(shù),,利用FPGA實現(xiàn)SDI接口邏輯,移植μC/OS-Ⅱ?qū)崟r操作系統(tǒng)為嵌入式應(yīng)用軟件運行平臺,,可以實現(xiàn)與廣電設(shè)備的無縫接合,。通過設(shè)計采用一種適于實時性的多參數(shù)融合的AGC算法對數(shù)字音頻信號進行AGC處理,實現(xiàn)了具有抑制一定噪聲能力的嵌入式數(shù)字音頻AGC系統(tǒng),。測試表明該系統(tǒng)達到設(shè)計預(yù)期目標,,改善了傳統(tǒng)音頻AGC處理中的一些缺陷,輸出音頻穩(wěn)定平衡,,完全滿足實際需要,,可廣泛應(yīng)用在數(shù)字演播室中的數(shù)字音頻實時AGC處理上。