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