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