趙永翼, 丁建楠
(沈陽師范大學(xué) 科信軟件學(xué)院, 沈陽 110034)
在現(xiàn)實世界中,信號的應(yīng)用已經(jīng)占據(jù)了一個具有挑戰(zhàn)性的地位。隨著可編程邏輯器件的發(fā)展,現(xiàn)場可編程門陣列(FPGA)成為實現(xiàn)自適應(yīng)濾波器的重要手段。FPGA在對相同的硬件進行重新編程方面表現(xiàn)出良好的靈活性,同時通過在較短的處理時間內(nèi)啟用并行計算實現(xiàn)了良好的性能。
自適應(yīng)濾波器是根據(jù)優(yōu)化算法自調(diào)整傳遞函數(shù)的濾波器。由于優(yōu)化算法的復(fù)雜性,大多數(shù)自適應(yīng)濾波器都是數(shù)字濾波器,它們執(zhí)行數(shù)字信號處理,并根據(jù)輸入信號來調(diào)整性能[1-3]。對于某些應(yīng)用程序,需要自適應(yīng)系數(shù),因為所需處理操作的某些參數(shù)(例如某些噪聲信號的特性)事先不知道。在這種情況下,通常采用自適應(yīng)濾波器,它使用反饋來細化濾波器系數(shù)的值,從而得到它的頻率響應(yīng)。自適應(yīng)濾波技術(shù)是近幾十年來發(fā)展起來的信號處理理論的一個重要分支。它的主要特點是濾波器參數(shù)可以隨著輸入信號統(tǒng)計特性的變化而自適應(yīng)調(diào)整,自適應(yīng)調(diào)整可以使濾波器在最佳狀態(tài)下運行,獲得所需的輸出信號。自適應(yīng)濾波技術(shù)已廣泛應(yīng)用于通信系統(tǒng)、控制系統(tǒng)、雷達系統(tǒng)等領(lǐng)域。更重要的是,當這種技術(shù)應(yīng)用于不同的應(yīng)用程序時,它只是有不同的輸入信號和期望的信號。調(diào)整過程涉及到成本函數(shù)的使用。例如,最小化輸入的噪聲分量,這是濾波器最優(yōu)性能的一個準則,它決定了如何修改濾波器系數(shù),以在下一次迭代中最小化成本。有維納濾波器,它是平均平方誤差的最優(yōu)線性濾波器,以及幾種試圖近似它的算法,如最速下降法。還有一種最小均方算法,由Windrow和Hoff開發(fā),最初用于人工神經(jīng)網(wǎng)絡(luò)[4-5]。算法的選擇高度依賴于感興趣的信號和操作環(huán)境,以及所需的收斂時間和可用的計算能力。利用IIR(無限脈沖響應(yīng))或FIR(有限脈沖響應(yīng))濾波器可以建立自適應(yīng)數(shù)字濾波器。FIR本身是穩(wěn)定的,因為它的結(jié)構(gòu)只涉及正向路徑,不存在反饋。反饋到輸入端的存在可能導(dǎo)致濾波器不穩(wěn)定,產(chǎn)生振蕩。因此,濾波器的設(shè)計是通過FIR實現(xiàn)來實現(xiàn)的。
LMS的步長μ是一個非常重要的自適應(yīng)過濾參數(shù),同時它在參考信號功率、穩(wěn)定控制、收斂速度和LMS的波動適應(yīng)過程中也非常重要。當步長較大時,LMS算法收斂速度較快,但穩(wěn)態(tài)均方誤差(MSE)增大。另一方面,如果步長比較小,MSE的穩(wěn)態(tài)較小,但收斂速度較慢。因此,步長在LMS算法的收斂速度和MSE的穩(wěn)態(tài)之間提供了一個平衡。一個直觀的方法來提高LMS算法的性能是使步長可變而非固定,也就是說,在LMS算法中選擇大的初始收斂步長值,當系統(tǒng)接近其穩(wěn)定狀態(tài)值時,并使用小的步長值時,可以產(chǎn)生可變步長LMS算法。利用該方法可以獲得較快的收斂速度和較小的穩(wěn)態(tài)MSE。為了便于描述,首先在具有真實信號的系統(tǒng)辨識模型的背景下,建立了LMS算法。在信號傳輸過程中,由于介質(zhì)性能的變化,會產(chǎn)生噪聲和失真。這些變化可能是慢變化或快變化,大多數(shù)時間變化是未知的。自適應(yīng)濾波器的應(yīng)用使信號失真降至最低,在實時信號處理領(lǐng)域得到了廣泛的應(yīng)用。自適應(yīng)濾波算法構(gòu)成了濾波系數(shù)的調(diào)節(jié)機制,實際上與經(jīng)典的優(yōu)化技術(shù)密切相關(guān)。此外,自適應(yīng)濾波器由于其實時自調(diào)整特性,在緩慢變化的環(huán)境中,可以有效跟蹤一個最佳動作。自適應(yīng)濾波器的輸入輸出關(guān)系取決于其傳遞函數(shù)。這種結(jié)構(gòu)包括有限脈沖響應(yīng)(FIR)和無限脈沖響應(yīng)(IIR)濾波器。這對給定自適應(yīng)算法的計算復(fù)雜度和自適應(yīng)過程的總體速度有很大的影響。濾波器系數(shù)的自適應(yīng)遵循特定目標函數(shù)或成本函數(shù)的最小化過程。
最小均方(LMS)算法作為自適應(yīng)算法中的一種基本方法和重要方法, 具有計算量小、實現(xiàn)簡單等優(yōu)點, 具有良好的可用性。 然而, 傳統(tǒng)的LMS實現(xiàn)難以滿足實時需求和高速的數(shù)字信號處理。 而且,隨著采樣率、單處理單元容量和系統(tǒng)頻率的提高, 嚴重增加了系統(tǒng)成本。 由于FPGA具有存儲量大、粒度小、并行計算等優(yōu)點, 在基于并行延遲LMS(PDLMS)的FPGA中建立了一種基于約束型的PDLMS自適應(yīng)濾波結(jié)構(gòu)。 隨后, 將約束PDLMS應(yīng)用于信息采集系統(tǒng), 并將其性能與其他方法進行了比較。
維納濾波算法中,以均方誤差表示的輸出為最優(yōu),下面給出了最優(yōu)輸出系數(shù)的表達式:
w0=R-1p
(1)
其中:R為輸入的相關(guān)矩陣;P為輸入與期望響應(yīng)之間的互相關(guān)向量。當信號統(tǒng)計量隨時間變化時,即使用自適應(yīng)濾波器的情況下,則必須重新計算輸出系數(shù)。這需要計算兩個矩陣,其中一個求倒數(shù),然后把它們相乘。該算法不能實時計算,因此必須使用其他近似維納濾波器的算法[6-9],可以使用最速下降法,收斂到最優(yōu)濾波器權(quán)值或給定值。由于曲面(或超曲面)的梯度指向最大值的方向增加,則梯度的反方向(-)將指向曲面的最小點。通過使用一種方式來更新權(quán)值,可以自適應(yīng)地達到最小值:
wn+1=wn+μ(-n)
(2)
其中,μ為步長參數(shù),最小均方(LMS)算法類似于急降法,通過迭代逼近MSE最小值來調(diào)整權(quán)值。一開始這種方法用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)。關(guān)鍵是,LMS算法不是每次都要計算梯度,而是使用梯度的粗略近似。誤差en,在濾波器輸出時可表示為
(3)
其中:dn是期望輸出;un是濾波器的輸入。利用誤差可以求出半徑的近似值:
=-2enun
(4)
將梯度的表達式代入急降法,權(quán)值更新得到
wn+1=wn+2μenun
(5)
其中μ為步長參數(shù),定義了算法收斂到最優(yōu)權(quán)值的速度。最速下降算法收斂或穩(wěn)定的充要條件是μ滿足:
(6)
其中:M為濾波器數(shù)目;Smax為濾波器輸入功率譜密度的最大值。因為它只涉及簡單的加法和乘法,因此,這是首選的方法。
當LMS算法在硬件上實現(xiàn)時,這種硬件實現(xiàn)帶來了計算瓶頸,限制了迭代速度。為了解決這個問題,Herzberg提出了一種延遲LMS算法[10-14]。然而,延遲LMS算法中存在的時延信息對算法的收斂性能有很壞的影響,當濾波器階數(shù)變大時,算法的收斂性能更差。針對這些不足,提出了一些算法,以提高算法的收斂性能為代價,增加了運算復(fù)雜度。
并行延遲LMS算法是一種將延遲和并行技術(shù)相結(jié)合的LMS算法。在相同條件下,PDLMS算法比延遲LMS算法的步長限制小,收斂速度快,數(shù)據(jù)吞吐量高,同時保持了延遲LMS算法高效、簡單的優(yōu)點。
LMS算法表達式如下:
其中,w(n)=[w0(n),…,wN-1]T是自適應(yīng)濾波系數(shù),x(n)=[x(n),…,x(n-N+1)]T是輸入信號序列,y(n)是輸出信號,e(n)預(yù)測錯誤信號,d(n)是期望信號序列,μ是步長參數(shù)和N是自適應(yīng)濾波長度。
需要注意的是,LMS算法的誤差e(n)是在執(zhí)行了一次乘法和n次順序加法之后產(chǎn)生的。N個順序的加法限制了LMS算法的吞吐率[15]。為了獲得更高的吞吐率,引入了LMS算法和DLMS算法,其表達式可以寫成
其中D為插入LMS算法誤差反饋路徑的總延時。如果D=0,則式(4)表示常用的LMS自適應(yīng)算法。
一個N-tap FIR濾波器可以在時域表示為:
(13)
輸入序列可分解為偶數(shù)部分x0(n)和奇數(shù)部分x1(n),如下:
同樣,長度為n的濾波系數(shù)w(n)也可分解為偶數(shù)部分w0和奇數(shù)部分w1。偶數(shù)輸出序列和奇數(shù)輸出序列可以計算為:
當并行技術(shù)應(yīng)用于延遲LMS算法時,得到PDLMS算法。以2個并行PDLMS算法為例,每個輸出分支需要2個輸入分支進行自適應(yīng)處理。并行PDLMS算法可分為6個部分:
為了更好的收斂性和穩(wěn)定性,可以在PDLMS算法中引入約束。對于變步長或噪聲均可施加約束,以獲得較快的收斂速度和較小的穩(wěn)態(tài)MSE。約束PDLMS算法與PDLMS具有相同的形式,但在適應(yīng)的過程中該算法步長μ是改變的。通過改變算法步長,可以改變算法的收斂速度,以及權(quán)系數(shù)在最優(yōu)值附近的變化量。
步長在每次迭代中更新,更新后的步長為:
(22)
因此,約束最小均方算法實現(xiàn)步驟如下:
1) 初始化權(quán)重向量為0;
2) 初始化μ值;
3) 通過e(k)=d(k)-y(k)計算錯誤信號;
4) 更新權(quán)重函數(shù):w(k+1)=w(k)+2μ(k)e(k)x(k);
5) 通過公式(22)更新步長。
通常FPGA實施過程中,會注重以下幾個方面:1)定義需求和規(guī)范;2)為設(shè)計概念建立符合規(guī)格的系統(tǒng)模型;3)用VHDL語言實現(xiàn)系統(tǒng)模型;4)模擬VHDL來確定它是否符合系統(tǒng)規(guī)范;5)使用VHDL描述綜合設(shè)計;6)通過仿真驗證,綜合設(shè)計仍然滿足要求;7)將綜合設(shè)計方案編制成硬件;8)對實際設(shè)備和電路進行測試,并與原要求進行性能比較。
本文利用Altera公司的旋流器裝置和QuartuslI軟件實現(xiàn)了約束PDLMS算法的硬件實現(xiàn)。設(shè)置陣列天線個數(shù)為4,延遲信息為6個時鐘檔位,濾波參數(shù)為8。
為了便于PDLMS算法的實現(xiàn),將系統(tǒng)劃分為多個模塊,從而達到直觀、易于校正的優(yōu)點。根據(jù)PDLMS算法的特點,可以將系統(tǒng)分為4個模塊,如圖1所示,PMx是相應(yīng)的處理模塊。利用FIFO的存儲結(jié)構(gòu),可以將AD的樣本數(shù)據(jù)分解為偶數(shù)部分和奇數(shù)部分。PM1是誤差產(chǎn)生模塊,接收PM3的權(quán)值w0和PM2的輸出yP2,將誤差信號e0和輸出數(shù)據(jù)yP1放入PM3和PM2中。圖2所示的PM1包括延遲單元、加法器單元、減法器單元和乘法器單元。
圖1 約束PDLMS的實施方案Fig.1 Scheme of Constrained PDLMS
圖2 PM1結(jié)構(gòu)Fig.2 Structure of PM1
PM3是更新權(quán)值的單位,其I/O參數(shù)為x0,e0,w0。PM3的模塊包含與PM1相同的單位。PM2和PM1內(nèi)部單位相同,但輸入?yún)?shù)不同。同樣,PM4和PM3也具有相同的處理單元。可以利用模塊復(fù)用的結(jié)構(gòu)高效的來實現(xiàn)該算法。此外,PM3和PM4的迭代模塊可以在同一時間的不同計算節(jié)點上運行。該計算特性可大大提高系統(tǒng)的并行性,提高系統(tǒng)的運行率,保持系統(tǒng)的實時性。
圖1、圖2直觀地表示了約束PDLMS算法的流程結(jié)構(gòu)。為了實現(xiàn)該算法,可以用IP核代替處理單元。為了降低資源消耗,提高運行速度,采用數(shù)據(jù)轉(zhuǎn)移的方法實現(xiàn)步長因子的更新。
圖3 步長因子對MSE的影響Fig.3 The effect of step size on MSE
為了說明本文提出方法的有效性,與文獻[16]及以DLMS作比較。文獻[16]僅提出一種并行延遲LMS算法,而本文對這種方法進行了一種有效的約束,使得信息采集及抑制噪聲效果非常好。以導(dǎo)航干擾系統(tǒng)為應(yīng)用背景,在室外環(huán)境模擬條件下進行了強干擾信號的處理。干擾的中心頻率為1 575.42 MHz,帶寬為10 MHz。干擾信號比為60 dB,采樣速率為65.28 MHz。首先分析了LMS中不同步長因子對MSE值的影響,如圖3所示。
根據(jù)圖3分析,采用相同的步長因子μ=2,實現(xiàn)約束PDLMS和DLMS算法與文獻[16]的對比。
通過對實測數(shù)據(jù)的處理,3種算法的收斂性能如表1所示。
表1 3種算法的收斂比較Table 1 Convergence comparison of the three algorithms
約束PDLMS算法具有良好的收斂性能。一方面,約束PDLMS算法的濾波長度是DLMS算法濾波的一半。另一方面,算法權(quán)值的更新率是采樣率的一半。整體上比文獻[16]收斂性有一定的提高。
表2 數(shù)據(jù)吞吐量比較Table 2 Comparison of data throughput MHz
系統(tǒng)的采樣時鐘為60 MHz。對于2個并行約束PDLMS算法,輸入數(shù)據(jù)的采樣時鐘為60 MHz。將輸入數(shù)據(jù)分為偶數(shù)和奇數(shù)部分后,樣本時鐘變?yōu)?0 MHz。因此當約束PDLMS算法處理輸入數(shù)據(jù)時,算法處理時鐘為30 MHz。然而,對于傳統(tǒng)的DLMS算法,輸入數(shù)據(jù)的采樣時鐘和算法處理都是60 MHz。在同一采樣時鐘中,n個并行約束PDLMS算法的處理時鐘是DLMS算法的第n個處理時鐘。文獻[16]中所采用的也是2個PDLMS算法,因此它與2個并行約束PDLMS的吞吐率是一樣的,在實際應(yīng)用中,DLMS算法不能滿足實時處理輸入數(shù)據(jù)的要求。約束PDLMS算法采用并行輸入輸出結(jié)構(gòu),減少了計算時鐘,實現(xiàn)了對高速率數(shù)據(jù)的自適應(yīng)運算。表2顯示了3種相同的算法處理時鐘之間的差異。
隨著LMS算法的發(fā)展,硬件需求隨著時鐘運行速度的提高而急劇下降,這給FPGA的信息快速獲取提供了一個挑戰(zhàn),但是伴隨著很多問題的出現(xiàn)。因此,本文提出抑制約束PDLMS方法來實施FPGA的信息獲取,更新其動態(tài)約束步長,結(jié)果表明,本文提出的約束PDLMS方法是可行的。其性能優(yōu)于傳統(tǒng)的最小均方算法和全矩陣實時自適應(yīng)數(shù)字信號處理算法,對比結(jié)果也表明,提出的新方法具有功耗低、吞吐量高等優(yōu)點。