呂虹 蔣婷婷 肖曼
摘要:通過VHDL語言對最小均方算法(LMS)進行數學建模設計,然后嵌入到有限長脈沖響應(FIR)濾波器上,在Quartus II上實現(xiàn)了自適應濾波器的設計,然后采用LMS算法的自適應FIR濾波器進行Matlab的仿真驗證,并在Altera公司的EP3C55F484C6上進行功能驗證,對比驗證結果表明該自適應濾波滿足濾波功能,能夠很好地消除噪聲。
關鍵詞:自適應:數字濾波器:最小均方:MATLAB:VHDL
中圖分類號:TN911.72文獻標識碼:A
自適應濾波器在現(xiàn)代數字信號處理中應用極為廣泛。濾波器是人們進行設計系統(tǒng)的一種術語,是為了能夠從已經失真的信息中過濾出實施者所需要的接近原本的有用內容。由于這個措施在很多方面都會被需要,所以在眾多領域都有關于這個系統(tǒng)的研究。
本文通過Matlah程序仿真,來探索LMS算法與FIR的聯(lián)系,并通過更改步長與濾波器階數來觀察自適應濾波器收斂性能的變化。并利用了Quartus II自下向上的設計方法,選擇合適的IP核,完成各項模塊的設置后,通過頂層原理圖將各模塊連接從而實現(xiàn)濾波器的設計。通過Matlab的設計提供加噪聲的輸人數據以及原始的期望信號,最終在Quallus II上運用波形仿真文件實現(xiàn)濾波器的設計。
1 自適應濾波器的原理
自適應濾波器是數字濾波器的一種。本文研究的是線性濾波器。對于線性自適應濾波器,一般通過輸人信號(已經是目標信號加噪聲之后)的自相關矩陣、誤差函數等的統(tǒng)計特性以某一種準則為標準,使其盡可能靠向目標值的過程。圖1為自適應濾波器的結構圖,圖中x(n)、y(n)和d(n)分別表示n時刻的輸人信號、輸出信號和期望信號。其中e(n)是期望信號與輸出信號的誤差,它能夠自動地調節(jié)自適應濾波器的各項參數,使下一時刻的輸出y(n+1)更接近期望信號。
由圖1可知自適應濾波器總共由三個部分組成,每個部分具體含義如下:
(1)濾波結構:輸人信號經過濾波結構形成濾波輸出。IIR濾波器具有不穩(wěn)定的特點,因此本文采用了FIR濾波器進行濾波結構的設計。
(2)自適應算法:通過規(guī)定的規(guī)則或函數來更改濾波器的參數,從而可以達到對應的濾波功能。
(3)性能評估:是指期望信號和輸出信號的差來定義輸出是否滿足需求。
針對線性自適應濾波器分為兩部分,一部分是濾波,另一部分是自適應。自適應主要體現(xiàn)在:如果信號環(huán)境不發(fā)生改變時,自適應濾波器能夠以逐步迭代的方式來調整濾波器系數直達到最優(yōu)濾波才會停止迭代。當外部信號環(huán)境發(fā)生變化時,自適應濾波器會調整濾波系數以跟蹤變化。與維納濾波器相比,自適應濾波器無需事先知道輸入信號即可實現(xiàn)最優(yōu)濾波。
2LMS算法
LMS算法作為線性自適應濾波中的梯度算法,結合最速下降算法,用瞬時平方誤差代替均方誤差。
2.1維納濾波器
本文以FIR濾波器結構(也稱橫向結構)來介紹維納濾波器。
3.2 VHDL實現(xiàn)主要模塊設計
實驗在Quartus II上通過VHDL語言編程的主模塊功能主要包括了存儲、計數、乘法、卷積濾波、權值更新。由于Quartus II對數值的限制,對于Matlah上的數據選擇了進行17bit的量化。在實驗過程中u值以及信噪比的選擇會影響e的值可能還會導致它的高位為零,導致濾波輸出為零,所以通過在Matlab)中進行不斷嘗試,最終選擇了信噪比10db,濾波器階數位128階,u的值為1/1024。
可以看到其輸出是通過輸人給地址讀出信號,選擇了計數器并設置updown端口,用于實現(xiàn)當up為1時地址不斷加1.為0時地址減1的效果。如圖9:
3.3Quartus II綜合實現(xiàn)
Quartus II綜合實現(xiàn)部分主要包括2個計數模塊,2個rom模塊和一個主模塊。計數模塊是用來進行計數,rom模塊中romx用來存儲輸入信號x,romd用來存儲期望信號d,主模塊包括了存儲、計數、乘法、卷積濾波、權值更新。
然后建立波形文件,其中,clrd保持了20us的“1”,后全為“0”:clrx保持了10us的“1”,后全為“0”;為保證計數器輸出一直為加1將updown一直設置為“1”。然后進行功能仿真得出波形如圖10.其中x為輸入信號,d為期望信號,y為濾波輸出??梢钥闯鰹V波輸出與期望信號相同,這與3.1節(jié)Matlab仿真結果是一致的,因此表明本文設計的濾波器功能正確,性能良好。
4 結語
本文提出的是主要基于FIR的自適應濾波器,運用了LMS算法。先在Matlab上進行操作,在達到濾波目的的同時完成對各參數的選擇。在實驗中,為了方便計算,步長u的值選擇2的n次方的倒數,然后再改變信噪比和適合的濾波器階數,來觀察濾波效果。通過觀察比較可知當信噪比為10db,濾波器階數為128階,u的值為1/1024時濾波效果最好。然后在Quartus II上實現(xiàn)設計,對主模塊數選擇后,建立頂層原理圖后在波形文件中觀察輸出,完成濾波器的設計。實驗結果表明適當改變?yōu)V波器的步長和階數可以去除噪聲影響,得到最佳濾波效果。