文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.11.016
中文引用格式: 朱述偉,黃銳敏, 楊清河. 基于FPGA CFGLUT5的可變FIR濾波器的實現[J].電子技術應用,2015,41(11):58-60,64.
英文引用格式: Zhu Shuwei,Huang Ruimin,Yang Qinghe. The variable FIR filter implement based on FPGA CFGLUT5[J].Application of Electronic Technique,2015,41(11):58-60,64.
0 引言
在現代軟件無線電的數字信號處理系統中,例如脈沖壓縮體制雷達[1],需要在不同的工作模式下切換。不同工作模式對應著不同的頻率響應特性,對應一組濾波器系數;因此在實現結構上要求濾波器可以動態變化。如果把每種模式的濾波器單獨實現,不但需要占用大量的面積,而且會使得系統結構松散、資源浪費和時序難以一致。然而,該系統不同的工作模式具有相同的實現結構和數據通路,且輸入數據是一致的,因此可以作為一個整體實現,即將其設計為由一個輸入數據端口、多套系數存儲器以及一個數據輸出端口組成的可變濾波器。它的優點是不用離線重新設計一個新的濾波器便可獲得動態可變的濾波特性。本文將介紹如何在傳統可變濾波器基礎上利用Xilinx FPGA CFGLUT5的動態配置功能實現可重用結構共享來減少資源的消耗,提高可變濾波器的硬件效率,達到通過簡單的控制實現軟件無線電系統不同工作模式之間的切換。
1 傳統的可變FIR濾波器設計方法
可變FIR濾波器一般可以分為4個模塊:輸入數據緩存模塊、濾波器系數存儲模塊、運算模塊及控制模塊。輸入數據緩存模塊及運算模塊在整個系統中可以共享以便節省資源,同時為了保證采樣頻率與系統時鐘頻率之間關系的一致,設定每組濾波器的系數長度相同,為此將長度較短的濾波器系數補零。整個可變FIR濾波器的結構框圖如圖1。
濾波器系數存儲模塊設計原則是根據濾波器基本結構[2]如串行、并行盡可能少的占用存儲資源,同時便于讀系數的設計,為此設計方法采用分段存取。例如有4套濾波器系數,每組濾波器系數長度均為16,則存儲空間深度可以定義為64。0~15號地址存儲第一套濾波器,16~31號存儲第二套濾波器系數,32~47號存儲第三套濾波器系數,48~63號存儲第四套濾波器系數。這樣,濾波器系數地址可以由一個模值為16的4位計數器和2位控制位共6位構成。當控制位為00時,地址變化范圍為0~15,為01時地址變化范圍為16~31,當控制位為10時,選中地址范圍為32~47,當控制位為11,選中地址范圍為48~63。
控制模塊完成的主要工作是系數的切換,輸入數據的讀取與寫入。不同的結構需要不同的控制數據。
2 改進的可變FIR濾波器設計方法
2.1 DA算法結構濾波器
基于FPGA的DA算法[3]是一種以實現乘加運算為目的的運算方法,由于傳統的乘加運算消耗較多的硬件資源,轉而改進采用基于FPGA的LUT查找表[4]和移位相加來實現。由于FPGA基本模塊正是由LUT構成,而且移位和相加算法實現起來更加容易有效。所以DA算法可以極大地減少硬件電路的規模, 提高電路的工作執行速度。其主要原理如下。
式(1)中x[n]是二進制補碼表示的有符號輸入信號,表示x的第n次采樣值,輸入的數據位寬為M=B+1位。xb[n]表示x[n]的第b位。假設濾波器系數為序列h[n],濾波器輸出為y[n],得到濾波器輸出可以表示為:
將式(2)展開,重新分別求和得
式(3)的h[k]xm[n-k](m取B或b)的部分可以通過查找表映射來計算出。對于長度為N的FIR濾波器,只需構造一個深度為N的存儲器查找表,通過M次查找表運算,M-1次移位運算和M-1次加法運算即可完成整個乘加運算。這種結構極易使用流水線結構,且運算速度受限于加法和查找表運算速度,與乘加運算的數據長度沒有關系。
本文采用Xilinx公司的XC6SLX75T器件為例,設計長度為32的線性相位可變FIR數字濾波器。利用線性相位的對稱性可以將濾波器系數減半為16個濾波器系數,假定濾波器輸入信號位寬為11位,濾波器的系數量化為12位,濾波器輸出數據位寬30位,共有4套濾波器系數。為防止濾波器系數相加溢出則需要15位寬的存儲器。4套濾波器系數需要控制位為2位。由此得到濾波器系數存取模塊如圖2所示。
2.2 CFGLUT5的基本原理
FPGA內部資源CFGLUT5[5]是一個5輸入的動態可重構查找表,能夠在電路運行時改變電路的LUT的邏輯功能。其結構圖如圖3所示。采用CDI輸入引腳,一個新的初始值可以同步串行移位輸入存儲到CFGLUT5中。CE為使能輸入CDI的接口,O5、O6為輸出邏輯值,大小基于當前加載到查找表的初始值和當前選定的I0~I4輸入引腳。同時可以分別將O5、O6輸出形成兩個不同的子集,共享輸入分時復用,形成雙通道的查找表。CDO接口是擴展初始值接口,作為級聯CFGLUT5單元使用,每個單元的CDO引腳接入到下一個CFGLUT5單元的CDI輸入接口。這將允許一個單一的串行數據鏈(每個單元32位)來重新配置多個LUT,可以來擴展輸入數據的位數。
2.3 改進DA算法的可變FIR濾波器
許多FPGA芯片都具有可重構的LUT基本單元,例如Xilinx FPGA的重構模塊CFGLUT5。本文通過使用CFGLUT5來改進傳統DA算法[6],從而實現動態可重構的可變FIR濾波器,利用可以動態重配置的LUT可以將多套濾波器系數查找表共享為一套查找表。只需要32個工作時鐘即可以完成濾波器系數查找表的一次重構,減少了資源的占用,降低了成本。現對上述傳統DA算法改進,設計上述同樣的可變FIR濾波器結構如圖4所示。
圖4中M(0)~M(15)為濾波器對稱系數的輸入信號相加后信號,經過數據結構轉換,得到M(0)~M(15)的最低位組成16位的數據,作為查找表的尋位地址,并依次再取M(0)~M(15)的次低位,這樣一直取到最高位。由于輸入數據為11位,則對稱相加后數據M位寬12位,共 12次查找運算,所以取計數器count為12進制。其中M(0)(count)~M(15)(count)分別表示M(0)~M(15)的第count位(count取值為0~11的整數)。為改進傳統DA算法所占用的ROM資源,采用分割查找表的方式,將傳統DA算法16位ROM地址線,改為4個4輸入地址線的CFGLUT5模塊Y0~Y3來存儲。令所有CFGLUT5的I4為高電平,則濾波器前8個系數的查找表Y0、Y1如表1所示。濾波器后8個系數同樣按表1存儲Y3、Y4。
濾波器系數量化為12位,則O5/O6輸出值為保證不溢出則需要14位存儲如圖3所示,同時將數據拆分為從高位到低位存儲,例如當Y0的地址位為1000時Y0(0)~Y0(13)分別表示存儲值h[3] 的二進制補碼數據最高位到最低位。在將Y0、Y1、Y2、Y3的每個可重構CFGLUT5的輸出值相加后,為防止數據相加后溢出增加兩位位寬來存儲相加值,再送入移位寄存器。每送入一次相加后的數據,移位寄存器向左增加一位移位,直到向左移動11位后又回到向左移動0位,不斷循環。控制器控制重構CFGLUT5的映射表的更新,當切換濾波器系數時,控制CFGLUT5的CE和CDI信號,在經過32個CLK時鐘后,查找表Y0、Y1完成更新,對應為切換的濾波器系數。累加器由控制器控制使其經過11次累加和1次減法后輸出濾波器數據,并清零,則Y[n]為濾波器輸出數據。
為便于切換濾波器的簡單操作,同樣還需要一個濾波器系數存儲模塊,存儲方式不同于傳統DA算法的存儲結構查找表,按照傳統的串行結構存儲,同時在控制器中加入濾波器系數轉換運算電路。將按順序存儲的濾波器系數,通過簡單加法運算轉化為CFGLUT5查找表的結構的系數。
3 性能分析及實驗結果
取線性可變FIR濾波器的系數長度為N,輸入數據位寬為W1,濾波器量化位數為W2,濾波器套數為L,則可以估算消耗資源如下:
傳統DA算法結構存儲占ROM大小:
設計上述實驗可變FIR濾波器傳統DA算法消耗ROM大小為4×16×216=4 Mb,而當采用改進DA算法結構只需要增加56個CFGLUT5和濾波器系數轉換運算消耗的68個加法器可以將ROM消耗減少到4×12×16=0.75 Kb,容易工程實現。現在Xilinx公司的XC6SLX75T器件上采用分布式ROM實現上述可變FIR濾波器,綜合分析得到如表2所示實驗數據。
從表2的實驗數據可以看出改進傳統DA算法后實現上述濾波器LUT的消耗減少了約25倍。最大工作時鐘提高了近6倍左右。
4 結論
本文介紹了可變FIR濾波器的設計,并在傳統DA算法結構上對資源消耗及工作速度進行了改善和優化。基于FPGA的CFGLU5的DA算法實現了對稱結構FIR濾波器動態可重構設計,這種算法相比于傳統DA算法的優勢就是在運行中動態可重構FIR濾波器,共享了一套可重構查找表的方法從而實現可變FIR濾波器的功能,同時利用CFGLUT5的O5/O6不同輸出接口,也可實現FIR濾波器的雙通道功能,可同時處理2路不同信號,在節約資源的同時,可以增加實現的靈活性。最后通過FPGA仿真分析了CFGLUT5的DA算法的可變FIR濾波器,其結果表明在滿足工作模式切換性能的同時可以明顯減少占用的邏輯資源(LUT)和提高系統速度。
參考文獻
[1] 潘林.基于FPGA的雷達脈沖壓縮系統的研究與實現[D].上海:上海交通大學,2008.
[2] Uwe Meyer-Baese.Digital signal processing with field programmable gate arrays[M].BerLin:Springer,2007.
[3] 李姮,田克純.一種基于FPGA的分布式FIR數字濾波器設計[J].電聲技術,2012(10):28-32.
[4] 閆永鵬,于海勛.一種基于LUT的改進FIR濾波器的設計[J].微電子學,2010,40(5):694-696.
[5] Xilinx,Inc.Spartan-6 Libraries Guide for HDL Designs[J/OL].Xilinx,2013.http://www.xilinx.com/support/documenta-tion/sw_manuals/xilinx14_7/spartan6_hdl.pdf.
[6] KUMM M,MOLLER K,ZIPF P.Dynamically reconfigurable FIR filter architectures with fast reconfiguration[C].Darmstadt:IEEE,2013.