李 鋒,邱陳輝,徐祖強(qiáng)
(江蘇科技大學(xué) 電子信息學(xué)院,江蘇 鎮(zhèn)江212003)
基于LMS算法的時(shí)域自適應(yīng)濾波器被廣泛應(yīng)用于通信、雷達(dá)、聲吶、地震學(xué)和生物醫(yī)學(xué)工程等領(lǐng)域,主要分成系統(tǒng)辨識(shí)、逆模型,預(yù)測(cè),干擾消除四大類別[1,2]。雖然已經(jīng)有前人對(duì)基于FPGA芯片和LMS算法的自適應(yīng)濾波器做了研究探討,但是機(jī)械地將理論算法映射到系統(tǒng)芯片上,或者采用Simulink搭建模塊群再使用DSP Builder轉(zhuǎn)換成VHDL/Verilog程序來實(shí)現(xiàn)自適應(yīng)濾波器都不是最佳方案,前者不能充分發(fā)揮理論算法的真正優(yōu)勢(shì),后者導(dǎo)致程序的極大冗余性,顯然對(duì)自適應(yīng)濾波器的處理速度和FPGA的資源利用率是不利的。本文首先回顧自適應(yīng)濾波結(jié)構(gòu)和算法,然后提出改進(jìn)的DLMS算法,并使用MATLAB對(duì)其進(jìn)行仿真驗(yàn)證,接著在FPGA上選用FIR直接型結(jié)構(gòu)實(shí)現(xiàn)該自適應(yīng)濾波器,并且采用流水線技術(shù)進(jìn)行優(yōu)化,最后將其與先前的設(shè)計(jì)方案進(jìn)行對(duì)比給出結(jié)論。
嚴(yán)格意義上講,自適應(yīng)濾波器是時(shí)變的、非線性的,但若濾波器輸出端濾波、平滑或預(yù)測(cè)的量是它的輸入觀測(cè)量的線性函數(shù),我們往往認(rèn)為該濾波器是線性的。線性自適應(yīng)濾波器的實(shí)現(xiàn)分成結(jié)構(gòu)和算法兩部分。前者根據(jù)自適應(yīng)濾波器的脈沖響應(yīng)是否有限長(zhǎng)可以分為有限長(zhǎng)脈沖響應(yīng)(FIR)和無限長(zhǎng)脈沖響應(yīng)(IIR)結(jié)構(gòu),F(xiàn)IR結(jié)構(gòu)由于只具有前向路徑而更受青睞,它又可以細(xì)分為直接型、轉(zhuǎn)置型、網(wǎng)格型和脈動(dòng)陣列型[1]。本文采用最直觀的、應(yīng)用最廣泛的FIR直接型結(jié)構(gòu)。
Bernard Widrow等人于1960年提出的LMS算法由最速下降法推導(dǎo)出來,基于維納濾波理論和最小均方誤差(MMSE)準(zhǔn)則,屬于線性自適應(yīng)濾波算法。
令x(n)=[x(n),x(n-1),…,x(n-L+1)]T表示自適應(yīng)濾波器的輸入信號(hào)矢量,其中L表示該濾波器的階數(shù),w(n)= [w0(n),w1(n),…,wL-1(n)]T表示抽頭權(quán)值矢量,d(n)表示期望信號(hào),用于給最優(yōu)濾波提供一個(gè)參考,y(n)表示該濾波器的輸出信號(hào),e(n)表示誤差信號(hào),則LMS算法的基本形式如下:
濾波輸出
估計(jì)誤差
抽頭權(quán)值更新
其中H表示轉(zhuǎn)置和共軛相結(jié)合的埃爾米特轉(zhuǎn)置,*表示共軛,^表示對(duì)權(quán)值系數(shù)當(dāng)前值得估計(jì)。μ表示LMS算法的收斂因子,也叫步長(zhǎng)參數(shù),盡管[1,2]詳細(xì)推導(dǎo)并給出了μ的取值范圍,然而其上限涉及輸入矢量x(n)的自相關(guān)矩陣的最大特征值,下限僅要求大于零,但在實(shí)際應(yīng)用中非但該最大特征值難以求解,而且取接近零的正值仍可能導(dǎo)致自適應(yīng)系統(tǒng)的不穩(wěn)定,因此μ值的最終確定通常需要進(jìn)行反復(fù)試驗(yàn)。該算法的結(jié)構(gòu)圖十分直觀,如圖1所示。
圖1 LMS算法的結(jié)構(gòu)
上述表達(dá)式是LMS算法的復(fù)數(shù)形式,實(shí)數(shù)形式只需將埃爾米特轉(zhuǎn)置 “H”改成普通轉(zhuǎn)置 “T”;而e(n)的共軛就是其本身,“*”可以去掉;抽頭權(quán)矢量的當(dāng)前值我們認(rèn)為就是其當(dāng)前估計(jì)值, “^”亦可去掉。雖然該算法用最速下降法推導(dǎo)出來,需要求均方誤差函數(shù)的梯度,并且涉及輸入矢量的自相關(guān)矩陣,但是最終的算法形式不需要進(jìn)行平方、求均值、求微分等復(fù)雜運(yùn)算,僅需要乘法和加減運(yùn)算[2,3]??尚业氖?,乘法和加減運(yùn)算是所有運(yùn)算中最容易用硬件實(shí)現(xiàn)的,并且FPGA芯片嵌入了較多硬線加減器和乘法器的參數(shù)化模塊LPM_add_sub、LPM_mult,這讓加減、乘法運(yùn)算運(yùn)算的速度提高許多[4]。所以本文選用LMS及其改進(jìn)算法,無疑對(duì)實(shí)時(shí)信號(hào)的處理速度大有裨益。
查看式(3)不難發(fā)現(xiàn),要獲取w(n+1)必須先知道當(dāng)前時(shí)刻的誤差信號(hào)e(n),即先要完成式(2)的運(yùn)算才能進(jìn)行式(3)的計(jì)算。顯然,抽頭權(quán)值的更新不能和濾波輸出同時(shí)進(jìn)行。盡管LMS算法的計(jì)算復(fù)雜度不高,但這種嚴(yán)格執(zhí)行順序抑制了該算法的運(yùn)行速度。再者,實(shí)現(xiàn)LMS算法的自適應(yīng)濾波器最宜采用FIR直接型結(jié)構(gòu),但是此結(jié)構(gòu)的關(guān)鍵路徑比較長(zhǎng),并且LMS算法實(shí)質(zhì)上是非線性的,同時(shí)包含前向路徑和反饋路徑[5],所以無法直接采用流水線技術(shù)對(duì)其進(jìn)行速度優(yōu)化。
為此,Guozhu Long等人在1989年提出了延遲最小均方 (DLMS)算法。這種算法只在抽頭權(quán)值更新過程中引入一個(gè)延遲D,利用延遲的誤差信號(hào)與輸入向量的乘積來更新抽頭權(quán)值,相當(dāng)于將式 (3)的迭代結(jié)構(gòu)分成多個(gè)周期計(jì)算,式 (3)變成如下形式
該算法引入的延遲是對(duì)整個(gè)自適應(yīng)濾波系統(tǒng)的延遲,所以濾波輸出的延遲也是D周期。盡管Long等人證明了當(dāng)延遲量小于自適應(yīng)濾波器的階數(shù)時(shí),DLMS算法的斂散性沒有太大的影響,但是延遲量越大必然對(duì)該算法的收斂性能影響越大,并且影響濾波輸出的速度[6,7]。因此本文提出了改進(jìn)的DLMS算法:在自適應(yīng)濾波器的權(quán)值更新路徑中引入延遲m1,又在濾波輸出路徑中引入延遲m2,本算法的結(jié)構(gòu)圖如圖2所示。
圖2 改進(jìn)的DLMS算法結(jié)構(gòu)
對(duì)照?qǐng)D1可以看出,圖2將濾波輸出和期望信號(hào)減去濾波輸出這兩部分合并到了誤差計(jì)算模塊;在權(quán)值自適應(yīng)更新過程中,估計(jì)誤差被延遲了m1周期,輸入信號(hào)也被延遲了m1周期,與此同時(shí)濾波計(jì)算過程用到的抽頭權(quán)值延遲m2周期。這樣濾波輸出得延遲時(shí)間被有效地減少到m2周期[8]。這里式(1)~式(3)變?yōu)?/p>
濾波輸出
估計(jì)誤差
抽頭權(quán)值更新
值得一提,當(dāng)輸入信號(hào)、期望信號(hào)的位寬不變,并且自適應(yīng)濾波器的階數(shù)很小,而m1和m2不論怎樣取值,該自適應(yīng)濾波器的收斂性都不太理想時(shí),我們可以嘗試將μ值適量減小。
下面采用正弦信號(hào)sin(0.125πt)t∈[1,1024]作為自適應(yīng)濾波器的期望信號(hào),將零均值、單位方差的高斯白噪聲以SNR=5摻入上述正弦信號(hào)作為輸入信號(hào),分別對(duì)4階基于LMS算法和改進(jìn)DLMS算法的自適應(yīng)濾波器進(jìn)行仿真,相應(yīng)結(jié)果分別如圖3~圖6所示。
圖3 采用LMS算法各個(gè)信號(hào)波形
圖4 采用LMS算法的權(quán)值自適應(yīng)
圖5 采用改進(jìn)DLMS算法各個(gè)信號(hào)波形
圖6 采用改進(jìn)DLMS算法的權(quán)值自適應(yīng)
圖3和圖5分別是采用LMS和改進(jìn)DLMS算法的自適應(yīng)濾波器的輸入信號(hào)、期望信號(hào)和輸出信號(hào)的波形圖,前兩者對(duì)應(yīng)相同,輸出信號(hào)波形亦大體相似,都是從零開始變化且慢慢平緩,但改進(jìn)DLMS算法的輸出信號(hào)變化較為劇烈。圖4和圖6中自適應(yīng)濾波器的4個(gè)抽頭權(quán)值總體更新走勢(shì)相似,但采用改進(jìn)DLMS算法的自適應(yīng)濾波器的4個(gè)權(quán)值波動(dòng)相對(duì)大些。這是由于改進(jìn)DLMS算法的收斂性能嚴(yán)格意義上不如LMS算法,但其收斂性通常也能很好地滿足實(shí)際應(yīng)用的要求。此外,兩種算法中y(n)和d(n)的差別都較為明顯,如果增大自適應(yīng)濾波器的階數(shù),則其差別明顯減小。但是階數(shù)越高,自適應(yīng)濾波器的實(shí)現(xiàn)成本越大,并且運(yùn)行速度也會(huì)放緩。因此實(shí)際應(yīng)用中須慎重選擇合適的階數(shù)。
FPGA主要依靠并行化提高處理速度,如何將一個(gè)理論上順序執(zhí)行或者說串行的算法高效地映射到FPGA芯片上是當(dāng)前的熱門話題。流水線技術(shù)是最常用的并行化技術(shù)之一。它將延時(shí)較大的組合邏輯塊切割成兩塊延時(shí)大致相等的組合邏輯塊,從而顯著提高設(shè)計(jì)的運(yùn)行速度上限。事實(shí)上,加入流水線并不會(huì)減少原來設(shè)計(jì)中的總延時(shí),甚至增加插入寄存器的延時(shí)和信號(hào)同步的時(shí)間差,但它卻可以提高總體的運(yùn)行速度[4,9]。
由于LMS算法存在反饋路徑,并且嚴(yán)格順序執(zhí)行,不能采用一般流水線技術(shù)進(jìn)行優(yōu)化。而采用改進(jìn)DLMS算法的自適應(yīng)FIR濾波器的權(quán)值更新路徑和濾波輸出路徑中都加入了延遲,在FPGA實(shí)現(xiàn)時(shí)都相應(yīng)添加了鎖存器,并且基于FPGA的自適應(yīng)FIR濾波器的輸入、輸出、抽頭權(quán)值都要進(jìn)行截?cái)嗵幚韥肀WC固定位寬[10],因此,在采用改進(jìn)DLMS算法的自適應(yīng)FIR濾波器的前向路徑中可以采用流水線技術(shù)對(duì)乘法運(yùn)算進(jìn)行優(yōu)化。對(duì)乘法結(jié)果的累加運(yùn)算(sum of product,SOP)一般利用加法樹實(shí)現(xiàn),這里的累加運(yùn)算也可以用流水線技術(shù)進(jìn)行優(yōu)化[11],但是該優(yōu)化不需要我們特地編程設(shè)計(jì),在高版本的Quartus II集成開發(fā)軟件對(duì)HDL程序進(jìn)行編譯綜合時(shí)將自動(dòng)進(jìn)行。
本文使用VHDL對(duì)采用LMS算法和改進(jìn)DLMS算法的自適應(yīng)FIR濾波器進(jìn)行編程描述,在Altera公司Cyclone III系列的EP3C10U256C8芯片上實(shí)現(xiàn),用到了內(nèi)置嵌入式乘法器模塊。以設(shè)計(jì)4階自適應(yīng)FIR濾波器為例,取定輸入信號(hào)、期望信號(hào)、抽頭權(quán)值的位寬為8位;誤差信號(hào)和輸出信號(hào)的位寬為16位;為了將例中的乘法器全部流水線化,流水線級(jí)數(shù)設(shè)為6級(jí);設(shè)定延遲量m1=3,m2=3。所有信號(hào)都采用二進(jìn)制補(bǔ)碼形式表示,采用有符號(hào)的十進(jìn)制形式顯示。輸入信號(hào)、期望信號(hào)的數(shù)值是通過將第三節(jié)最后仿真時(shí)所使用的輸入信號(hào)、期望信號(hào)經(jīng)由MATLAB量化得到的。圖7和圖8分別給出了采用LMS算法和改進(jìn)DLMS算法的時(shí)序波形圖,時(shí)鐘clk的周期設(shè)置為100ns,占空比設(shè)置為50%。
圖7 采用LMS算法的自適應(yīng)FIR濾波器時(shí)序波形
圖8 采用改進(jìn)DLMS算法的自適應(yīng)FIR濾波器時(shí)序波形
結(jié)合圖7-圖8可以看出,采用LMS算法的自適應(yīng)FIR濾波器的初始延遲時(shí)間比采用改進(jìn)DLMS算法的自適應(yīng)FIR濾波器的初始延遲時(shí)間短一些,但是總體運(yùn)行速度后者要比前者快許多,表1所列的Fmax或者叫做Registered Performance證實(shí)了這一點(diǎn)。后者的初始延遲時(shí)間較長(zhǎng)主要因?yàn)樵谄銻TL電路中多加了6個(gè)鎖存器。由于篇幅所限本文只給出最開始的時(shí)序波形,其實(shí)越往后兩種算法所設(shè)計(jì)的自適應(yīng)FIR濾波器的4個(gè)抽頭權(quán)值的更新都越平緩,并且后者相對(duì) “擺動(dòng)”劇烈一點(diǎn),這與第三節(jié)MATLAB仿真結(jié)果是吻合的。表1給出采用兩種算法時(shí)分別消耗的資源和運(yùn)行的速度。
表1 基于兩種算法的自適應(yīng)濾波器所耗資源和速度比較
本文首先簡(jiǎn)述LMS算法,并在此基礎(chǔ)上提出改進(jìn)的DLMS算法,接著分別使用這兩種算法結(jié)合FIR直接型結(jié)構(gòu)設(shè)計(jì)出自適應(yīng)濾波器。在MATLAB上仿真成功后就在FPGA硬件上進(jìn)行時(shí)序驗(yàn)證。在采用改進(jìn)DLMS算法設(shè)計(jì)實(shí)現(xiàn)時(shí)還利用流水線技術(shù)對(duì)其乘法器進(jìn)行優(yōu)化。兩種驗(yàn)證結(jié)果總體上都滿足要求。由表1知本方案的處理速度雖然提高到原先設(shè)計(jì)的2倍多,但它所消耗的FPGA硬件資源也比原先增加了一倍多。這印證了硬件設(shè)計(jì)中速度和資源的永恒矛盾:要想節(jié)省資源必然降低處理速度,而要想提高速度必定消耗更多資源。所以在工程應(yīng)用中要根據(jù)實(shí)際需求進(jìn)行取舍或折中。
[1]Simon Haykin.Adaptive filter theory [M].ZHENG Baoyu,transl.Beijing:Publishing House of Electronics Industry,2010:159-238 (in Chinese).[Simon Haykin.自適應(yīng)濾波器原理 [M].鄭寶玉,譯.北京:電子工業(yè)出版社,2010:159-238.]
[2]Bernard Widrow,Samuel D Stearns.Adaptive signal processing [M].WANG Yongde,LONG Xianhui,transl.Beijing:China Machine Press,2008:68-76 (in Chinese). [Bernard Widrow,Samuel D Stearns.自適應(yīng)信號(hào)處理 [M].王永德,龍憲惠,譯.北京:機(jī)械工業(yè)出版社,2008:68-76.]
[3]LI Ning.Convergence performance analysis and applications of adaptive LMS algorithm [D].Harbin:Harbin Engineering University,2009:15-52 (in Chinese).[李寧.LMS自適應(yīng)濾波算法的收斂性能研究和應(yīng)用 [D].哈爾濱:哈爾濱工程大學(xué),2009:15-52.]
[4]PAN Song,HUANG Jiye,PAN Ming.EDA practical tutorial Verilog HDL [M].Beijing:Science Press,2010:27-56 (in Chinese).[潘松,黃繼業(yè),潘明.EDA技術(shù)實(shí)用教程-Verilog HDL [M].北京:科學(xué)出版社,2010:27-56.]
[5]Meher P K,Chandrasekaran S,Amira A.FPGA realization of FIR filters by efficient and flexible systemization using distribu-ted arithmetic [J].IEEE Trans Signal Processing,2008,56(7):3009-3017.
[6]Guo Rui,Linda S DeBrunner.Two high-performance adaptive filter implementation schemes using distributed arithmetic [J].IEEE Transactions on Circuits and Systems-II:Express Briefs,2011,58 (9):600-604.
[7]Meher P K,Sang Yoon Park.High-throughput pipelined realization of adaptive FIR filter based on distributed arithmetic[C]//IEEE 19th International Conference on VLSI and System-on-Chip,2011:428-433.
[8]Meher P K,Sang Yoon Park.A high-speed FIR adaptive filter architecture using a modified delayed LMS algorithm [C]//IEEE International Symposium on Circuits and Systems,2011:121-124.
[9]YANG Haigang,SUN Jiabin,WANG Wei.An overview to FPGA device design technologies [J].Journal of Electronics and Information Technology,2010,32 (3):714-723 (in Chinese).[楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述 [J].電子與信息學(xué)報(bào),2010,32 (3):714-723.]
[10]GAO Yajun.Digital signal processing based on FPGA [M].Beijing:Publishing House of Electronics Industry,2012:79-104(in Chinese). [高亞軍.基于FPGA的數(shù)字信號(hào)處理[M].北京:電子工業(yè)出版社,2012:79-104.]
[11]DU Yong,LU Jiangong,LI Yuanzhou.Implementation of digital filter on MATLAB and FPGA [M].Beijing:Publishing House of Electronics Industry,2012:242-257 (in Chinese).[杜勇,路建功,李元洲.數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn) [M].北京:電子工業(yè)出版社,2012:242-257.]