文獻(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),,減少了資源的占用,,降低了成本。現(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)化,。基于FPGA的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.