摘 要: 應(yīng)變測(cè)試系統(tǒng)中傳感器輸出信號(hào)非常微弱,傳感器與測(cè)量儀連接線較長容易引入干擾信號(hào),且應(yīng)變儀應(yīng)用場地干擾信號(hào)不同。介紹了一種用FPGA實(shí)現(xiàn)的可編程IIR型濾波器,該濾波器以二階基本節(jié)為核心,通過改變二階基本節(jié)的系數(shù)來改變?yōu)V波器濾波模型及截止頻率。嵌入式計(jì)算機(jī)把系數(shù)寫入濾波器實(shí)現(xiàn)低通、高通、帶通及帶阻濾波。該濾波器在應(yīng)變測(cè)量儀器應(yīng)用上取得了很好效果。
關(guān)鍵詞: 可編程濾波器;多通道;FPGA;IIR
在應(yīng)變測(cè)試系統(tǒng)中,信號(hào)流程如圖1所示。應(yīng)變片輸出的信號(hào)經(jīng)電橋、放大器后得到較強(qiáng)應(yīng)變信號(hào),經(jīng)過濾波及模數(shù)轉(zhuǎn)換后得到數(shù)字信號(hào)。在應(yīng)變測(cè)試現(xiàn)場,采樣點(diǎn)分布廣,電橋與放大器間距離遠(yuǎn),需要接入較長引線,電橋輸出的微伏級(jí)信號(hào)在傳輸中容易引入各種干擾。應(yīng)變信號(hào)的頻譜范圍較寬,如測(cè)試橋梁應(yīng)力時(shí)為赫茲級(jí),測(cè)試高速發(fā)動(dòng)機(jī)應(yīng)力時(shí)為幾千赫茲級(jí)。干擾信號(hào)中既有來自于電網(wǎng)的50 Hz工頻干擾、廣播電視信號(hào),也有電子設(shè)備發(fā)出的上千赫茲高頻干擾,如在汽車應(yīng)力測(cè)試時(shí),常受到火花塞發(fā)出的點(diǎn)火脈沖干擾。以工頻干擾為例,對(duì)于信號(hào)頻譜小于50 Hz的測(cè)試場合,可以選擇濾波頻率小于50 Hz的低通濾波,對(duì)于頻譜大于50 Hz的場合可以選擇低通頻率大于50 Hz的帶通濾波器,對(duì)于頻譜包含50 Hz的場合可以選擇50 Hz陷波器。因此需要根據(jù)測(cè)量現(xiàn)場改變?yōu)V波頻率,以達(dá)到最佳濾波效果。如果采用濾波頻率可變的模擬濾波器,其結(jié)構(gòu)較復(fù)雜且精度難以保證,應(yīng)變力測(cè)試系統(tǒng)中需要采集的通道數(shù)往往多達(dá)幾十個(gè),增加了濾波器數(shù)量。據(jù)此,本文介紹基于FPGA的可編程數(shù)字濾波器,采用時(shí)分復(fù)用二階基本節(jié)的工作方式實(shí)現(xiàn)高階多通道濾波。具有如下性能:32處理通道;16 bit數(shù)據(jù)寬度;200 kb/s處理速度;16階IIR型濾波;濾波頻率與濾波器模型可編程。本濾波器很好地解決了應(yīng)變測(cè)試系統(tǒng)中的濾波問題。
1 IIR濾波器的工作原理及結(jié)構(gòu)
無限長單位沖擊響應(yīng)(IIR)濾波器有多種結(jié)構(gòu)形式,其中級(jí)聯(lián)型是較易于在硬件上實(shí)現(xiàn)的,其數(shù)學(xué)表達(dá)式為:
由式(1)可知,濾波器的H(z)完全分解成實(shí)系數(shù)的二階因子的形式[1],級(jí)聯(lián)的階數(shù)視具體情況而定,如八階濾波器由4節(jié)二階基本節(jié)串聯(lián)而成。一個(gè)二階基本節(jié)的信號(hào)流圖如圖2所示,結(jié)構(gòu)圖如圖3所示。
為了實(shí)現(xiàn)高階多通道濾波器,通過構(gòu)造一個(gè)二階基本節(jié)運(yùn)算模塊,并對(duì)其進(jìn)行時(shí)分復(fù)用,把當(dāng)前數(shù)據(jù)的運(yùn)算輸出值作為下次運(yùn)算的輸入值進(jìn)行多次運(yùn)算,即可得到高階濾波結(jié)果。把當(dāng)前通道的數(shù)據(jù)保存起來再進(jìn)行下一通道數(shù)據(jù)的運(yùn)算,即可實(shí)現(xiàn)多通道的數(shù)據(jù)濾波。
2 濾波器的設(shè)計(jì)及實(shí)現(xiàn)
采用Altera公司的Cyclone III系列FPGA芯片EP3C16Q208作為硬件平臺(tái),采用EDA設(shè)計(jì)軟件QuartusⅡ,與Matlab軟件中的Filter Design 濾波器設(shè)計(jì)軟件聯(lián)合進(jìn)行可編程濾波器的設(shè)計(jì)[2]。EP3C16Q208芯片具有豐富的邏輯單元、高速存儲(chǔ)器、乘法器、鎖相環(huán)等硬件資源[3]。邏輯單元用于構(gòu)造濾波器中的加法器及控制邏輯;存儲(chǔ)器組織成雙口RAM及FIFO,用于存儲(chǔ)濾波器系數(shù)及運(yùn)算結(jié)果;采用多個(gè)18位乘法器構(gòu)造64位乘法器,精度接近雙精度浮點(diǎn)型運(yùn)算,充分利用了片上資源。整個(gè)設(shè)計(jì)外圍電路僅需電源電路、晶振電路及配置電路,結(jié)構(gòu)簡潔且工作可靠。
2.1 濾波器的設(shè)計(jì)方法
濾波器的設(shè)計(jì)使用Matlab軟件的Filter Design 濾波器設(shè)計(jì)軟件。該軟件界面直觀,操作方便。首先指定濾波器類型,如低通、高通、帶通、帶阻等常用的濾波形式,指定濾波器模型,如巴特沃思型、切貝雪夫型、橢圓型等形式。接著輸入濾波器的采樣頻率、濾波頻率、階數(shù)等參數(shù)即可生成濾波器。軟件還可以對(duì)濾波器進(jìn)行各種分析,如幅頻特性、相頻特性等。通過分析這些特性再調(diào)整濾波器參數(shù),直至得到滿意的濾波效果為止。最后導(dǎo)出濾波器的二階基本節(jié)系數(shù),轉(zhuǎn)換成二進(jìn)制格式后通過系數(shù)端口輸入到本文介紹的濾波器中,即可獲得期望的濾波效果[4]。
在應(yīng)變測(cè)試系統(tǒng)中,大多數(shù)測(cè)試場合存在50 Hz工頻干擾,因此需要陷波器將其濾除。對(duì)于其他頻率范圍的干擾,可以用帶通濾波器限定低頻與高頻的范圍,盡量把干擾信號(hào)濾除。根據(jù)干擾信號(hào)的特點(diǎn),可以采用一個(gè)50 Hz陷波器串聯(lián)一個(gè)14階帶通濾波器的方案。在應(yīng)變測(cè)試中,阻帶衰減率是濾波器最重要的指標(biāo),因此選擇橢圓濾波器。由于只需要對(duì)50 Hz陷波,因此選擇單點(diǎn)陷波器。如果50 Hz的諧波分量較大,還可以采用梳狀濾波器。為了精確選擇濾波頻率,可以把濾波頻率間隔選得很小,然后把各種濾波頻率的濾波器系數(shù)導(dǎo)入到數(shù)據(jù)庫中供用戶根據(jù)實(shí)際情況調(diào)用[5]。
2.2 濾波器的功能結(jié)構(gòu)
濾波器的功能結(jié)構(gòu)圖如圖4所示。濾波器包括3個(gè)端口,分別是位寬為32 bit的系數(shù)輸入端口、16 bit的濾波輸入端口和16 bit的濾波輸出端口。系數(shù)輸入端口用于輸入濾波器系數(shù)。數(shù)據(jù)從輸入端口進(jìn)入濾波器,把32個(gè)通道的數(shù)據(jù)組織成一幀,以幀為單位進(jìn)行多通道數(shù)據(jù)輸入。數(shù)據(jù)輸出端口輸出濾波結(jié)果,同樣是以幀為單位輸出數(shù)據(jù)。
濾波器內(nèi)部結(jié)構(gòu)包括輸入模塊、運(yùn)算模塊、系數(shù)模塊、主控模塊、輸出模塊5個(gè)功能模塊。濾波器以運(yùn)算模塊為核心,輸入模塊提供輸入數(shù)據(jù),系數(shù)模塊提供乘法器的系數(shù),輸出模塊輸出運(yùn)算結(jié)果,主控模塊控制其他模塊協(xié)同運(yùn)作。輸入模塊包括輸入FIFO及輸入開關(guān),輸入FIFO用于暫存輸入的一幀數(shù)據(jù),輸入開關(guān)用于切換運(yùn)算模塊的數(shù)據(jù)來源,數(shù)據(jù)來源包括FIFO中的數(shù)據(jù)及運(yùn)算模塊的輸出。運(yùn)算模塊包括加法器、乘法器及存儲(chǔ)單元RAM。其中乘法器和RAM都有地址,根據(jù)給定地址決定當(dāng)前運(yùn)算模塊進(jìn)行某一通道某一階段的運(yùn)算。本文所介紹的32通道16階濾波器中,其地址范圍是A0~A255。系數(shù)模塊包括4個(gè)系數(shù)寄存器及5個(gè)系數(shù)存儲(chǔ)單元RAM α1k、RAM α2k、RAM β1k、RAM β2k、RAM Ak。這些RAM是雙口模式的,寫入系數(shù)與讀出系數(shù)獨(dú)立操作。在寫入系數(shù)時(shí),系數(shù)寄存器用于保存系數(shù)α2k、β1k、β2k、Ak,再和系數(shù)端口的系數(shù)α1k同時(shí)寫入系數(shù)RAM。輸出模塊包括輸出開關(guān)及輸出FIFO。運(yùn)算模塊的輸出包括中間運(yùn)算數(shù)據(jù)及最終濾波數(shù)據(jù),輸出開關(guān)切換上述兩種數(shù)據(jù)。輸出FIFO存儲(chǔ)32個(gè)通道的輸出數(shù)據(jù)。主控模塊控制各個(gè)模塊工作,在收到開始信號(hào)后,分別輸出讀地址、輸入開關(guān)信號(hào)、輸出開關(guān)信號(hào)及濾波完成信號(hào)。
2.3 濾波器的工作過程
濾波器工作過程包括輸入系數(shù)階段及運(yùn)算階段。在輸入系數(shù)階段,通過地址和系數(shù)兩個(gè)端口把濾波器的系數(shù)寫入到系數(shù)RAM。地址端口首先給出雙口RAM的輸入口地址A0。系數(shù)端口依次送出α10、α20、β20、β10,模塊中的寄存器依次傳遞系數(shù),此時(shí)各個(gè)系數(shù)分別送到對(duì)應(yīng)雙口RAM的輸入口數(shù)據(jù)端,在寫信號(hào)的作用下把系數(shù)存儲(chǔ)到相應(yīng)單元。按同樣的方式寫入地址為A1的系數(shù),直至寫入到A255的系數(shù)。
輸入系數(shù)完成后,濾波器進(jìn)入運(yùn)算階段。輸入的濾波數(shù)據(jù)以幀為單位,32個(gè)通道的數(shù)據(jù)組織成一幀傳送到輸入FIFO中。在開始信號(hào)的觸發(fā)下,濾波器開始處理數(shù)據(jù),完成后輸出完成信號(hào)通知外部器件,外部器件即可從輸出FIFO中讀出濾波結(jié)果。
一幀數(shù)據(jù)的處理過程可分為以下幾個(gè)步驟:
(1)外部把濾波數(shù)據(jù)傳送到輸入FIFO中,然后給出開始信號(hào),濾波器開始處理數(shù)據(jù);
(2)主控模塊切換輸入開關(guān),選擇輸入FIFO中通道0的數(shù)據(jù)作為運(yùn)算模塊的輸入,同時(shí)選擇地址A0的系數(shù)送給運(yùn)算模塊,選擇運(yùn)算模塊內(nèi)部RAM中相應(yīng)的數(shù)據(jù);
(3)在一個(gè)時(shí)鐘脈沖的作用下,運(yùn)算模塊完成一次二階運(yùn)算,并輸出當(dāng)前運(yùn)算結(jié)果;
(4)主控模塊切換輸入開關(guān)和輸出開關(guān),把運(yùn)算結(jié)果傳送到運(yùn)算模塊輸入端進(jìn)行下一次二階運(yùn)算。同樣的方式共進(jìn)行8次運(yùn)算,完成16階濾波運(yùn)算;
(5)主控模塊切換輸出開關(guān),把運(yùn)算結(jié)果傳送到輸出FIFO中,至此完成通道0的濾波;
(6)以同樣的方式完成32通道數(shù)據(jù)濾波,最后輸出完成信號(hào),至此完成一幀數(shù)據(jù)的濾波。
濾波器能夠以流水線方式高效運(yùn)轉(zhuǎn),即在輸出當(dāng)前幀的濾波結(jié)果時(shí)可以輸入下一幀的數(shù)據(jù),實(shí)現(xiàn)了連續(xù)濾波。為了達(dá)到200 kb/s的數(shù)據(jù)吞吐率,所需時(shí)鐘脈沖頻率為:
200 kb/s×32×8=51.2 MHz(2)
加上初始化時(shí)鐘總頻率約為55 MHz,低于EP3C16-Q208的工作頻率,濾波器能夠穩(wěn)定工作。
3 應(yīng)用與仿真
針對(duì)應(yīng)變測(cè)試系統(tǒng)的特點(diǎn),采用二階50 Hz陷波器串聯(lián)14階帶通濾波器的方式組成濾波器。陷波器參數(shù)如表1所示,帶通濾波器參數(shù)如表2所示。
在Filter Design軟件中輸入表中參數(shù)后生成濾波器并進(jìn)行幅頻相應(yīng)分析,陷波器幅頻響應(yīng)如圖5所示,帶通濾波器幅頻響應(yīng)如圖6所示。
由分析結(jié)果可知,帶通濾波器獲得-80 dB的阻帶衰減,實(shí)際的濾波效果如圖7所示。Vi為輸入波形,是50 Hz、500 Hz、5 kHz正弦信號(hào)的疊加。將此波形模數(shù)轉(zhuǎn)換后進(jìn)行50 Hz陷波及低頻為1 kHz高頻為10 kHz的帶通濾波后,再將數(shù)字信號(hào)進(jìn)行數(shù)模轉(zhuǎn)換后得到輸出信號(hào)Vout。輸入信號(hào)中50 Hz與500 Hz信號(hào)被過濾,故輸出信號(hào)是頻率為5 kHz的正弦波。
本文介紹的多通道可編程濾波器,應(yīng)用在自主研發(fā)的應(yīng)變測(cè)試系統(tǒng)中,取得了較好的濾波效果。濾波頻率可變的特點(diǎn)使得能夠選擇精確的濾波頻率。濾波器只使用一片F(xiàn)PGA及少量外圍元件,減小了硬件電路規(guī)模,降低了功耗,提高了可靠性。該濾波器可根據(jù)具體要求設(shè)計(jì)通道數(shù)、運(yùn)算精度、運(yùn)算速度等指標(biāo)后應(yīng)用到其他數(shù)據(jù)采集系統(tǒng)中。濾波器的目標(biāo)文件可以下載到FPGA芯片上,使FPGA成為硬件數(shù)字濾波器,也可以把它嵌入到一個(gè)更大的系統(tǒng)中作為其中一個(gè)功能模塊,具有很大的設(shè)計(jì)靈活性。由于該濾波器是采用大規(guī)模FPGA芯片設(shè)計(jì),而且輸入輸出端口采用串行方式,需要外部系統(tǒng)也有相應(yīng)接口,對(duì)于通道數(shù)較少的應(yīng)用場合,成本較高。
參考文獻(xiàn)
[1] 程佩青.數(shù)字信號(hào)處理教程(第2版)[M].北京:清華大學(xué)出版社,2001.
[2] 梁二虎,劉文怡,張文棟.基于FPGA的IIR數(shù)字濾波器硬件模塊的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,24(2):218-219,198.
[3] 王誠,吳繼華.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2005.
[4] 倪向東.基于FPGA的四階IIR數(shù)字濾波器[J].電子技術(shù)應(yīng)用,2003,29(12):64-66,69.
[5] 潘秀琴,李元,盧勇,等.基于FPGA的程控濾波器設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(4-2):124-126.