資源描述:
《自適應(yīng)lms濾波器在fpga中的實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、自適應(yīng)LMS濾波器在FPGA中的實(shí)現(xiàn)發(fā)布日期:2006-07-29 作者:楊躍忠闕沛文李亮來源:微計(jì)算機(jī)信息摘要:本文介紹了自適應(yīng)濾波器的實(shí)現(xiàn)方法,給出了基于LMS算法自適應(yīng)濾波器在FPGA中的實(shí)現(xiàn),簡(jiǎn)單介紹了這種實(shí)現(xiàn)方法的各個(gè)功能模塊,主要包括輸入信號(hào)的延時(shí)輸出模塊、控制模塊、誤差計(jì)算模塊、權(quán)值計(jì)算和存儲(chǔ)模塊。并通過在ALTERA公司提供的QUARTUS?II平臺(tái)上采用VHDL語言編程,利用MATLAB和QUARTUS?II相結(jié)合進(jìn)行了硬件仿真,結(jié)果表明了采用FPGA實(shí)現(xiàn)自適應(yīng)濾波器是有效的。關(guān)鍵詞:自適應(yīng)濾波,F(xiàn)PGA,LMS
2、,VHDL語言引言對(duì)于自適應(yīng)濾波器,IIR和FIR兩種形式都可以考慮,而FIR濾波器是實(shí)際應(yīng)用較廣泛的。FIR濾波器只有可調(diào)的零點(diǎn),因此它沒有IIR因兼有可調(diào)的零點(diǎn)和極點(diǎn)而帶來的不穩(wěn)定問題,另外,LMS計(jì)算量小,比較容易進(jìn)行硬件實(shí)現(xiàn),所以本文所設(shè)計(jì)的自適應(yīng)濾波器是在FIR的基礎(chǔ)上構(gòu)建的LMS自適應(yīng)濾波器。2.LMS自適應(yīng)濾波器的算法構(gòu)想可以將基于LMS算法的自適應(yīng)濾波器的算法過程表示成如圖1所示。圖1?LMS算法實(shí)現(xiàn)的原理框圖根據(jù)LMS算法的計(jì)算過程完成的功能,在FPGA設(shè)計(jì)實(shí)現(xiàn)時(shí),可以主要分為FIR濾波器模塊、誤差計(jì)算模塊、權(quán)值
3、更新模塊、權(quán)值存儲(chǔ)模塊和控制模塊。其模塊框圖如圖2所示。LMS自適應(yīng)濾波器的算法中,主要是小數(shù)的加法和乘法運(yùn)算,要把所有小數(shù)化為16進(jìn)制數(shù)。例如,N階FIR濾波器的系數(shù)中,我們規(guī)定最高位是符號(hào)位,其次是3為整數(shù)位,最后12位小數(shù)。比如,1.125-1400H,0.75-C00H。運(yùn)算中,所有權(quán)值系數(shù)均按此方法處理?!∽赃m應(yīng)LMS濾波器在FPGA中的實(shí)現(xiàn)?圖2?自適應(yīng)濾波器FPGA實(shí)現(xiàn)模塊框圖???????????????????????????????????????????????????????????????????????
4、3.自適應(yīng)濾波器在FPGA中的具體實(shí)現(xiàn)3.1N階FIR濾波器模塊的設(shè)計(jì)FIR濾波器是數(shù)字濾波器的一種,它的輸出y(n)可以用式(1)表示:差分方程:?????????????????????????(1)其中:N是FIR濾波器的抽頭系數(shù);x(i)表示第i時(shí)刻的輸入樣本;h(i)是FIR濾波器的第i級(jí)抽頭系數(shù)。FIR濾波器的單位脈沖響應(yīng)h(n)是一個(gè)有限長(zhǎng)序列,因此系統(tǒng)函數(shù)為:???????(2)為了節(jié)約FPGA資源,提高利用率,這里主要介紹采用串行乘加的實(shí)現(xiàn)方法。3.2主要的模塊組成及其功能主要采用VHDL硬件描述語言在QUART
5、USII平臺(tái)上編程實(shí)現(xiàn),程序框圖如圖3所示。FIR濾波器的輸入主要分為權(quán)值系數(shù)輸入和數(shù)據(jù)輸入。Din是A/D轉(zhuǎn)換后的輸出信號(hào),字寬為12位,其中1位符號(hào)位,10位精度位,將這個(gè)信號(hào)存儲(chǔ)在深度為N的SRAM中作為N階FIR濾波器的輸入;FIR的權(quán)系數(shù)Coeffs.存儲(chǔ)在ROM中,字寬為16位,其中最高1位為符號(hào)位。通過使用狀態(tài)機(jī)輸出地址信號(hào)控制讀SRAM中的Xn和ROM中的系數(shù)Wn,復(fù)用12×16的乘法器和加法器來實(shí)現(xiàn)乘加運(yùn)算。當(dāng)N階乘加運(yùn)算做完后,輸出一個(gè)數(shù)據(jù)輸出有效信號(hào)yvalid。Newt信號(hào)來自于A/D,表示新一個(gè)數(shù)據(jù)轉(zhuǎn)換好
6、,可以進(jìn)行下一次運(yùn)算。在該設(shè)計(jì)中,F(xiàn)IR濾波器的文件可以采用原理框圖形式設(shè)計(jì),結(jié)構(gòu)簡(jiǎn)單明了。而輸入信號(hào)的延時(shí)輸出和控制模塊采用VHDL設(shè)計(jì)。乘法器和D觸發(fā)器都直接使用QUARTUSII自帶的庫文件?!ぽ斎胄盘?hào)的延時(shí)輸出模塊實(shí)現(xiàn)功能:完成A/D轉(zhuǎn)換后的數(shù)據(jù)通過不同的觸發(fā)器完成N階延時(shí)。該延時(shí)部分主要采用D觸發(fā)器實(shí)現(xiàn)了8階信號(hào)延時(shí)及存儲(chǔ)。在控制信號(hào)newt作用下進(jìn)行延時(shí)存儲(chǔ),A/D轉(zhuǎn)換器每采樣一次,延時(shí)器就順延一位。這里,Din是A/D輸出信號(hào)。Xn是輸出信號(hào)。在地址線sel的控制下輸出一位作為乘法器的輸入。地址信號(hào)sel由控制模塊產(chǎn)
7、生?!た刂颇K實(shí)現(xiàn)功能:本模塊主要是控制從數(shù)據(jù)輸入模塊(SRAM中)和權(quán)系數(shù)輸入模塊(ROM中)讀入數(shù)據(jù)輸入信號(hào)和系數(shù)作為乘法器的輸入,同時(shí)控制累加器,并產(chǎn)生輸出有效信號(hào)yvalid。主要采用狀態(tài)機(jī)來設(shè)計(jì)該模塊。本模塊是自適應(yīng)濾波器設(shè)計(jì)的核心部分。該模塊的主要功能有:①初始化各模塊;②產(chǎn)生控制信號(hào),控制每個(gè)模塊完成特定的功能;③協(xié)調(diào)各個(gè)模塊的操作,使系統(tǒng)局部以流水線方式、整體串行方式工作?!ふ`差計(jì)算模塊實(shí)現(xiàn)功能:該模塊主要是計(jì)算FIR濾波器輸出和期望值之間的誤差。根據(jù)上面FIR濾波器輸出結(jié)果可知,當(dāng)輸出信號(hào)yvalid有效時(shí),Do
8、ut輸出結(jié)果,這時(shí)可以通過使用一個(gè)在next信號(hào)控制下的減法器就可以實(shí)現(xiàn)誤差計(jì)算了?!?quán)值計(jì)算及存儲(chǔ)模塊在權(quán)值計(jì)算模塊中,為了計(jì)算方便,可以設(shè)u=1/1024即u=04H,這樣只需要對(duì)誤差計(jì)算模塊輸出的誤差進(jìn)行移位運(yùn)算即可以實(shí)現(xiàn),從而省掉了使用乘法