施揚喜,趙利,梁儀慶,唐俏笑
(廣西精密導航技術與應用重點實驗室,桂林電子科技大學,桂林 541004)
在無線通信系統(tǒng)中,接收信號容易受障礙物、發(fā)射機功率大小、發(fā)射機與接收機之間距離及接收機位置變化等多因素的影響[1],使得天線接收到的信號強度出現較大的起伏變化,以致信號過小造成有用信號丟失,過大會過載失真,接收機可能無法正常解調信號,降低了接收機的性能。因此,為提高接收機信號接收及解調性能,接收機必須具有自動增益(AGC)調控功能,隨輸入信號強度變化自動調整,使輸出基帶信號強度穩(wěn)定在目標閾值。
傳統(tǒng)的無線電接收機一般采用模擬射頻電路完成AGC 電路設計[1],存在調試復雜、精度不高及控制不靈活等問題。而在目前軟件無線電技術應用的背景下,運用數字信號處理技術在數字基帶完成數字AGC 的設計實現,具有調整靈活、穩(wěn)定性好,得到廣泛關注。
現有的數字AGC 算法往往采用非線性AGC 控制,算法復雜,需要通過ROM 存儲的相關參數查表來輸出控制數據,工程實現需要消耗較多硬件資源[2],且與不同的射頻前端電路匹配性不好。本文采用軟件無線電設計思想,針對LMS6002D 射頻前端電路,在對射頻前端大量分析測試的基礎上,采用合適的信號處理算法,建立近似線性化的AGC 控制模型及控制機制,并在FPGA 基帶信號處理平臺上,設計完成相應的AGC 功能,實現接收信號的高動態(tài)和快速的AGC調整。
接收信號的自動增益控制AGC 采用閉環(huán)負反饋控制結構[3],實現信號電平幅值的自動調整。結合采用LMS6002D 射頻前端電路的軟件無線電接收機的結構,為了實現AGC 控制模型的線性化,采用幅值對數數字AGC 方法,AGC 信號處理算法結構如圖1 所示。其中,f(t)為射頻前端電路下變頻后的中頻(或基帶)信號,I(n)、Q(n)為經過基帶濾波和可編程增益放大等操作后作模數量化(ADC)處理得到的數字中頻(或基帶)信號。AGC 基帶信號處理算法是對I、Q 路數字采樣信號先做均值,后做平方和處理獲得基帶信號功率,再取對數運算,從而獲得與接收信號功率具有近似線性關系的檢測信號。在建立相應AGC 控制模型的基礎上,把檢測信號值與目標閾值做差,并將差值量化后,作為調整功率因子A,動態(tài)調整可編程放大器增益,以閉環(huán)負反饋的形式,周期性持續(xù)調整,實現AGC 功能。
圖1 數字AGC信號處理算法結構框圖
為了提高AGC 的調整性能,使輸出信號更加平穩(wěn),取I、Q 路的平均能量作為比較參數,即采樣N 點作均值處理。為了降低計算的復雜度,方便FPGA 算法的設計,首先分別對I、Q 作均值運算,在作平方運算,最后取對數,其基帶檢測信號功率y(n)計算為:
為了實現AGC 控制,需要設置控制參考閾值yref。當y(n)<yref時,需要增加射頻前端可編程放大器的增益。同樣地,當y(n)>yref時,需要降低射頻前端可編程放大器的增益。
為了運算和控制方便,可以進行如下操作。首先,按照式(2)計算誤差信號,用于確定相對于參考信號的信號增益誤差。然后,按照式(3)計算增益補償因子a(n),用于確定需要補償調整的增益值。其中,k 為控制模型的線性斜率值,c 為量化系數。
最后,按照式(4)調整可編程放大器增益。
由此,AGC 輸入端的信號fo(t)由下式(5),通過負反饋循環(huán)調整,實現AGC 控制功能。
目前,FPGA 對AGC 數字化程序設計主要采用查表法來調整功率因子A,即作對數處理后的差值Δ 存入ROM 中,通過建立映射關系查找A,此類方法需要消耗較多的硬件資源,并且調整的功率范圍越大及采集的數據量與ROM 的資源消耗成正比。為了提供控制效率,節(jié)約ROM 硬件資源,可以在對接收信號功率與檢測信號大小進行大量測試和分析的基礎上,建立近似線性化的AGC 控制模型,來簡化AGC 的設計與實現。
首先,確定射頻前端電路的ADC 變換器輸入信號的動態(tài)范圍,通過實驗測試分析,在合適的參數配置下,ADC 在輸入射頻信號功率為-58dBm 到-38dBm時,可以保證正常的工作狀態(tài)。然后,為了觀測輸入射頻信號x(n)功率與基帶檢測信號y(n)大小的關系,發(fā)射端信源可以逐次設置-58dm 到-38dBm 且間隔為1dBm 的傳輸信號。軟件無線電接收機經饋線接收高頻測試信號,由射頻前端完成信號下變頻及模數轉換,分別得到I、Q 兩路數字中頻(基帶)信號,并送至FPGA信號處理器,完成對I、Q 信號的采集處理及提取。由此,可以通過Quartus II 13.0 的在線邏輯分析儀觀查并保存提取采樣信號數據,發(fā)射功率為-44dB 時,接收機獲得的I、Q 兩路數字中頻信號的采樣觀測信號如圖2所示。
圖2 I、Q采樣信號波形圖
同時,也可以生成數據文件,采用MATLAB R2016b 軟件處理,按照AGC 信號處理算法,由式(1)分別對這21 組采樣數據做均值、平方及取對數運算,獲得到輸入信號功率與檢測信號功率關系曲線,如圖3所示。
圖3 輸入信號功率x(n)與檢測信號功率y(n)關系曲線
由圖3 可見,曲線呈近線性且均勻分布在斜率為k的斜線附近,其中,k=(ymax-ymin)/(xmax-xmin),由此可以獲得近似線性化的AGC 控制關系。為獲得最大的線性控制范圍,選擇AGC 調整控制參考點為曲線中心位置(-44,134),即調整接收機輸出中頻信號檢測值穩(wěn)定在134 附近。由式(2-5)可建立AGC 控制的線性數學模型,如式(6)。
按照實驗測試數據分析,上式中k 取值為2.2,yref取值為134。
軟件無線電接收機由數字基帶板(DSP+FPGA)和射頻前端(LMS6002D)兩部分組成[4],可以采用已建立的AGC 控制模型和設計的信號處理算法,在軟件無線電接收機的FPGA 上完成AGC 硬件的設計[5],AGC 硬件結構如圖4 所示。其中,數字基帶板的FPGA 完成信號處理算法的運算,并按照AGC 控制模型獲得需要調整的增益參數,通過SPI 接口快速反饋控制射頻前端LMS6002D 的增益放大器完成AGC 的功能。
現場可編程邏輯門陣列選用Altera 公司Cyclone II系列,型號為EP2C70F672 的FPGA 芯片,有豐富的門資源、運算快、時序性強及低功耗等特點,滿足AGC 系統(tǒng)高動態(tài)快速調節(jié)的要求,主要完成數據采集、基帶信號處理、射頻前端的通信配置等操作;射頻前端選用Lime 公司的可現場編程的單芯片收發(fā)器,多標準多寬帶射頻端的LMS6002D 模塊,該模塊高度集成了數模/模數轉換、低通濾波、中頻信號放大、低噪放大、混頻器及頻率合成器等模塊[6],且有3 個輸入通道,完成高頻信號低噪放大、數字下變頻、濾波、功率放大及模數量
化為數字中頻信號等接收射頻處理。
圖4 AGC硬件結構
LMS6002D 的模數轉換ADC 為12 位,最高采樣率為50MHz,有61dB 的接收功率調整范圍,包括6dB 低噪放RXLNA、25dB 的中頻放大器RXVGA1 及30dB 的二級中頻放大器RXVGA2,RXVGA1 有5dB、19dB、30dB 三種功率設置,RXVGA2 功率控制步長為3dB,即量化系數c 為3??赏ㄟ^RXLNA、RXVGA1 的配置完成AGC 的初始化設計,在通過RXVGA2 完成AGC的微調整,完成AGC 的總體設計。
FPGA 與射頻前端連接完成數據通信與配置,連接信號主要有接收時鐘RX_CLK、I、Q 路信號采樣時鐘RX_IQ_SEL,其中RX_IQ_SEL 時鐘是RX_CLK 內部電路二分頻產生的,12 位復用數據總線RXD[11:0],及LMS6002D 寄存器配置串行端口接口SPI 線,包括輸入/輸出SDIO、輸出SDO、使能SEN(低電平有效)及時鐘SCLK(上升沿觸發(fā)),其中最高時鐘頻率為50MHz且完成一次指令操作需要16 個時鐘。其中RX_CLK驅動LMS6002D 完成ADC 采樣并通過內部MUX 模塊電路將模數量化后的I、Q 路數字信號以IQ 或QI 順序傳送至總線RXD[11:0],FPGA 通過RX_IQ_SEL 對總線RXD[11:0]的IQ 數據采樣提取,然后完成數字信號基帶處理,并將處理好的AGC 相關參數通過串行端口接口SPI 配置LMS6002D 的相關寄存器。
對AGC 系統(tǒng)進行數字邏輯設計[7],并在軟件無線電接收機上完成軟件設計實現高動態(tài)AGC 快速調整設計。為保證接收機AGC 的高動態(tài)、快速調整性,并保證每次均值處理能完成至少一次SPI 指令配置,需要計算均值處理采樣點數N,鑒于軟件無線電接收機的系統(tǒng)時鐘RX_CLK 為39MHz,可以設置基帶信號采樣時鐘RX_IQ_SEL 為19.5MHz 及SPI 配置時鐘為5MHz,即SPI 完成一次指令操作為3.2us,為方便硬件描述語言Verilog HDL 除法操作,N 值可取128,即每次均值處理采樣時間約為6.56us。
FPGA 通過RX_IQ_SEL 邊沿觸發(fā),驅動ADC 采樣,獲得I、Q 路信號數據I(n)和Q(n),并存在12 位的寄存器中,然后分別累加N 次采樣值,再通過移位的方法求I、Q 路信號的采樣均值。之后對均值做平方運算,經過整型轉浮點型IP 核和處理送入以10 為底對數IP 核完成對數處理并將結果以浮點型存在32 位寄存器中。為了能滿足處理精度要求,保留一位小數,并得到平均幅值對數值,即檢測信號采樣序列y(n)。按照AGC 控制機制,檢測信號采樣序列y(n)與控制參考閾值134 做差,并線性解算求出此刻的增益調整值a(n),并做量化系數c 為3 的量化處理,最后通過SPI將調整值配置到地址為0x65(RXVGA2)或0x76(RXVGA1)寄存器中完成增益調整。若調整值較大,則優(yōu)選配置第一級可編程放大器RXVGA1 做粗調,再做第二級可編程放大器RXVGA2 細調;若值較小,則保持RXVGA1 不變,直接調整RXVGA2。只要AGC 控制電路不斷周期性高速循環(huán)更新調整可編程放大器,即可完成AGC 功能。
軟件設計采用自底向上層次化設計方法[8],將系統(tǒng)分為若干個子模塊,在Quartus II 13.0 軟件環(huán)境中完成算法、電路及布線等設計,總體的寄存器傳輸級電路(RTL)電路結構如圖5 所示。
圖5 AGC寄存器傳輸級電路結構
整個系統(tǒng)主要由基帶信號處理模塊、整型轉浮點型處理模塊、對數處理及射頻前端配置模塊這5 個模塊組成,程序算法設計與IP 核協同控制射頻前端的可變增益放大器完成中頻信號電平的調控,滿足ADC 對輸入信號幅度的要求。
為了更直觀地驗證基于控制模型和算法以及AGC硬件設計的正確性,在Modelsim-Altera 10.1d 仿真環(huán)境對RTL 電路進行功能仿真驗證,AGC 電路的仿真輸出結果如圖6 所示。其中,dataI、dataQ 為待調整的IQ路采樣信號,分別對應發(fā)射功率為-58dB、-55dB、-44dB、-38dB、-48dB 的采樣信號,-58dB 對應信號電平強度較小,-38dB 對應信號電平強度較大,已出現部分失真。clk 為IQ 采樣時鐘,data_float_out 為待調整信號的檢測功率,RXVGA2 為地址0x65 寄存器的微調寫入值,dataI44、dataQ44 為調整至檢測功率yref附近的IQ路采樣信號,由data_float_out44 可知,調整后信號檢測功率在134 左右。
仿真驗證結果表明,信號電平強度較小時增大RXVGA2 增益,強度過大降低RXVGA2 增益,系統(tǒng)時序邏輯設計正確,達到快速穩(wěn)定動態(tài)輸出信號的目的。
圖6 AGC系統(tǒng)建模的FPGA仿真輸出結果
本文完成了一種AGC 控制算法和控制模型以及軟件無線電接收機高動態(tài)、快速AGC 調整電路的設計。首先FPGA 對總線RXD[11:0]的I、Q 路數字信號采樣,在對I、Q 采樣幅值做均值、平方、對數預處理,然后根據建立的控制模型量化處理增益調整值,最后通過SPI 配置射頻前端放大器完成AGC 調整。通過設計采樣時間6.56us 及SPI 配置時間3.2us 實現系統(tǒng)高動態(tài)、快速處理,并根據AGC 控制模型完成FPGA 數字邏輯設計,很大簡化了FPGA 的設計且節(jié)約了硬件邏輯資源。最后通過采樣數據仿真實驗表明,基于AGC 模型的設計能高動態(tài)、快速調整并穩(wěn)定輸出信號,提高了接收機的動態(tài)性能。