1.算法仿真效果
vivado2019.2仿真結(jié)果如下:


2.算法涉及理論知識(shí)概要
自適應(yīng)算法是數(shù)字信號(hào)處理(DSP)的主體。它們被用于各種應(yīng)用,包括聲學(xué)回聲消除、雷達(dá)制導(dǎo)系統(tǒng)、無(wú)線信道估計(jì)等。
自適應(yīng)算法用于估算隨時(shí)間變化的信號(hào)。有許多自適應(yīng)算法,如遞歸最小二乘(RLS)和卡爾曼濾波,但最常用的是最小均方算法(LMS)。這是一個(gè)簡(jiǎn)單但功能強(qiáng)大的算法,該算法可以利用萊迪思FPGA架構(gòu)來(lái)實(shí)現(xiàn)。通過(guò)窗口和Hoff的開(kāi)發(fā),該算法采用的是梯度下降法來(lái)估計(jì)隨時(shí)間變化的信號(hào)。梯度下降法找到一個(gè)最小值,如果它存在,在梯度負(fù)方向采取步驟。這樣做是通過(guò)調(diào)整濾波器系數(shù)使誤差最小化。
LMS參考設(shè)計(jì)包括兩個(gè)主要的功能模塊 - 一個(gè)FIR濾波器和LMS算法。使用一個(gè)乘法器和一個(gè)具有反饋的加法器串行實(shí)現(xiàn)FIR濾波器。 FIR結(jié)果歸一化,以盡量減少飽和。 LMS算法迭代更新系數(shù),并把其饋送到FIR濾波器。FIR濾波器使用系數(shù)c(n)和輸入的參考信號(hào)x(n)生成輸出y(n)。然后所希望的信號(hào)d(n)與輸出y(n)相減,產(chǎn)生一個(gè)誤差,LMS算法用它來(lái)計(jì)算下一組的系數(shù)。
自適應(yīng)濾波器由參數(shù)可調(diào)的數(shù)字濾波器和自適應(yīng)算法兩部分組成。如圖所示。

輸入信號(hào)x(n) 通過(guò)參數(shù)可調(diào)數(shù)字濾波器后產(chǎn)生輸出信號(hào) y(n),將其與期望信號(hào)d(n)進(jìn)行比較,形成誤差信號(hào)e(n), 通過(guò)自適應(yīng)算法對(duì)濾波器參數(shù)進(jìn)行調(diào)整,最終使 e(n)的均方值最小。自適應(yīng)濾波可以利用前一時(shí)刻已得的濾波器參數(shù)的結(jié)果,自動(dòng)調(diào)節(jié)當(dāng)前時(shí)刻的濾波器參數(shù),以適應(yīng)信號(hào)和噪聲未知的或隨時(shí)間變化的統(tǒng)計(jì)特性,從而實(shí)現(xiàn)最優(yōu)濾波。自適應(yīng)濾波器實(shí)質(zhì)上就是一種能調(diào)節(jié)自身傳輸特性以達(dá)到最優(yōu)的維納濾波器。自適應(yīng)濾波器不需要關(guān)于輸入信號(hào)的先驗(yàn)知識(shí),計(jì)算量小,特別適用于實(shí)時(shí)處理。維納濾波器參數(shù)是固定的,適合于平穩(wěn)隨機(jī)信號(hào)??柭鼮V波器參數(shù)是時(shí)變的,適合于非平穩(wěn)隨機(jī)信號(hào)。然而,只有在信號(hào)和噪聲的統(tǒng)計(jì)特性先驗(yàn)已知的情況下,這兩種濾波技術(shù)才能獲得最優(yōu)濾波。在實(shí)際應(yīng)用中,常常無(wú)法得到信號(hào)和噪聲統(tǒng)計(jì)特性的先驗(yàn)知識(shí)。在這種情況下,自適應(yīng)濾波技術(shù)能夠獲得極佳的濾波性能,因而具有很好的應(yīng)用價(jià)值。
在自適應(yīng)濾波器設(shè)計(jì)中,最小均方(Least Mean Square,LMS)算法使用隨機(jī)梯度下降的方法實(shí)現(xiàn)代價(jià)函數(shù)的最小化,具有計(jì)算復(fù)雜度低、無(wú)需統(tǒng)計(jì)數(shù)據(jù)的先驗(yàn)知識(shí)和均值無(wú)偏地收斂到維納解等優(yōu)點(diǎn),成為自適應(yīng)算法中應(yīng)用最廣泛的一種。LMS自適應(yīng)濾波器本質(zhì)上是一種將自身傳輸特性調(diào)節(jié)到最優(yōu)的維納濾波器。
對(duì)于輸入信號(hào)x ( n ) x(n)x(n),其通過(guò)參數(shù)可調(diào)的橫向?yàn)V波器后,輸出為 y ( n ) y(n)y(n) ,LMS算法根據(jù)濾波器的輸出信號(hào) y ( n ) y(n)y(n) 與期望信號(hào) d ( n ) d(n)d(n) 的誤差自動(dòng)地調(diào)整濾波器的參數(shù),從而使得濾波器適應(yīng)隨機(jī)信號(hào)的時(shí)變統(tǒng)計(jì)特性,LMS自適應(yīng)濾波器的結(jié)構(gòu)如圖1所示。
3.verilog核心程序
module LMSs(
...................................................................
subLMS subLMS_1(
.i_clk(i_clk),
.i_rst(i_rst),
.i_en(i_en),
.i_din(i_din),
.i_Step(i_Step),
.o_dout(LMS_tap_1_delay_out),
.o_Tap(LMS_tap_1_out)
);
subLMS subLMS_2(
.i_clk(i_clk),
.i_rst(i_rst),
.i_en(i_en),
.i_din(LMS_tap_1_delay_out),
.i_Step(i_Step),
.o_dout(LMS_tap_2_delay_out),
.o_Tap(LMS_tap_2_out)
);
subLMS subLMS_3(
.i_clk(i_clk),
.i_rst(i_rst),
.i_en(i_en),
.i_din(LMS_tap_2_delay_out),
.i_Step(i_Step),
.o_dout(LMS_tap_3_delay_out),
.o_Tap(LMS_tap_3_out)
);
subLMS subLMS_4(
.i_clk(i_clk),
.i_rst(i_rst),
.i_en(i_en),
.i_din(LMS_tap_3_delay_out),
.i_Step(i_Step),
.o_dout(LMS_tap_4_delay_out),
.o_Tap(LMS_tap_4_out)
);
subLMS subLMS_5(
.i_clk(i_clk),
.i_rst(i_rst),
.i_en(i_en),
.i_din(LMS_tap_4_delay_out),
.i_Step(i_Step),
.o_dout(LMS_tap_5_delay_out),
.o_Tap(LMS_tap_5_out)
);
subLMS subLMS_6(
.i_clk(i_clk),
.i_rst(i_rst),
.i_en(i_en),
.i_din(LMS_tap_5_delay_out),
.i_Step(i_Step),
.o_dout(LMS_tap_6_delay_out),
.o_Tap(LMS_tap_6_out)
);
subLMS subLMS_7(
.i_clk(i_clk),
.i_rst(i_rst),
.i_en(i_en),
.i_din(LMS_tap_6_delay_out),
.i_Step(i_Step),
.o_dout(LMS_tap_7_delay_out),
.o_Tap(LMS_tap_7_out)
);
endmodule