黃鳳英,王 俊,錢 慧
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州350002;2.福州大學(xué) 電氣工程與自動化學(xué)院,福建 福州350002;3.福建省集成電路設(shè)計中心,福建 福州350002)
FIR數(shù)字濾波器具有在設(shè)計任意幅頻特性,同時能夠保證嚴(yán)格的線性相位特性,具有穩(wěn)定性強、精度高、速度快等特點[1],在雷達、通信、音視頻、圖像、航空航天等領(lǐng)域有著廣泛應(yīng)用。傳統(tǒng)的FIR濾波器的特性一般不能在線改變。但對未知時變環(huán)境下的信號進行處理時,濾波器的性能必須隨著實際條件變化而變化[2]。因此,設(shè)計一種能在保證系統(tǒng)正常運行的前提下,實時更改濾波器系數(shù)的FIR濾波器在研究、工業(yè)生產(chǎn)領(lǐng)域得到了廣泛的關(guān)注。
FPGA是一種典型的動態(tài)可重構(gòu)器件,具有“在系統(tǒng)”重新配置電路功能的獨特性能,同時還具有在系統(tǒng)動態(tài)重構(gòu)電路邏輯的能力,對提高電子信息系統(tǒng)的實時處理能力、可靠性、降低硬件系統(tǒng)的規(guī)模和功耗具有重大的理論和實際意義[3]。
本文利用Xilinx Virtex-4 FPGA可以重構(gòu)配置特性,結(jié)合濾波器結(jié)構(gòu)的特點,設(shè)計了一個基于模塊局部可重構(gòu)的FIR濾波器,并結(jié)合MATLAB工具軟件,對可重構(gòu)設(shè)計的性能進行了測試。實驗結(jié)果表明,相對于傳統(tǒng)設(shè)計方法,本文設(shè)計的可重構(gòu)FIR濾波器具有快速、靈活、硬件資源消耗少等優(yōu)勢。
FIR濾波器的數(shù)學(xué)表達式為
式(1)中,N是FIR濾波器的抽頭數(shù),x(n)表示第n時刻的輸入樣本,h(i)表示濾波器的第i級抽頭系數(shù)。FIR的傳遞函數(shù)H(Z)是通過對h(i)進行Z變換得到,其形式如式(2)所示
根據(jù)式(1)、(2),可畫出FIR濾波器的一般結(jié)構(gòu)如圖1所示。
圖1 FIR濾波器的一般網(wǎng)絡(luò)結(jié)構(gòu)
由圖1可知,F(xiàn)IR濾波輸出結(jié)果y(n)實質(zhì)上是由一個輸入信號x(n)經(jīng)過逐級延遲,且在各級延遲輸出進行加權(quán)累加得到。濾波器最主要的工作過程是進行乘累加運算,一個N階的FIR濾波器完成一次濾波需要進行(N-1)次加法運算和N次乘法運算。但FIR數(shù)字濾波器具有線性相位特性及對稱特性,即
從而容易得到偶對稱的FIR濾波器的輸入輸出關(guān)系,如式(5)所示
相對于直接型結(jié)構(gòu),在實現(xiàn)濾波器硬件電路上,乘累加次數(shù)得到減半,資源消耗更少,且濾波的時鐘周期減半,從而大大提高了處理速度[4]。圖2和圖3分別顯示了N取奇數(shù)和N取偶數(shù)的線性相位FIR濾波器結(jié)構(gòu)。
從圖2、圖3可知,F(xiàn)IR數(shù)字濾波器可以看成由多個累加乘子單元和一個最右面的單元結(jié)構(gòu)組成,如圖4a,4b所示,根據(jù)階數(shù)為偶數(shù)或者奇數(shù)(信號線even為1或者0)決定最右單元結(jié)構(gòu)。從結(jié)構(gòu)上看,F(xiàn)IR濾波器容易通過多個濾波器直接級連就能夠擴展濾波器的階數(shù),因此在FPGA上采用基于模塊局部重構(gòu)技術(shù)來重構(gòu)FIR濾波器變得簡單、靈活,且能夠充分利用資源。
圖4 單元結(jié)構(gòu)圖
如圖5所示,基于模塊的可重構(gòu)設(shè)計的一個重要步驟是將整個電路功能劃分成功能可變的重構(gòu)模塊(可重構(gòu)邏輯)和功能不變的靜態(tài)模塊(固定邏輯)。其中,可重構(gòu)區(qū)域可以在器件的其他部分還在運行的情況下進行重構(gòu)。
圖5 兩個模塊的設(shè)計布局圖
基于模塊局部重構(gòu)的輸入、輸出以及穿過可重構(gòu)模塊邊界的布線資源是預(yù)先固定的,這就需要一種特殊的總線宏(BUS MACRO)在局部重構(gòu)模塊和靜態(tài)模塊之間充當(dāng)一個固定的布線橋,總線宏在功能重構(gòu)的時候仍保持不變,從而能夠保證兩個模塊之間能正確的通信[5]。
實際設(shè)計中,如圖6所示,每個模塊從硬件描述語言(verilog)設(shè)計開始,經(jīng)過獨立綜合、布局、實現(xiàn)等操作,并生成比特流文件[6]。
圖6 局部重構(gòu)設(shè)計流程圖
本文設(shè)計的可重構(gòu)FIR濾波器階數(shù)可從8階到16階進行的轉(zhuǎn)變,其中靜態(tài)模塊由3個累加乘子單元結(jié)構(gòu)和最右邊單元結(jié)構(gòu)組成;可重構(gòu)模塊由多個累加乘子單元結(jié)構(gòu)模塊和濾波器系數(shù)輸入的控制模塊組成。且在靜態(tài)模塊和動態(tài)可重構(gòu)模塊之間插入總線宏,設(shè)計框圖如圖7所示。
圖7 可重構(gòu)FIR濾波器的設(shè)計框架
從前面濾波器的結(jié)構(gòu)圖中可以看出16階的FIR濾波器和8階的濾波器硬件結(jié)構(gòu)基本相同,為了構(gòu)成16階濾波器,可在原有的8階濾波器結(jié)構(gòu)上加載4個累加乘單元模塊,如圖8中的虛線區(qū)域所示。在實現(xiàn)重構(gòu)過程中,只需下載重構(gòu)模塊的配置信息,而不需要重新配置整個芯片,就能將原有的濾波器構(gòu)成16階的FIR濾波器,而原本在FPGA上的8階FIR濾波器不受任何影響,如此可大大減少芯片的重配置時間。
圖8 虛線區(qū)為局部重構(gòu)部分可動插入或刪除
該部分描述了一個重構(gòu)的FIR濾波器在Xilinx Virtex-4 FPGA上的實現(xiàn)過程。
局部重構(gòu)是一種分層設(shè)計方法,在編碼過程中必須嚴(yán)格遵守。首先,用ISE軟件設(shè)計3種HDL文件,分別是頂層HDL設(shè)計,靜態(tài)模塊HDL設(shè)計和局部重構(gòu)模塊HDL設(shè)計,然后獨立綜合各文件。
頂層模塊不包含任何邏輯,只有輸入輸出實例、靜態(tài)和可重構(gòu)模塊實例、信號聲明,以及定義了各個子模塊的連線,區(qū)域及總線宏的分配。靜態(tài)模塊和可重構(gòu)模塊主要完成移位相加、乘法、輸出相加功能,但靜態(tài)模塊在重構(gòu)過程中保持固定不變,局部重構(gòu)模塊在重構(gòu)前后功能改變。當(dāng)多個重構(gòu)模塊使用同一個可重構(gòu)區(qū)域的時候,每個模塊的文件名和端口配置必需和頂層實例化的可重構(gòu)模塊一樣[7]。
完成前面的編碼和綜合工作后,將進入實現(xiàn)局部重構(gòu)的過程,如圖9所示。此過程在Xilinx的局部重構(gòu)平臺PlanAhead集成環(huán)境下實現(xiàn)。
圖9 局部重構(gòu)的流程
圖10 顯示了在FPGA上可重構(gòu)區(qū)域和I/O管腳的布局以及總線宏的位置。實現(xiàn)的最后一步是組裝,組裝靜態(tài)模塊和局部可重構(gòu)模塊,并創(chuàng)建配置FPGA的位流文件。在此過程中,將創(chuàng)建好兩種位流文件:整體位流文件(full bit file),根據(jù)需要,在每個可重構(gòu)區(qū)域中選擇一個可重構(gòu)模塊作為缺省模塊被并入整體位流文件,用于FPGA初始化時裝載配置;局部位流文件(partial bit file),由重構(gòu)模塊生成,該文件在整體位流文件配置FPGA后再下載到FPGA中,此時靜態(tài)模塊仍處于運行狀態(tài),最后實現(xiàn)FIR濾波器階數(shù)的轉(zhuǎn)變。
圖10 可重構(gòu)區(qū)域和I/O管腳的布局
本實驗選擇一個只含8階FIR濾波器系數(shù)的可重構(gòu)模塊和一個靜態(tài)模塊(8階FIR濾波器功能)合并為整體位流文件,該文件大小為1 673 kbyte,通過下載線下載到Virtex-4 XC4VSX35 FPGA設(shè)備上。之后下載構(gòu)成16階濾波器的可重構(gòu)位流文件,大小為74 kbyte,該部分只重構(gòu)可重構(gòu)區(qū)域的電路,靜態(tài)部分將不受任何影響。驗證時,把兩頻率的正弦波信號疊加后,經(jīng)過ADC,再通過FPGA上的濾波器模塊,最后通過USB傳輸?shù)接嬎銠C,并用MATLAB顯示出濾波前后的時域及頻域圖形,如圖11所示。疊加信號經(jīng)過可重構(gòu)FIR濾波器后,將高頻信號濾除了,從而驗證了可重構(gòu)設(shè)計的正確性。
由于位流大小直接與占用硬件資源大小及配置時間成比例,只加載重構(gòu)模塊74 kbyte的配置信息就能實現(xiàn)更高階FIR功能,而代替了整個FPGA重構(gòu)(整體文件為1 673 kbyte),這樣一來大大縮短配置重構(gòu)時間。表1顯示了整體和重構(gòu)位流文件的配置速度。
表1 兩種位流文件的配置速度
本文還與直線型結(jié)構(gòu)的可重構(gòu)FIR濾波器的進行對比,同一性能的FIR濾波器,映射后的Slice、LUT及DSP48使用個數(shù)對比,如表2所示,從表中可以計算出對稱轉(zhuǎn)置結(jié)構(gòu)的可重構(gòu)濾波器可以節(jié)省大約12%的Slice資源、45%的LUT資源及50%的DSP48資源。
本文描述一個在Xilinx Virtex-4 XC4VSX35 FPGA設(shè)備上采用動態(tài)局部可重構(gòu)的方法來設(shè)計階數(shù)可變的FIR數(shù)字濾波器,與同類的濾波器相比,資源配置更少,Slice、LUT和DSP48s資源分別節(jié)省大約12%、45%和50%,重構(gòu)時間提高了80%,并能實現(xiàn)重構(gòu)區(qū)域資源的時分復(fù)用,同時提高了該區(qū)域資源的利用率及靈活性。動態(tài)局部可重構(gòu)技術(shù)能夠動態(tài)插入或刪除局部可重構(gòu)模塊,使得FIR濾波器系數(shù)得到實時更新,階數(shù)能夠更靈活地改變。
[1]王靜,魚云岐.基于FPGA的FIR數(shù)字濾波器設(shè)計與仿真[J].國外電子元器件,2008(11):90-92.
[2]梁甲華,林爭輝,林濤.基于可重構(gòu)FPGA技術(shù)的自適應(yīng)FIR濾波器的實現(xiàn)[J].電子工程師,2004,30(12):48-50.
[3]谷鑾,徐貴力,王友仁.FPGA動態(tài)可重構(gòu)理論及其研究進展[J]計算機測量與控制,2007,15(11):1415-1418.
[4]劉慶良,盧榮軍,李建清.FIR數(shù)字濾波器的FPGA實現(xiàn)研究[J].電子設(shè)計工程,2010(3):59-61.
[5]KARTHIK S,SHILPA J.Implementation of partial reconfigurable FIR filters using dynamic partial rconfiguration[J].Computer Science,2011(1):65-69.
[6]CARDOSO J M P,HUBNER M.Reconfigurable computing[M].New York:Springer-Verlag,2011.
[7]YEONG J,HANHOLEE O,LEE C H.Dynamic partial rconfiguration FIR filter design[J].Computer Science,2006(5):30-35.