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