王 雷,李 靜
(1.解放軍92785部隊,秦皇島066200;2.北京航天科奧電子技術有限公司,北京100070)
自適應濾波器一直是信號處理領域的研究熱點之一,并已經被廣泛應用于數字通信、回波消除、天線陣波束形成、信道均衡等領域[1]。自適應濾波器是一種具有自我調整能力和跟蹤能力的現代濾波器,可根據被控制對象的時變性做出相應的調整,滿足某種準則的要求,從而實現最優濾波。同時,現代數字信號處理更趨向于高速、實時的信號處理。它需要極高的數據吞吐量和巨大的實時計算量。FPGA有著規整的內部邏輯陣列和豐富的連線資源,特別適合于數字信號處理任務,相對于串行運算的通用數字信號處理器(DSP)芯片,其并行性和可擴展性更好,在實時性要求較高的場合更能滿足系統高速、實時的需要[2]。本文針對FPGA的特點設計了一種自適應有限沖激響應(FIR)濾波器的實現方法,并通過在Xilinx公司提供的ISE平臺上采用Verilog HDL編程[3],利用 Modelsim 和 Matlab軟件對雙模式盲自適應均衡濾波器[4]進行仿真驗證。
FIR濾波器的基本結構就像一個分節的延時線,將各節的輸出加權累加,得到濾波器輸出。其數學差分表達式為:


式中:xb[n]為在n時刻采樣信號x[n]的第b位。
將式(2)代入濾波器的輸出表達式(1),可得到:

假設濾波器的輸入信號x[n]為B+1位補碼形式,即:
對于式(3)中乘積項xb[n]h[N-n],當xb[n]為1時,其值為h[N-n];當xb[n]為0時,其值為0。由此可知,對于式(4)每個括號中的子式,N 位向量 (xb[0],xb[1],…,xb[N -1])有2N種情況,相應地有2N種組合值。
對于傳統的固定系數的FIR濾波器,為了提高系統的運行速度,有人提出了一種分布式算法[5]。分布式算法(DA)是一種以實現乘加運算為目的的運算方法。它與傳統實現乘加運算算法的不同之處在于:執行部分積運算的先后順序不同。
該算法事先構造一個查找表,其中存儲了上式括號中所有可能的組合值,并通過所有輸入變量相對應的組合向量 (xb[0],…,xb[N-2],xb[N-1])對該表進行尋址。DA算法的特點是巧妙地運用查找表將固定系數的乘累加(MAC)運算轉化為查表操作。但是,由于查找表在FPGA上實現需占據大量的邏輯資源,當設計的系統較大時,需要采用更大容量的FPGA。同時,分布式算法一般應用在傳統的系數固定的濾波器中,自適應濾波器不象傳統的固定系數濾波器,它的抽頭系數是不斷向著最優系數調整的,因此不可以將權系數的各種組合提前計算好并存儲起來。本文依據分布式算法,研究了一種可用于自適應濾波器的FPGA實現方法。
濾波器的實質就是實現一個乘累加運算,而濾波器的階數決定了乘累加運算的次數。因此,濾波器的FPGA實現主要是利用一些乘法器和加法器。為了實現高速自適應FIR濾波器的設計,可以采用Xilinx FPGA的硬核DSP48單元來實現乘加運算。每個DSP48模塊含有一個18位×18位的有符號硬核乘法器,在乘法器后面級聯了具有3個輸入端口的硬核加法器及若干可選流水線寄存器。
雖然采用DSP48可以提高速度且占用較少Slice,但是在一些低端的FPGA 器件(如Spartan2E)中,其內部無內嵌的硬核乘法器DSP48。當調用IP核實現乘法器時,其實現方法只能用LUT查找表結構,因此有必要設計一種高效的自適應濾波器FPGA實現方法[6]。
本文設定自適應FIR濾波器的輸入數據位寬為8位,權系數(w0,w1,…,w6)位寬為24位,輸出數據位寬截取為8位,所有數據均是用二進制補碼表示的有符號數。將自適應FIR濾波器劃分為并/串轉換模塊、數據延遲模塊、權系數組合模塊和移位相加模塊,其結構框圖如圖1所示。

