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