周江平, 高 俊, 屈曉旭
語(yǔ)音通信中,基帶傳輸距離、麥克風(fēng)等的不同都會(huì)導(dǎo)致進(jìn)入射頻前端的音頻信號(hào)忽大忽小。為了使得激勵(lì)器能夠接收到幅度平穩(wěn)的音頻信號(hào),需要在射頻輸出之前給音頻信號(hào)做AGC處理。一般情況下,為了減小運(yùn)算量,會(huì)在采樣率較低時(shí)進(jìn)行AGC處理。AGC處理除了使得輸出的音頻幅度相對(duì)平穩(wěn)外,還具有一定的噪音抑制能力。音頻AGC與普通AGC有所不同,音頻AGC必須跟蹤音頻信號(hào)的變化,一方面要減小不期望因素的干擾,另一方面還要較準(zhǔn)確地反映音頻信號(hào)的幅度正常變化,因此參考幅度理論上是應(yīng)該不斷變化的[1]。
隨著電子技術(shù),計(jì)算機(jī)技術(shù)和通信技術(shù)的迅猛發(fā)展,數(shù)字信號(hào)處理技術(shù)已廣泛地深入到人們生活等各個(gè)領(lǐng)域。運(yùn)用數(shù)字化處理技術(shù),在現(xiàn)場(chǎng)可編程門陣列(FPGA)器件上實(shí)現(xiàn)音頻AGC算法,可以使得AGC控制更加精確,實(shí)現(xiàn)更加靈活,運(yùn)行更加穩(wěn)定。
一般來說,AGC系統(tǒng)由可變?cè)鲆娣糯笃骱头答伝芈方M成??勺?cè)鲆娣糯笃鞲鶕?jù)反饋回路的幅度以及閾值按照一定的算法調(diào)整增益值。一般情況下,當(dāng)輸入可變?cè)鲆娣糯笃鞯男盘?hào)幅度增大時(shí),反饋回路控制其增益按一定關(guān)系減?。粶p小時(shí),其增益則按一定關(guān)系增大[2]。這樣可以保證AGC放大后得到的輸出信號(hào)的幅度基本恒定。數(shù)字AGC的反饋部分由數(shù)字處理實(shí)現(xiàn),與模擬AGC相比,降低調(diào)試難度而且增強(qiáng)了穩(wěn)定性、收斂性和精確性[3]。
根據(jù)數(shù)字AGC中增益值調(diào)整的算法,可以將數(shù)字AGC分為固定步長(zhǎng)AGC、可變步長(zhǎng)AGC兩類。固定步長(zhǎng)AGC算法簡(jiǎn)單,實(shí)現(xiàn)容易,物理意義明確,但是調(diào)節(jié)時(shí)間隨著輸入變化的增大而增大,容易出現(xiàn)不穩(wěn)定的情況;可變步長(zhǎng) AGC算法增益調(diào)整靈活,收斂速度較快,調(diào)節(jié)時(shí)間不會(huì)隨著輸入變化量的大小而改變,但是一般需要除法,對(duì)數(shù)運(yùn)算等計(jì)算,實(shí)現(xiàn)時(shí)資源消耗量大。隨著微電子技術(shù)日益發(fā)展,F(xiàn)PGA可提供的資源量大大增加,大多采用可變步長(zhǎng)算法。
1)輸出動(dòng)態(tài)范圍的確定。根據(jù)實(shí)際情況,若AGC的期望值取為定值,那么輸出的信號(hào)的幅度值將無限地趨近期望值,但是會(huì)一直變化調(diào)整,這就會(huì)導(dǎo)致輸出端的幅度不穩(wěn)定。因此,可以以期望值為中心,設(shè)計(jì)一個(gè)穩(wěn)定的范圍。一旦經(jīng)AGC輸出的信號(hào)處于該范圍中,認(rèn)為已達(dá)到穩(wěn)定的狀態(tài),增益值將不再改變,這樣可以使輸出信號(hào)的幅度得到穩(wěn)定。如果設(shè)計(jì)的這種穩(wěn)定范圍足夠小,那么不會(huì)對(duì)人的聽覺效果產(chǎn)生影響[4]。該區(qū)間的上界稱為期望值上限,該區(qū)間的下界稱為期望值下限。研究數(shù)據(jù)表明,幅度在0.1 dB范圍內(nèi)變化人爾無法察覺。設(shè)定該范圍為期望值加減0.1 dB。為了保護(hù)電路,期望值一般設(shè)為輸出信號(hào)滿偏值減0.25 dB。
2)增益調(diào)整速度的確定。在正常的語(yǔ)音信號(hào)中,信號(hào)幅度的大小是不停變化的。為了體現(xiàn)出語(yǔ)音信號(hào)這種幅度的正常變化,不能將所有的信號(hào)幅度都快速拉高到期望值區(qū)間,應(yīng)該保持增益不變或者只變化很小的范圍。那樣才能分辨出人說話時(shí)的語(yǔ)調(diào),不會(huì)產(chǎn)生“失真”[5]。而如果由于其它因素導(dǎo)致語(yǔ)音信號(hào)的平均幅度比較小,就需要將增益值增大,使得語(yǔ)音信號(hào)整體幅度增大,這樣不會(huì)對(duì)聲音信號(hào)造成失真。而相對(duì)來說,聲音信號(hào)的幅度正常變化比非正常變化要快得多。所以,音頻AGC的增益值需要跟隨這種慢的變化而忽略快變化。由于可變步長(zhǎng)AGC算法增益調(diào)整時(shí)間可以控制,故采用可變步長(zhǎng)算法。當(dāng)增益調(diào)整時(shí)間相對(duì)語(yǔ)音信號(hào)正常變化時(shí)間很長(zhǎng)時(shí),那么增益基本不會(huì)改變,根據(jù)語(yǔ)音信號(hào)的特點(diǎn),設(shè)定增益調(diào)整時(shí)間為4 s。如果輸出信號(hào)很大,增益需要快速減小,否則可能燒毀器件。當(dāng)檢測(cè)到輸出信號(hào)大于期望值上限時(shí),增益調(diào)整時(shí)間設(shè)為0.5 ms[6]。
AGC增益值調(diào)整算法計(jì)算公式如下:
3)輸入信號(hào)動(dòng)態(tài)范圍的確定。輸入動(dòng)態(tài)范圍太大,會(huì)導(dǎo)致大量噪聲被放大,輸出信號(hào)質(zhì)量差,而輸入動(dòng)態(tài)范圍太小會(huì)使得小信號(hào)被忽略,產(chǎn)生失真[7]。考慮實(shí)際情況,定義比輸入信號(hào)的最大值小36 dB的信號(hào)為噪聲。如果輸入一直是噪聲,應(yīng)該將增益置為 0,不傳輸噪聲。而在人說話的間隙,輸入的信號(hào)也完全是噪聲,此時(shí)不能將增益值置為0,否則根據(jù)上述需要緩慢增大增益的要求,在聲音信號(hào)增大時(shí)不能有效地放大。根據(jù)噪聲信號(hào)持續(xù)的時(shí)間,可以判斷該噪聲是否為聲音信號(hào)的間隙,如果時(shí)間比較短,則認(rèn)為是聲音信號(hào)的間隙。時(shí)間長(zhǎng)短的判決門限的選取需適當(dāng),太長(zhǎng)會(huì)使得聲音信號(hào)結(jié)束之后還會(huì)有很長(zhǎng)一段的噪聲輸出,太短則使得誤判較嚴(yán)重,不能高質(zhì)量地傳輸語(yǔ)音信號(hào)。時(shí)間判決門限設(shè)定為5 s比較合適。在音頻信號(hào)最小值與噪聲門限之間,留有6 dB的范圍,在此區(qū)間,噪聲對(duì)信號(hào)的幅度影響很大,因此固定增益值,即不放大噪聲,也不屏蔽信號(hào)。
4)增益大小的限制。為了避免增益過大,信號(hào)突變燒毀器件,將增益限制在一個(gè)范圍內(nèi),如果計(jì)算得到的增益大于這個(gè)范圍的最大值,增益取最大值,反之,增益取最小值。最大增益定為30 dB,最小增益定為-3 dB。
綜上所述,音頻AGC算法的流程如圖1所示。
圖1 AGC增益控制算法流程
信號(hào)輸出幅度變化規(guī)律的matlab仿真分析。根據(jù)上述增益調(diào)整算法,如果直接按照y(n) = x (n) × G (n)求輸出信號(hào),當(dāng)信號(hào)突然由很小變得很大時(shí),會(huì)出現(xiàn)過沖現(xiàn)象,為了避免這種現(xiàn)象,給信號(hào)增加一個(gè)延時(shí),即按照 y (n ) = x (n- 32)× G(n)計(jì)算輸出,可以很好地解決過沖的問題,雖然會(huì)對(duì)信號(hào)由小變大時(shí)產(chǎn)生一些不利的影響,但是在可以接受的范圍內(nèi)。仿真結(jié)果如圖2和圖3所示。
圖2 輸入信號(hào)增大輸出幅度變化
圖3 輸入信號(hào)減小輸出幅度變化
圖2 為輸入信號(hào)由小突然變大時(shí)輸出信號(hào)幅度變化情況;圖3為輸入信號(hào)由大突然變小時(shí)輸出信號(hào)幅度變化情況。由圖 2(a)可知,輸出信號(hào)大于輸出信號(hào)幅度上限值時(shí),增益調(diào)整的節(jié)拍約為60個(gè)節(jié)拍。同時(shí)可知信號(hào)由小突然變大,增益有一個(gè)從大到小衰減的過程,如果不延時(shí),大信號(hào)與大增益相乘,必然會(huì)導(dǎo)致輸出信號(hào)很大;信號(hào)延時(shí)是為了在增益減小到一定程度之后再和大信號(hào)相乘,這樣輸出不會(huì)過大。對(duì)比圖 2(b)可知,經(jīng)過延時(shí)之后,輸出的最大幅度減小了很多,維持在理想幅度上方的時(shí)間也短了很多,但是有一段時(shí)間處于理想幅度下方,可以忍受信號(hào)變小的失真,而不能忍受信號(hào)過大導(dǎo)致燒毀器件。由圖 3(a)可知,輸出信號(hào)比理想幅度下限小時(shí),調(diào)整時(shí)間約為600 000個(gè)節(jié)拍。由圖 3(b)可知,信號(hào)如果信號(hào)由大變小的時(shí)候,由于延時(shí)的存在,會(huì)使得輸出信號(hào)先變大,后變小,同樣存在一段時(shí)間內(nèi)輸出較大的問題,但是由于信號(hào)增益變大時(shí)較緩慢,如果延時(shí)較小,在增益增大不多時(shí)就與減小后的信號(hào)相乘,那么雖然存在輸出較大,但是與理想幅度相當(dāng)接近,不會(huì)燒毀器件。總的來說,信號(hào)的延時(shí)需要取適當(dāng)?shù)闹?,一般延時(shí)32個(gè)節(jié)拍。
實(shí)驗(yàn)平臺(tái)簡(jiǎn)介,本實(shí)驗(yàn)平臺(tái)基于 alter公司的stratix_ii GX芯片,音頻采樣A/D采用A/D7655,處理完成之后射頻輸出采用A/D9957進(jìn)行D/A轉(zhuǎn)換。
FPGA內(nèi)部信號(hào)處理流程[8]如圖4所示。
圖4 FPGA信號(hào)處理流程
音頻信號(hào)通過A/D7655采樣進(jìn)來,進(jìn)行數(shù)字濾波,得到I/Q兩路數(shù)字信號(hào)。根據(jù)用I/Q信號(hào)計(jì)算出當(dāng)前信號(hào)的幅度值 Ain[9]。反饋的幅度值 A (n ) = Ain(n) × G (n),然后綜合 Ain及A來對(duì)增益進(jìn)行調(diào)整。雖然輸出信號(hào)小于輸出上限時(shí),調(diào)整時(shí)間有4 s,但是,當(dāng)信號(hào)幅度變化時(shí),增益的初期調(diào)整還是很快,對(duì)增益的改變較大,這與要求忽略信號(hào)的快變化矛盾,故文中的 Ain信號(hào)不用實(shí)時(shí)的信號(hào),而是將輸入信號(hào)按512個(gè)采樣點(diǎn)進(jìn)行分組,每組中的最大值作為 Ain信號(hào),那么實(shí)際上就忽略了信號(hào)在512個(gè)點(diǎn)內(nèi)的幅度的變化。
調(diào)節(jié)輸入信號(hào)的幅度,示波器上顯示的輸出信號(hào)的變化如圖5所示。
圖5 輸出信號(hào)隨輸入信號(hào)變化
圖5 中a、b兩個(gè)光標(biāo)是用示波器測(cè)量時(shí)得到的,c、d、e、f是為了方便敘述后期添加上去的。a、b兩個(gè)光標(biāo)之間是信號(hào)突然減小后保持不變時(shí)輸出信號(hào)變化情況;c、d兩個(gè)光標(biāo)之間是輸入信號(hào)快速變化時(shí)輸出情況;e,f兩個(gè)光標(biāo)之間是輸入信號(hào)突然增大時(shí)輸出信號(hào)變化情況。由圖5可知,輸入信號(hào)減小后,經(jīng)過 4 s左右可以將輸出信號(hào)調(diào)整到期望值;輸入信號(hào)快速變化時(shí),輸出會(huì)跟隨輸入的變化而變化;輸入信號(hào)突然增大時(shí),輸出信號(hào)不會(huì)有明顯的變化。AGC功能基本實(shí)現(xiàn)。
文中根據(jù)實(shí)際的語(yǔ)音信號(hào)的特點(diǎn),在傳統(tǒng)AGC算法[10]基礎(chǔ)上,提出了一種適應(yīng)語(yǔ)音通信的新型的靈活的AGC算法,并對(duì)該算法進(jìn)行了仿真,在仿真結(jié)果基礎(chǔ)上,對(duì)該算法在實(shí)際應(yīng)用中需要注意的問題進(jìn)行了詳盡的分析并提出解決方案,最后用VHDL語(yǔ)言在基于 FPGA的硬件平臺(tái)上實(shí)現(xiàn)該算法[11]。實(shí)驗(yàn)結(jié)果表明該算法具有良好的性能,可以以較小的失真為代價(jià),使得輸出的信號(hào)幅度平穩(wěn)性得到極大的提升。該算法已成功運(yùn)用于某語(yǔ)音通信的發(fā)射機(jī)中。
[1] 李夕紅,祝忠明,謝興紅.音頻信號(hào)采集與AGC算法的DSP實(shí)現(xiàn)[J].電子產(chǎn)品世界,2007(04):101-102.
[2] 劉艷.基于FPGA的大動(dòng)態(tài)范圍數(shù)字AGC的實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2009,17(08):42-43.
[3] 諶波,周劼,王世練.約束時(shí)間常數(shù)大動(dòng)態(tài)數(shù)字 AGC的設(shè)計(jì)[J].通信技術(shù),2011,44(12):144-145.
[4] 淦新富,郭立.基于主元統(tǒng)計(jì)的音頻隱寫分析[J].信息安全與通信保密,2007(02):63-64.
[5] 劉吉錄.解析智能型音頻處理器[J].西部廣播電視,2002(02):34-39.
[6] 丁丹,孫華燕.固定調(diào)節(jié)時(shí)間AGC方法的研究及FPGA實(shí)現(xiàn)[J].裝備指揮技術(shù)學(xué)院學(xué)報(bào),2009,20(06):87-90.
[7] 徐靖林,李永紅,吳威.WLAN接收AGC調(diào)整算法的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2009,42(09):9-11.
[8] 董智紅,崔嵬,吳嗣亮.全數(shù)字式前饋AGC設(shè)計(jì)與FPGA實(shí)現(xiàn)[J].北京理工大學(xué)學(xué)報(bào),2008,28(12):1093-1095.
[9] 李道虎,賈新成.音頻AGC的設(shè)計(jì)與實(shí)現(xiàn)[J].河南機(jī)電高等??茖W(xué)校學(xué)報(bào),2009,17(04):16-18.
[10] 黃懷信.一種短波數(shù)傳 AGC電路[J].通信技術(shù),1980(08):57-61.
[11] 鐘宏,劉地軍.FPGA與嵌入式處理器通信設(shè)計(jì)與實(shí)現(xiàn)[J].信息安全與通信保密,2011(08):38-39.