圖1 自適應FIR濾波器FPGA實現模塊框圖
數據延遲模塊——將輸入濾波器數據x[n]通過不同的觸發器組完成N階延時,產生與各個抽頭對應的延時信號 (x[n],x[n-1],…,x[n- N +1])。
并/串轉換模塊——對經過數據延遲模塊的各數據延時信號同時進行從并行到串行的處理,為后續電路做準備。該模塊輸出信號為各延時信號相對應位組成的N 位向量 (xb[n],xb[n-1],…,xb[n-N+1])。對于一些復雜的自適應均衡器系統,考慮FPGA內部邏輯有限,本文設計的整個電路以串行方式工作,然而輸入數據是并行的,所以,必須將輸入數據進行并/串轉換處理。若數據延遲模塊的并行輸入數據為B位,則該模塊要相繼輸出B組這樣的向量后,數據延遲模塊才能輸入一個數據。
因此,數據延遲模塊以信號速率采入B位數據(包括一個符號位),則并/串轉換模塊要以B×信號速率的時鐘頻率工作,這樣就需要實現倍頻。在處理高速信號時,該模塊就需要更高頻率的工作時鐘。工作頻率過高時,對于時序數字系統設計會出現不可預測的毛刺和干擾。因此在一些需要處理高速信號的場合,在FPGA資源足夠的情況下,可以采用并行方式來實現,而不再需要并/串轉換。
權系數組合模塊——根據并/串轉換模塊輸出的向量 (xb[n],xb[n-1],…,xb[n-N+1])完成相對應的權系數相加組合。權系數組合模塊實際上是由多個用于存儲權系數的雙端口隨機處理器(DPRAM)和控制各DPRAM正確工作的控制模塊組成的,為了節省大量的邏輯資源,在設計中利用了Xilinx FPGA內部的塊隨機處理器(RAM)。
自適應均衡器系數更新模塊輸出的更新權系數后面加入了多個RAM來存儲權系數。對于7階FIR濾波器的7個24位權系數可有27種組合,這就需要24×27的RAM。為了減小RAM的存儲規模,在每2個權系數后面加入1個24×8的DPRAM。同時將RAM分成A、B 2個區,前4個存儲單元為A區,后4個存儲單元為B區。其功能框圖如圖2所示,以w0和w1后面的RAM0為例來說明其工作過程。

圖2 DPRAM功能框圖
在RAM0中,A、B 2個區的第1個存儲單元均存儲24bit 0,第2個存儲單元存w0,第3個存儲單元存w1,第4個存儲單元存入w0與w1的和值。另外通過一個state信號來決定A、B區的讀和寫操作。當state=0時,A區進行寫操作,同時RAM的A端口寫地址最高位為0;B區進行讀操作,同時RAM的B端口讀地址最高位為1。當state=1時,A區進行讀操作,且B端口讀地址最高位變為0;B區進行寫操作,且A端口寫地址的最高位變為1。通過state信號控制讀寫操作在A、B區交替進行,類似于乒乓操作。RAM0的3位讀地址是由state信號和權系數組合模塊輸入信號 (xb[n],xb[n-1],…,xb[n- N +1])中 相 鄰 的 2 位 (xb[n],xb[n-1])來 共 同 決 定 的。 其 中 (xb[n],xb[n -1])與w0和w1的4種組合值的對應關系及相對應的RAM讀地址如表1所示。對于RAM0的寫操作,只需要保證在8個時鐘周期內(本中濾波器輸入信號為8位)將同一時刻的w0,w1和w0+w1寫入RAM0的對應存儲單元即可。

