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