張文濤,張鵬蛟,趙 鵬
(長安大學(xué),陜西 西安 0300511)
在輻照加速器低電平控制系統(tǒng)中,從加速腔中采集的信號(hào)受到外界的干擾信號(hào)的影響,為保證整個(gè)控制系統(tǒng)正常運(yùn)行,并保證整個(gè)系統(tǒng)最低要求的精度,因此具有高精度、實(shí)時(shí)的數(shù)字濾波器的設(shè)計(jì)被提出來。數(shù)字濾波器的實(shí)質(zhì)是對數(shù)字信號(hào)的運(yùn)算處理,從而改變原始信號(hào),完成濾波處理,得到要求的信號(hào)。通常模擬濾波器對濾波器元件精度要求比較嚴(yán)格,而且后面調(diào)試也比較耗時(shí),且可靠性較低,相比起來,數(shù)字濾波器的可靠性和穩(wěn)定性都很高,且容易調(diào)節(jié),即只要改變?yōu)V波器的參數(shù)就可以很方便的改變?yōu)V波器的性能,直到達(dá)到要求[1]。
早期,為了解決濾波器的實(shí)時(shí)性和高計(jì)算速率問題,通常的辦法是采用專用的高速數(shù)據(jù)處理芯片和匯編語言來完成程序編寫,但是這樣,一方面對硬件成本要求提高,另一方面設(shè)計(jì)周期會(huì)延長,并且芯片的存儲(chǔ)量也對濾波器的設(shè)計(jì)有不小的影響。而大型可編程門陣列(FPGA)具有高速運(yùn)算速度,大的存儲(chǔ)量,可編程,用戶易操作,從而大大地節(jié)省了設(shè)計(jì)成本和縮短設(shè)計(jì)周期。通過FPGA和LabView的聯(lián)合使用,進(jìn)一步提高設(shè)計(jì)速度和可靠性[2]。
FIR濾波器,也就是有限沖擊響應(yīng)濾波器,字面上不難理解,也就是說,該濾波器一個(gè)單位響應(yīng)脈沖是有限的。詳細(xì)地來講,F(xiàn)IR濾波器其突出特點(diǎn)是使其單位取樣響應(yīng)h(n)是一個(gè)N點(diǎn)長的有限長序列0~N-1.這樣濾波器的輸出y(n)可表示為輸入序列x(n)與單位取樣響應(yīng)h(n)的線性卷積。其表達(dá)式如下。
從上面系統(tǒng)函數(shù)不難發(fā)現(xiàn),F(xiàn)IR濾波器的極點(diǎn)只存在原點(diǎn)上,這使得FIR系統(tǒng)具有全局穩(wěn)定性。另外分析其函數(shù)右邊組成可知FIR濾波器可以看成加法器和乘法器組合而成,每個(gè)乘法器都有一個(gè)操作系數(shù),也就是通常所說的抽頭次數(shù),這些抽頭系數(shù)可以通過相關(guān)軟件計(jì)算獲得。這也是這種濾波器結(jié)構(gòu)被人們稱為“抽頭延遲線結(jié)構(gòu)”的原因。
大體來講,根據(jù)不同場合要求有四種FIR的基本結(jié)構(gòu),根據(jù)不同的要求來供選擇,即直接型、快速卷積型、頻率取樣型和級(jí)聯(lián)型四種濾波結(jié)構(gòu)。考慮到實(shí)現(xiàn)的復(fù)雜性,運(yùn)算的存儲(chǔ)量和FPGA實(shí)現(xiàn)的難易程度,因此,這里選擇直接型FIR濾波器結(jié)構(gòu)。FIR濾波器的輸出y(n)可表示為輸入序列x(n)單位取樣響應(yīng)h(n)的線性卷積,根據(jù)式(1)和(2)可以很容易得出FIR濾波器的直接型結(jié)構(gòu)(假設(shè)濾波器的單位取樣響應(yīng)為M+1點(diǎn)長的有限序如圖1所示[3]。
其系統(tǒng)函數(shù)為
圖1 直接型FIR濾波結(jié)構(gòu)
通過上面結(jié)構(gòu)來看,就M+1階的FIR濾波器,要有M+1個(gè)乘法運(yùn)算單元和M個(gè)用來的延時(shí)單元,另外還要一個(gè)加法運(yùn)算單元用來整合。由于通過FPGA完成上述結(jié)構(gòu)過程中,乘法運(yùn)算所耗器件資源要比加減法等運(yùn)算所耗費(fèi)資源多得多。因此在實(shí)際情況實(shí)現(xiàn)時(shí),需要最大程度降低乘法運(yùn)算量。由FIR濾波器相關(guān)結(jié)構(gòu)特點(diǎn),很容易知道,只有單位取樣響應(yīng)具有對稱特性的FIR濾波器才具有線性相位特性,所以,一般都會(huì)使用具有線性相位特性結(jié)構(gòu)的濾波器來實(shí)現(xiàn)FIR濾波器,著重點(diǎn)就是其對稱特性,這樣就省去了很大一部分器件資源。
根據(jù)FIR濾波器的幅度特性,可以將濾波器分成四種不同的結(jié)構(gòu),根據(jù)不同的結(jié)構(gòu),也分別對應(yīng)了相應(yīng)的直接型FIR濾波器基本結(jié)構(gòu)。對于第一種結(jié)構(gòu),即M是偶數(shù),且單位取樣響應(yīng)為偶對稱的情況,對其系統(tǒng)輸入與輸出關(guān)系式如下所示。
同樣的方法,也可以得出其它幾種結(jié)構(gòu)系統(tǒng)的輸入與輸出響應(yīng)關(guān)系。對于第二種結(jié)構(gòu),即M是奇數(shù),單位取樣響應(yīng)為偶對稱的情況,系統(tǒng)輸入與輸出關(guān)系式如下所示
第三種結(jié)構(gòu),即M是偶數(shù),單位取樣響應(yīng)為奇對稱的情況,系統(tǒng)輸入與輸出關(guān)系式如下所示。
第四種結(jié)構(gòu),即M是奇數(shù),單位取樣響應(yīng)為奇對稱的情況,系統(tǒng)輸入與輸出關(guān)系式如下所示
根據(jù)式(3)、式(4)、式(5)、式(6),可以分別畫出響應(yīng)的實(shí)現(xiàn)結(jié)構(gòu),這里給出第二種對稱機(jī)構(gòu)的FIR濾波器結(jié)構(gòu)如圖2所示。
圖2 線性相位FIR濾波器的直線型結(jié)構(gòu)
通過觀察圖1和圖2所示的兩種濾波器結(jié)構(gòu)不難分析可以得出,對于相同階數(shù)的系統(tǒng),使用線性相位的濾波器要比使用非線性相位的FIR濾波器所需要的乘法運(yùn)算操作至少降低了一半,這樣一來就可以很有效的降低對FPGA內(nèi)部資源的使用。
FIR濾波器抽頭系數(shù)h(i)設(shè)計(jì)方法有多種,有窗函數(shù)法(從時(shí)域角度出發(fā))、頻率取樣法(從頻域角度出發(fā))、最優(yōu)設(shè)計(jì)方法(等波紋切比雪夫逼近法),其中窗函數(shù)法設(shè)計(jì)最簡便。Kaiser窗是一種可調(diào)窗,是利用I0(x)即等零階貝塞爾函數(shù)構(gòu)成的,Kaiser窗函數(shù)的表達(dá)式為。
式中,I0(x)是第一類變形貝塞爾函數(shù);β是窗函數(shù)的形狀參數(shù),可以自由選擇。改變?chǔ)轮悼梢哉{(diào)節(jié)主瓣寬度和旁瓣電平,β=0時(shí)相當(dāng)于矩形窗,其典型值為4~9[4].
LabView有圖形化表示的脈沖函數(shù)和正弦函數(shù),強(qiáng)大的數(shù)據(jù)分析模塊、圖形語言和交互界面。程序編制模塊由下而上,層層調(diào)用子程序,設(shè)計(jì)的交互界面調(diào)試方便。本設(shè)計(jì)待處理的信號(hào)是一個(gè)1 MHz正弦信號(hào)和2 MHz正弦信號(hào)的疊加信號(hào),采樣率為32 MHz,濾波器階數(shù)為64階。圖3濾波器設(shè)計(jì)的頻譜圖。
圖3 FIR濾波器的頻譜圖
從圖3可以看到,顯然1 MHz信號(hào)在通帶內(nèi),而2 MHz信號(hào)在通帶以外,被衰減掉了。下面圖4、5和6是濾波器通過疊加信號(hào)之后的頻譜圖和時(shí)域波形,很明顯2 MHz信號(hào)被有效地濾除掉了。
圖4 LabVIEW中疊加信號(hào)通過濾波器的頻譜圖
圖5 LabVIEW中疊加信號(hào)通過濾波器前的時(shí)域圖
圖6 LabVIEW中疊加信號(hào)通過濾波器后的時(shí)域圖
FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。本次設(shè)計(jì)采用的是Altera公司Cyclone IVE系列芯片,利用QuartusⅡ11.0編輯環(huán)境進(jìn)行設(shè)計(jì),QuartusⅡ11.0編輯軟件中提供了大量現(xiàn)成可直接調(diào)用的IP核如加法器、乘法器等,大大的縮短了設(shè)計(jì)所需的時(shí)間。圖7是具有線性相位的并行FIR濾波器結(jié)構(gòu)圖,以此為根據(jù)來編寫FPGA程序[5]。
圖7 具有線性相位的并行FIR濾波器結(jié)構(gòu)
上述并行結(jié)構(gòu),即并行實(shí)現(xiàn)濾波器的累加運(yùn)算,具體來講就是將具有對稱系數(shù)的輸入數(shù)據(jù)進(jìn)行相加,而后采用多個(gè)乘法器并行實(shí)現(xiàn)系數(shù)與數(shù)據(jù)的乘法運(yùn)算,最后將所有乘積結(jié)果相加輸出??梢钥闯?,這種結(jié)構(gòu)具有最高的運(yùn)行速度,由于不需要累加運(yùn)算,因此系統(tǒng)時(shí)鐘頻率可以與數(shù)據(jù)輸出時(shí)鐘頻率一致。
本次FIR濾波器FPGA設(shè)計(jì)仿真測試由Modesim仿真軟件來完成,這是因?yàn)槠溆斜容^友好交互環(huán)境,仿真速度快,保護(hù)IP核不受影響,并且同時(shí)支持VHDL和Verilog HDL語言。仿真結(jié)果由圖8所示。
圖8 FIR濾波設(shè)計(jì)ModelSim仿真時(shí)序圖
由圖8可以看出,濾波器輸入信號(hào)(Xin)的波形由于是頻率1 MHz和2.1 MHz正弦波的合成信號(hào),從時(shí)域上無法明顯分辨出1 MHz信號(hào),由于濾波器輸出信號(hào)(Yout)是經(jīng)過低通濾波后的信號(hào),可以明顯的看出2.1 MHz正弦波信號(hào)被濾除,保留了1 MHz正弦波信號(hào),輸出信號(hào)起始處波形是一小段直流分量,這是由于FIR濾波器運(yùn)算時(shí)產(chǎn)生的固有延時(shí)造成。根據(jù)FIR濾波器原理,長度為N的濾波器,濾波延時(shí)為N/2個(gè)數(shù)據(jù)周期。
將上述濾波器輸出信號(hào)上傳給LabView,經(jīng)過處理可得到圖9.
圖9 LabVIEW接收FPGA輸出數(shù)據(jù)的時(shí)域圖
由此可以通過LabView對比FPGA設(shè)計(jì)FIR濾波前后數(shù)據(jù)以達(dá)到對比的效果
本次設(shè)計(jì)首先通過LabView完成FIR濾波器設(shè)計(jì)的前期仿真,并得到FPGA設(shè)計(jì)所需要的抽頭系數(shù),然后使用VerilogHDL硬件描述語言完成FPGA的設(shè)計(jì),接著將從FPGA輸出的數(shù)據(jù)傳輸?shù)絃abView中,實(shí)現(xiàn)上位機(jī)和下位機(jī)的友好交互,已達(dá)到對濾波效果的實(shí)時(shí)檢測。通過上述仿真結(jié)果證實(shí)上述方案的可行性。
參考文獻(xiàn):
[1]杜 勇.數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2015:105-144
[2]姜碧瓊,盧博友,雷永鋒,等.基于LabVIEW7.0的數(shù)字濾波器設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,24(10):173-174.
[3]李澤明,李錦明.FIR數(shù)字濾波器的MATLAB輔助設(shè)計(jì)及FPGA實(shí)現(xiàn)[D].太原:中北大學(xué),2013.
[4]蔡 興,唐 求.基于LabVIEW的多采樣率數(shù)字濾波器1/3倍頻程計(jì)算方法[D].長沙:湖南大學(xué),2015.
[5]夏雨文.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].3版.北京:北京航空航天大學(xué)出版社,2013:97-110.