表1 (xb[n],xb[n-1])與w0 和w1 的4種組合值及讀地址的對應關系
所有DPRAM讀出的數據再經過相加就得到與濾波器輸入數據中的1位(xb[n])相對應的一種權系數的組合值。在經過B次循環后,就得到了與濾波器輸入數據所有位 (xB-1[n],xB-2,…,x0[n])對應的權系數組合值。
移位相加模塊——將系數組合模塊輸出的B個權系數組合值經過相應的二次冪加權后再相加得到最后的濾波器輸出結果yn。在該模塊中,要對權系數組合模塊輸出的值進行二次冪加權處理,其通過左移位運算完成。為了提高系統運行速度,B個數值的相加不采用傳統的累加器,而采用加法樹的形式實現。這樣可以將移位運算分解成多層次的移位,進而可減小加法器的位數,起到節省FPGA資源的作用。對于B位的濾波器輸入信號,當b<B-1做加法運算,當b=B-1時做減法運算。因此,經B-2次加法和1次減法,就完成了對yn的計算。
此外,為了提高整個自適應FIR濾波器模塊的運行速度,在該模塊中引入流水線技術。流水線技術為高速數字系統的實現提供了一種非常經濟有效的方法。該技術將一個完整的操作分為若干子操作,這些子操作可以在時間上同時進行而互不干擾。流水線技術的引入可以在不增加或盡可能少增加硬件資源的條件下,實現高速信號處理。
為了驗證本文方法的正確性,結合雙模式(修正恒模算法(MCMA)+判別算法(DD))自適應盲均算法構造的自適應濾波器,設定輸入自適應濾波器的信號為通過信道模型h=[0.763 1-j0.505 4,0.256 7+j0.271 4,-0.134 3-j0.016,0.059 2-j0.006,-0.026 7+j0.004 8,0.009 8+j0.001 5][7],并加入白噪聲的16位正交調制(QAM)信號,濾波器的抽頭數為7,FPGA的時鐘周期為50MHz,分別應用Matlab和FPGA進行仿真。FPGA采用Xilinx公司的Virtex4中的Xc4vlx25芯片,在ISE9.1i的FPGA集成開發環境下使用硬件描述語言Verilog HDL進行設計,并且使用Modelsim SE 6.2b軟件進行系統仿真,可以得到自適應均衡濾波器均衡后系統的均方誤差效果圖,如圖3所示。

圖3 雙模式盲均衡器系統功能仿真圖
由圖3所示的仿真結果可以看出,圖3(a)的Matlab仿真圖和圖3(b)的Modelsim仿真結果基本一致,因此,可以證明上面設計的自適應FIR濾波器的實現方法是可行的。整個程序是在ISE9.1i平臺上實現的,設計中自適應FIR濾波器信號輸入是8位,權系數為24位,輸出也為8位,整個程序綜合于Xilinx公司的virtex4系列Xc4vlx25芯片上,其中上述雙模式均衡器中的FIR濾波器采用了并行結構,其使用資源為:3 195個Slices,占29%,3 248個4輸入LUT,占15%,32個RAMB16s,占44%,其時鐘頻率可達到316.811MHz。若要考慮節省資源,可采用串行結構實現,其使用資源為:581個Slices,占5%,642個4輸入LUT,占2%,1個RAMB16s,占1%,時鐘頻率可達到212.316MHz。
本文研究了一種自適應有限脈沖響應濾波器的FPGA實現方法。該方法將原來的乘累加運算轉化為只有加法和移位運算,相應的FPGA實現也由傳統的乘法器(DSP48)和加法器轉變為加法器和DPRAM,可以節省FPGA中的硬核乘法器。該方法用FPGA內部的塊RAM來存儲權系數輔助完成乘累加運算,由于塊RAM不占用內部邏輯資源,所以相對于查找表該方法可以節省大量的邏輯資源。另外,在移位相加時通過將移位分為多層移位減小了加法器的位數,同時結合使用流水線技術,保證了系統運行的速度,最后通過Modelsim仿真和Matlab仿真結果比較驗證了該設計方法是可行的。
[1]Simon Haykin.自適應濾波器原理[M].鄭寶玉譯.北京:電子工業出版社,2010.
[2]楊恒.FPGA/CPLD最新實用技術指南[M].北京:清華大學出版社,2005.
[3]田耘,徐文波.Xilinx FPGA開發實用教程[M].北京:清華大學出版社,2008.
[4]潘立軍,劉澤民.兩種改進的盲均衡算法[J].電路與系統學報,2006,11(2):141-144.
[5]郭繼昌,李香萍,滕建輔.基于位串行分布式算法和FPGA實現FIR電路的研究[J].電子測量與儀器學報,2001,15(2):15-21.
[6]Dawood A,Bergmann N,Asdani Z,et al.Adaptive FIR filter design and implementation empowered by reconfigurable FPGAs[J].Proceedings of SPIE-The International Society for Optical Engineering,2000,67(3):1601-1612.
[7]張曉娟,關明明,吳長奇.基于點判決域的多模盲均衡算法及其FPGA實現[J].電子技術應用,2011,37(2):49-51.