孟莎莎,董會寧,董 健
(重慶郵電大學(xué) 應(yīng)用物理研究所,重慶 400065)
飛速發(fā)展的數(shù)字信號處理技術(shù)(DSP,Diginal Signal Processing)在通信、醫(yī)學(xué)、圖像處理、多媒體系統(tǒng)、便攜式電子設(shè)備中得到了廣泛的應(yīng)用。
在過去的一段時間內(nèi),DSP處理器是DSP應(yīng)用系統(tǒng)核心器件的唯一選擇,DSP Processor主要是指目前最常用的基于CPU架構(gòu)的器件,通過軟件指令的方式完成DSP算法[4]。近年來DSP器件在硬件結(jié)構(gòu)上不斷改進,性能有了很大的提高,但是并沒有擺脫傳統(tǒng)CPU的工作模式。DSP處理器的靈活性只是表現(xiàn)在軟件更改的容易性以及對各種算法的處理和復(fù)雜算法的實現(xiàn)上,而對于系統(tǒng)硬件本身的更改,DSP是沒有任何靈活性可言的。
現(xiàn)代大容量、高速度的FPGA能夠克服DSP處理器的諸多不足,在這些FPGA中,一般都內(nèi)嵌有可配置的高速RAM、PLL、LDVS、LVTTL以及硬件乘法器等DSP模塊。FPGA做為數(shù)字信號處理的新硬件平臺,在并行性和速度問題上突顯出獨特的優(yōu)勢,而且其靈活的可重構(gòu)特性,使用FPGA搭建DSP系統(tǒng)非常易于實現(xiàn)、易于測試及硬件升級。
Altera推出的 DSP Builder工具箱提供了一個從MATLAB/Simulink直接到FPGA硬件實現(xiàn)的設(shè)計接口。它極大地簡化了DSP功能的硬件實現(xiàn)流程,并提供了系統(tǒng)級仿真測試功能,并且DSP Builder提供模塊化的門電路,使得算法更容易實現(xiàn),這樣就能極大地縮短開發(fā)周期。
本文在DSP Builder軟件平臺上,搭建了一個以四階濾波器模塊為基礎(chǔ)的自適應(yīng)濾波器,該濾波器通過級聯(lián),可以簡單地轉(zhuǎn)換為8階、12階、16階等的自適應(yīng)濾波器,通過Simulink模擬仿真,驗證了該設(shè)計的的合理性,為硬件的實現(xiàn)打下了基礎(chǔ)。
自適應(yīng)濾波器是指能夠根據(jù)環(huán)境的改變,使用自適應(yīng)算法來改變自身濾波器參數(shù)和結(jié)構(gòu)的濾波器[3]。它一般由2部分組成:①是濾波器模塊;②是濾波器系數(shù)更新模塊,即自適應(yīng)算法模塊。對于自適應(yīng)算法的選取一般從2個方面考慮:①是算法的復(fù)雜度;②是算法的收斂性。
在自適應(yīng)濾波器的設(shè)計中,自適應(yīng)算法的選取尤其重要,算法的選取一般從兩個方面進行考慮,一個是自適應(yīng)算法的復(fù)雜度,一個是算法的收斂性能[6]。
由Widrow和Hoff提出的最小均方誤差(LMS)算法,因其具有結(jié)構(gòu)簡單、計算量小、魯棒性強、易于實現(xiàn)等優(yōu)點而在硬件設(shè)計中被廣泛采用。該算法的計算公式描述如下:
(1) FIR濾波器運算
(2) 濾波器系數(shù)計算
根據(jù)LMS算法的計算公式,建立一個LMS算法復(fù)雜度表,如表1,設(shè)濾波器的長度為L,那么LMS算法在一次迭代中只需要2L+1乘法和2L次加法,也就是說LMS算法的復(fù)雜度為O(L),與濾波器的階數(shù)L呈線性增長。計算復(fù)雜度低是LMS一個顯著有點,因此LMS算法在實際中得到廣泛應(yīng)用奠定了基礎(chǔ)。
表 1LMS算法復(fù)雜度
自適應(yīng)算法的收斂性一般由參數(shù)μ決定,LMS算法簡單,只有一個參數(shù)μ,因而必須選擇合適的μ,來保證算法的收斂性。另外μ還是控制收斂速度穩(wěn)態(tài)誤差的常量,選擇大的μ可以產(chǎn)生很快的收斂速度,但是當(dāng)收斂到維納解附近后將在一個比較大的領(lǐng)域內(nèi)抖動而無法進一步收斂;選擇較小的步長可以收斂到維納解附近的小領(lǐng)域,但是它的收斂速度是非常緩慢的。這就是LMS算法的一個明顯弱點:高速收斂和小穩(wěn)態(tài)誤差不可兼得,而調(diào)和此矛盾的參量就是步長因子μ。為了保證算法收斂性,對步長因子的穩(wěn)定邊界定義如下:
其中maxS是輸入()xn的功率譜密度的最大值。
在本設(shè)計中,把自適應(yīng)濾波器劃分為幾個獨立的模塊,這樣可以保持各個模塊的相對獨立性,若要改變自適應(yīng)算法,只需要改變算法模塊即可,其它的模塊可以不變,并且各個模塊的恰當(dāng)分割大大地增加了系統(tǒng)的靈活性,有利于硬件實現(xiàn)。
根據(jù)自適應(yīng)LMS算法的計算公式,把計算分為了FIR濾波器運算和濾波器系數(shù)計算兩步,相應(yīng)地,把自適應(yīng)濾波器的結(jié)構(gòu)劃分為橫向FIR濾波器模塊和濾波器系數(shù)更新模塊,即自適應(yīng)算法模塊,如圖1所示為給出的2個模塊的結(jié)構(gòu)圖。因為輸出誤差計算模塊只有一個加法運算,那么可以把這個加法運算合并到其它的2個模塊進行建模。
圖1 自適應(yīng)濾波器的分割結(jié)構(gòu)
DSP Builder是Altera公司推出的一個面向DSP開發(fā)的系統(tǒng)工具。它是作為Matlab/Simulink的一個工具箱出現(xiàn)的。DSP設(shè)計可以方便地利用Simulink與DSP Buider提供的豐富的功能塊和IP核進行設(shè)計。DSP Buider包括比特和周期精度的 Simulink模塊,還涵蓋了諸如算法和存儲功能基本模塊以及 IP庫中的許多復(fù)雜的功能模塊。電路中的功能塊和 IP的技術(shù)參數(shù)、數(shù)據(jù)格式和總線寬度都可以直接設(shè)置。電路模型設(shè)計完成后,可以進行系統(tǒng)功能仿真。仿真通過后可以運行Signal Compiler,將模型轉(zhuǎn)化成RTL級的VHDL代碼和Tcl腳本語言。調(diào)用QuartusⅡ進行編譯,QuartusⅡ根據(jù)網(wǎng)表文件及設(shè)置的優(yōu)化約束條件進行布線布局和優(yōu)化設(shè)計的適配,最后生成編程文件和仿真文件。
通過上面的自適應(yīng)濾波器結(jié)構(gòu)和自適應(yīng)濾波算法的分析,可知該設(shè)計有大量的乘法、加法和延遲算法,那么在Matlab的Simulink工具箱DSP Buider模塊組里面,調(diào)出設(shè)計所需的乘法器、加法器、延遲單元,還有總線控制模塊,完成頂層設(shè)計。用以完成算法級到功能級的實現(xiàn)。
鑒于以上的設(shè)計,需要對 DSP Buider中的幾個模塊進行說明:
①Product:乘法器;
②Parallel Adder Subtractor:加法器;
③Gain:增益模塊;
④Bus Coversion:總線類型轉(zhuǎn)換模塊;
⑤Dalay:延遲單元。
根據(jù)模塊劃分思想,進行模型搭建,設(shè)計一個四階的濾波器模塊和一個四階的濾波器系數(shù)更新模塊。在實際應(yīng)用中,低階數(shù)的濾波器往往很難達到合理的濾波器效果,所以對設(shè)計的模塊封裝,那么再進行模塊級聯(lián),就可以調(diào)整濾波器的系數(shù),靈活地實現(xiàn)8階,12階,16階及更多階的自適應(yīng)濾波器。如圖 2所示,為一個四階為單元組合而成的 16階的自適應(yīng)濾波器設(shè)計圖,其中子模塊4fir為四階FIR濾波器模塊,子模塊l ms為4階系數(shù)調(diào)整模塊。通過子模塊間的級聯(lián),建立一個16階的自適應(yīng)濾波器。圖3為自適應(yīng)算法子模塊的結(jié)構(gòu)圖。設(shè)定時鐘信號周期為 20 ns,輸入信號是在正弦信號的疊加一個隨機噪聲信號 1,參考信號為一個和隨機噪聲信號1相關(guān)的噪聲信號2,步長因子μ設(shè)定為0.025。開始Simulink模型仿真,其仿真結(jié)果如圖4所示,第一條輸出波形為正弦信號和隨機噪聲的疊加,第二條波形為誤差號的輸出,第三條波形為輸出信號。
由此得出結(jié)論:
①輸出信號達到了比較理想的效果;
②誤差信號得到了收斂,且收斂速度較快。
圖2 16階自適應(yīng)濾波器的結(jié)構(gòu)
圖3 系數(shù)調(diào)整模塊結(jié)構(gòu)
圖4 自適應(yīng)濾波器仿真
本文基于DSP Builder設(shè)計軟件,完成了自適應(yīng)濾波器的模型搭建,這樣的設(shè)計流程,包括從系統(tǒng)描述直至硬件實現(xiàn),可以在一個完整的設(shè)計環(huán)境中完成,同時構(gòu)成了一個自定而下的典型的設(shè)計流程。通過仿真,驗證了設(shè)計的合理性,并且模塊劃分的思想使設(shè)計簡單易行,極大地縮短了開發(fā)周期,并且Simulink所具有的圖形界面也能幫助提高開發(fā)效率。
使用DSP Builder工具箱可以明顯地提高數(shù)字信號處理系統(tǒng)的開發(fā)效率,并且設(shè)計者可以不必懂硬件描述語言,也能進行DSP系統(tǒng)的硬件開發(fā)。DSP Builder應(yīng)用于數(shù)字信號處理有很高的應(yīng)用價值。
[1] 李昕,李艷,李波. DLMS濾波器的 FPGA實現(xiàn)[J]. 元器件與應(yīng)用,2009,21(09):41-46.
[2] 張銀行,楊小雪. 子帶分解的自適應(yīng)濾波器的 FPGA實現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2010,33(08):13-18.
[3] 袁江南,徐敏. 基于DSPBuilder的LMS自適應(yīng)濾波器設(shè)計[J]. 計算機應(yīng)用 2009, 29(12):338-340.
[4] 楊東,王建業(yè),蔡飛. 基于DSP開發(fā)工具的自適應(yīng)濾波器[J].探測與控制學(xué)報, 2010,6(08):67-70.
[5] DAVIS B. Adaptive Noise Cancellation Using LMS and Optimal Filtering[J]. University of Florida. 2003,13(09): 23-30.
[6] 秦志強,張水蓮,孫萍. 階數(shù)可變的成形濾波器FPGA實現(xiàn)[J]. 通信技術(shù),2009,42(03):261-265.
[7] 王云,李惠光,隋明森. 模糊LMS算法主從濾波器的設(shè)計及應(yīng)用[J].通信技術(shù),2009,42(05):74-76.
[8] 邵寧,陳萬培,陳俊晟. 一種基于維納濾波器抗MAI的新方法[J].通信技術(shù),2010,43(05):134-138.