柯樂樂,方 圓,王 毅,呂迎春
(1.同方電子科技有限公司,江西 九江 332002;2.軍委裝備發(fā)展部軍事代表局駐鎮(zhèn)江地區(qū)軍事代表室,江蘇 鎮(zhèn)江 212000)
在短波電臺通信中,基帶信號傳輸距離、音頻源的不穩(wěn)定性等因素都會使進(jìn)入發(fā)射機(jī)前端的音頻信號幅度變化比較大[1]。為了使得激勵單元能夠接收到幅值穩(wěn)定的音頻信號,需要對射頻輸出之前的音頻信號進(jìn)行自動增益控制(Automatic Generation Control,AGC)算法處理。為了減小運算量,一般會在采樣率較低的階段進(jìn)行AGC 處理。AGC 處理除了使輸出的音頻幅值相對穩(wěn)定,還有一定的噪音處理功能。音頻AGC 必須實時跟蹤輸入音頻信號的幅值變化,一方面要減小不期望因素的干擾,另一方面要較準(zhǔn)確地反映音頻信號的幅度變化,同時還要平衡AGC 處理帶來的信號抖動和信號延時。運用數(shù)字化處理技術(shù),在現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)器件上實現(xiàn)數(shù)字音頻AGC 算法,可以使得AGC 控制更加精確,運行更加穩(wěn)定[2]。
AGC 作為自動控制領(lǐng)域的研究對象,在實際工程中被廣泛應(yīng)用,比如語音系統(tǒng)中對聲音大小的調(diào)節(jié),電機(jī)控制中對功率的調(diào)節(jié)等[2]。在通信領(lǐng)域中,AGC 是無線接收系統(tǒng)重要的組成部分,它會根據(jù)輸入信號的幅值大小動態(tài)調(diào)整接收系統(tǒng)的增益,從而提高接收系統(tǒng)的性能[3-6]。根據(jù)不同的實現(xiàn)方式,AGC 可分為模擬AGC 和數(shù)字AGC。
模擬AGC 電路結(jié)構(gòu)主要包括檢波器、濾波器、比較器、增益控制和可變增益放大器。經(jīng)過檢波和濾波后可以得到輸出信號的幅值,然后與參考電平進(jìn)行比較得到電平誤差,增益控制電路根據(jù)電平誤差產(chǎn)生信號控制可變增益放大器的增益值,從而完成對輸入信號的調(diào)節(jié)。
數(shù)字AGC 分為數(shù)控AGC 和全數(shù)字 AGC。數(shù)控AGC 包括模數(shù)轉(zhuǎn)換器(Analog to Digital Converter,ADC)、數(shù)模轉(zhuǎn)換器(Digital to Analog Converter,DAC)、可變增益放大器、數(shù)字信號處理單元。數(shù)控AGC 輸出的信號經(jīng)過ADC 采樣后將模擬信號轉(zhuǎn)換為數(shù)字信號;數(shù)字信號處理單元根據(jù)輸出信號計算出信號幅值,并與設(shè)定的參考信號幅值進(jìn)行比較從而得到誤差值,再通過增益控制算法計算得到對應(yīng)的增益值,最后通過DAC 將增益值轉(zhuǎn)換為模擬信號控制可變增益放大器。全數(shù)字AGC 包括ADC、數(shù)字乘法器和數(shù)字信號處理,ADC 對輸入信號采樣,然后與增益值相乘后得到輸出信號,并將輸出信號反饋到數(shù)字信號處理單元,從而得到下一次的增益值。
模擬AGC 電路器件極易受外界因素影響,對干擾信號比較敏感,導(dǎo)致其穩(wěn)定性和可靠性都比數(shù)字AGC 差。數(shù)字AGC 對信號的調(diào)整更加精確,實現(xiàn)方式靈活,電路集成度和成本都比模擬AGC 低。因此,數(shù)字AGC 更符合軟件無線電的發(fā)展要求,會逐漸取代模擬AGC。
AGC的指標(biāo)參數(shù)是衡量AGC性能的重要依據(jù),數(shù)字AGC 的指標(biāo)參數(shù)主要包括動態(tài)范圍、穩(wěn)定時間和環(huán)路穩(wěn)定性[6-7]。
AGC 電路的動態(tài)范圍是表示對輸入信號控制能力的參數(shù)。因為AGC 的作用是將變化很大的輸入信號調(diào)節(jié)到輸出穩(wěn)定在固定范圍內(nèi),所以當(dāng)輸入信號的幅值變化越大且輸出信號的變化范圍越小時,AGC 的動態(tài)范圍就越好。
穩(wěn)定時間是指輸入信號幅值發(fā)生階躍變化時,輸出信號從階躍時刻到穩(wěn)定時所需要的時間。穩(wěn)定時間的選取非常關(guān)鍵,不但要考慮信道的特性,還要考慮接收信號的某些參數(shù),比如調(diào)制速率、信號功率變化速率等。實際工程應(yīng)用中,數(shù)字AGC 的穩(wěn)定時間一般要可控,這不僅和控制算法有關(guān),還和信號的采樣周期有關(guān)。
理論上,數(shù)字AGC 將輸入信號幅值調(diào)節(jié)到固定范圍內(nèi)后,數(shù)字增益值將不會發(fā)生變化。但在實際工程使用中,由于噪聲信號干擾或者對輸入信號幅值的估計存在誤差,數(shù)字增益值可能會在某個值附近不停變化,導(dǎo)致AGC 輸出信號幅度在一定范圍內(nèi)抖動。如果抖動的次數(shù)很頻繁或者信號抖動的幅值比較大,會影響AGC 后級處理。
短波發(fā)射機(jī)中,模數(shù)轉(zhuǎn)換(Analog to Digital,AD)芯片采集到的線路音頻和麥克風(fēng)音頻以及外部設(shè)備輸入進(jìn)來的數(shù)字音頻允許的幅值范圍是-20~10 dB,需要經(jīng)過AGC 設(shè)計后使輸入的信號穩(wěn)定在0 dB。由于AGC 的期望值是一個定值,實驗中發(fā)現(xiàn),輸出信號會不斷調(diào)整,造成輸出信號幅度不穩(wěn)定[8],因此,在AGC 期望值的基礎(chǔ)上,設(shè)計了一個音頻信號輸出穩(wěn)定的動態(tài)范圍,即在AGC 期望值的基礎(chǔ)上允許上下浮動0.1 dB,輸出音頻信號幅值在此動態(tài)范圍內(nèi),則認(rèn)為信號是穩(wěn)定的,不需要再進(jìn)行調(diào)整。
根據(jù)輸入音頻信號幅值的要求,增益調(diào)整范圍固定在-10~20 dB,為了防止幅值計算錯誤或信號干擾影響幅值計算,當(dāng)計算出來的增益大于一定值時,以一定值為單位逐次調(diào)整,直至信號穩(wěn)定在允許的幅值范圍內(nèi),根據(jù)發(fā)射機(jī)對AGC 調(diào)整速度的要求,來確定需要進(jìn)行逐次調(diào)整的最小增益值a和單位b。
AGC 算法主要在FPGA 中實現(xiàn),F(xiàn)PGA 采用復(fù)旦微電子公司的FMQL 系列的FMQL45-FFG900,采用FPGA+ARM 體系,不僅擁有豐富的邏輯控制器,而且擁有高性能處理器,其處理器為四核A7處理器,工作頻率可達(dá)1.0 GHz,邏輯資源豐富,邏輯單元為350 000,查找表為218 600,觸發(fā)器為437 200,乘 法 器 為18×25,MACC 為900,4QUAD 高速GTX 收發(fā)器,支持PCIE GEN2×8、2 個AD 轉(zhuǎn)換器,可以測量片上電壓、溫度感應(yīng)。模擬AD 采用中國電子科技集團(tuán)公司第24 研究所的SAD7656 音頻AD 芯片,SAD7656 芯片具有6 個獨立采樣通道,最大采樣速率為250 kHz,信噪比(Signal-to-Noise Ratio,SNR)為86 dB@50 kHz,數(shù)據(jù)接口為16 bit 并行接口或串行外部設(shè)備接口(Serial Peripheral Interface,SPI)。
本方案所采用的數(shù)字AGC 的設(shè)計原理如圖1所示,主要包括模擬AD 采樣、當(dāng)前信號平均幅值計算、平均幅值和期望幅值比較、增益控制、增益值乘當(dāng)前信號得到輸出信號。
圖1 數(shù)字AGC 設(shè)計原理
FPGA 中信號為并行、流水、定點處理模式。在圖1 中,計算信號平均幅值需要采集一段時間內(nèi)的信號,并且判斷和計算都需要耗費一定的時間,導(dǎo)致計算出的增益值不能與計算該值的數(shù)據(jù)同步,造成輸出信號功率頻繁抖動[9]。增益值通過迭代計算得到,AGC 控制范圍越大,迭代收斂時間越長,音頻數(shù)據(jù)與增益值相差越大,輸出信號功率抖動越明顯。
為消除數(shù)據(jù)不同步產(chǎn)生的抖動,本文采用的信號同步處理方法是將輸入的數(shù)字音頻信號存入RAM中進(jìn)行群延時處理,信號緩存長度等于增益值更新的時間長度,這樣就可以得到穩(wěn)定的信號輸出[10],原理見圖2 所示。
圖2 加入同步處理的數(shù)字AGC設(shè)計原理
定點計算中數(shù)據(jù)相乘可能會導(dǎo)致信號位數(shù)溢出,而且計算精度不高,所以將圖2 中的判斷模塊和增益控制模塊采用浮點運算,另外為了加快運算時間,浮點運算的時鐘采用FPGA 的系統(tǒng)時鐘,浮點AGC 設(shè)計流程如圖3 所示。
圖3 浮點同步數(shù)字AGC 設(shè)計原理
本文設(shè)計的AGC 算法流程如圖4 所示。當(dāng)計算得到的輸入信號的平均幅值在穩(wěn)定范圍內(nèi)時,則輸出增益值為1,作用于群延時后的信號。當(dāng)計算得到的輸入信號的平均幅值大于期望的幅值穩(wěn)定范圍時,輸出計算的當(dāng)前增益值,作用于群延時后的信號。當(dāng)計算得到的輸入信號的平均幅值小于期望的幅值穩(wěn)定范圍時,與上一次計算的增益值比較,如果變化超過0.1 dB,則計算增益值并判斷是否需要逐次調(diào)整增益值,如果不需要,則輸出當(dāng)前計算的增益值,作用于群延時后的信號;如果需要,則逐次調(diào)整增益值,計算需要逐次調(diào)整的次數(shù)N,判斷是否完成N次調(diào)整,如果已完成,則增益值不變,否則要計算出第n(n 圖4 短波發(fā)射機(jī)中數(shù)字浮點同步AGC 算法流程 仿真模擬音頻輸入單音和雙音,信號幅值范圍為-20~10 dB,首先仿真幅值多次改變的單音輸入信號如圖5 所示,可以觀察到輸入的音頻信號的幅值隔一段時間會改變,仿真進(jìn)入發(fā)射機(jī)前端的音頻信號幅度忽大忽小。經(jīng)過AGC 算法后,將輸入音頻信號的平均幅值調(diào)整到0±0.1 dB,在圖5 中,可以觀察到經(jīng)過AGC 處理后信號的平均幅值一直穩(wěn)定在規(guī)定的范圍內(nèi),滿足設(shè)計要求。 圖5 單音信號經(jīng)過AGC 算法處理仿真 當(dāng)輸入音頻信號是幅值多次改變的雙音信號時,經(jīng)過本文設(shè)計的AGC 算法后,也可以將輸入音頻信號的平均幅值調(diào)整到0±0.1 dB,仿真如圖6所示,圖中的信號幅值是指一段時間內(nèi)信號的平均幅值,當(dāng)音頻信號的平均幅值發(fā)生改變時,經(jīng)過一段短暫時間的調(diào)整,AGC 處理后的信號平均幅值會穩(wěn)定在要求的范圍內(nèi),AGC 調(diào)整時間滿足發(fā)射機(jī)功率穩(wěn)定時間要求。 圖6 雙音信號經(jīng)過AGC 算法處理仿真 將此AGC 算法應(yīng)用到某型號的短波發(fā)射機(jī)平臺上時,用綜測儀接入音頻信號,不斷改變輸入音頻信號的幅值,經(jīng)過AGC 算法處理后的信號的幅值會快速調(diào)整到一定的范圍內(nèi),使發(fā)射機(jī)輸出功率穩(wěn)定在要求的范圍內(nèi);接入麥克風(fēng),開啟PTT,當(dāng)喊話聲音忽大忽小時,即輸入信號幅值波動較大的情況下,能在短時間內(nèi)調(diào)節(jié)輸出信號幅值,使其快速收斂,為后級電路提供穩(wěn)定的輸入信號,且方案簡單,易于實現(xiàn)[11]。另外,AGC 處理后輸出信號幅值的參考值是可調(diào)的,算法靈活性和適應(yīng)性強(qiáng)。 本文首先對AGC 算法的原理、分類、指標(biāo)進(jìn)行了介紹,其次重點分析了浮點同步數(shù)字AGC 算法的設(shè)計思路,最后通過FPGA 仿真和在某型號短波發(fā)射機(jī)平臺上的應(yīng)用驗證了此算法的可行性。5 結(jié)語