摘 要: 應(yīng)變測試系統(tǒng)中傳感器輸出信號非常微弱,傳感器與測量儀連接線較長容易引入干擾信號,,且應(yīng)變儀應(yīng)用場地干擾信號不同,。介紹了一種用FPGA實(shí)現(xiàn)的可編程IIR型濾波器,該濾波器以二階基本節(jié)為核心,,通過改變二階基本節(jié)的系數(shù)來改變?yōu)V波器濾波模型及截止頻率,。嵌入式計(jì)算機(jī)把系數(shù)寫入濾波器實(shí)現(xiàn)低通、高通,、帶通及帶阻濾波,。該濾波器在應(yīng)變測量儀器應(yīng)用上取得了很好效果。
關(guān)鍵詞: 可編程濾波器,;多通道,;FPGA,;IIR
在應(yīng)變測試系統(tǒng)中,信號流程如圖1所示,。應(yīng)變片輸出的信號經(jīng)電橋,、放大器后得到較強(qiáng)應(yīng)變信號,經(jīng)過濾波及模數(shù)轉(zhuǎn)換后得到數(shù)字信號,。在應(yīng)變測試現(xiàn)場,,采樣點(diǎn)分布廣,電橋與放大器間距離遠(yuǎn),,需要接入較長引線,,電橋輸出的微伏級信號在傳輸中容易引入各種干擾。應(yīng)變信號的頻譜范圍較寬,,如測試橋梁應(yīng)力時(shí)為赫茲級,,測試高速發(fā)動機(jī)應(yīng)力時(shí)為幾千赫茲級。干擾信號中既有來自于電網(wǎng)的50 Hz工頻干擾,、廣播電視信號,,也有電子設(shè)備發(fā)出的上千赫茲高頻干擾,如在汽車應(yīng)力測試時(shí),,常受到火花塞發(fā)出的點(diǎn)火脈沖干擾,。以工頻干擾為例,對于信號頻譜小于50 Hz的測試場合,可以選擇濾波頻率小于50 Hz的低通濾波,對于頻譜大于50 Hz的場合可以選擇低通頻率大于50 Hz的帶通濾波器,,對于頻譜包含50 Hz的場合可以選擇50 Hz陷波器,。因此需要根據(jù)測量現(xiàn)場改變?yōu)V波頻率,以達(dá)到最佳濾波效果,。如果采用濾波頻率可變的模擬濾波器,,其結(jié)構(gòu)較復(fù)雜且精度難以保證,應(yīng)變力測試系統(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)變測試系統(tǒng)中的濾波問題,。
1 IIR濾波器的工作原理及結(jié)構(gòu)
無限長單位沖擊響應(yīng)(IIR)濾波器有多種結(jié)構(gòu)形式,其中級聯(lián)型是較易于在硬件上實(shí)現(xiàn)的,其數(shù)學(xué)表達(dá)式為:
由式(1)可知,,濾波器的H(z)完全分解成實(shí)系數(shù)的二階因子的形式[1],,級聯(lián)的階數(shù)視具體情況而定,如八階濾波器由4節(jié)二階基本節(jié)串聯(lián)而成,。一個(gè)二階基本節(jié)的信號流圖如圖2所示,,結(jié)構(gòu)圖如圖3所示。
為了實(shí)現(xiàn)高階多通道濾波器,,通過構(gòu)造一個(gè)二階基本節(jié)運(yùn)算模塊,,并對其進(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作為硬件平臺,采用EDA設(shè)計(jì)軟件QuartusⅡ,,與Matlab軟件中的Filter Design 濾波器設(shè)計(jì)軟件聯(lián)合進(jìn)行可編程濾波器的設(shè)計(jì)[2],。EP3C16Q208芯片具有豐富的邏輯單元、高速存儲器,、乘法器,、鎖相環(huán)等硬件資源[3]。邏輯單元用于構(gòu)造濾波器中的加法器及控制邏輯,;存儲器組織成雙口RAM及FIFO,,用于存儲濾波器系數(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ù)即可生成濾波器,。軟件還可以對濾波器進(jìn)行各種分析,如幅頻特性,、相頻特性等,。通過分析這些特性再調(diào)整濾波器參數(shù),直至得到滿意的濾波效果為止,。最后導(dǎo)出濾波器的二階基本節(jié)系數(shù),,轉(zhuǎn)換成二進(jìn)制格式后通過系數(shù)端口輸入到本文介紹的濾波器中,即可獲得期望的濾波效果[4],。
在應(yīng)變測試系統(tǒng)中,,大多數(shù)測試場合存在50 Hz工頻干擾,因此需要陷波器將其濾除,。對于其他頻率范圍的干擾,,可以用帶通濾波器限定低頻與高頻的范圍,盡量把干擾信號濾除,。根據(jù)干擾信號的特點(diǎn),,可以采用一個(gè)50 Hz陷波器串聯(lián)一個(gè)14階帶通濾波器的方案。在應(yīng)變測試中,,阻帶衰減率是濾波器最重要的指標(biāo),,因此選擇橢圓濾波器。由于只需要對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)算模塊包括加法器,、乘法器及存儲單元RAM。其中乘法器和RAM都有地址,,根據(jù)給定地址決定當(dāng)前運(yùn)算模塊進(jìn)行某一通道某一階段的運(yùn)算,。本文所介紹的32通道16階濾波器中,其地址范圍是A0~A255,。系數(shù)模塊包括4個(gè)系數(shù)寄存器及5個(gè)系數(shù)存儲單元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存儲32個(gè)通道的輸出數(shù)據(jù),。主控模塊控制各個(gè)模塊工作,在收到開始信號后,,分別輸出讀地址,、輸入開關(guān)信號、輸出開關(guān)信號及濾波完成信號,。
2.3 濾波器的工作過程
濾波器工作過程包括輸入系數(shù)階段及運(yùn)算階段,。在輸入系數(shù)階段,通過地址和系數(shù)兩個(gè)端口把濾波器的系數(shù)寫入到系數(shù)RAM,。地址端口首先給出雙口RAM的輸入口地址A0,。系數(shù)端口依次送出α10、α20,、β20,、β10,模塊中的寄存器依次傳遞系數(shù),,此時(shí)各個(gè)系數(shù)分別送到對應(yīng)雙口RAM的輸入口數(shù)據(jù)端,,在寫信號的作用下把系數(shù)存儲到相應(yīng)單元。按同樣的方式寫入地址為A1的系數(shù),,直至寫入到A255的系數(shù),。
輸入系數(shù)完成后,濾波器進(jìn)入運(yùn)算階段,。輸入的濾波數(shù)據(jù)以幀為單位,,32個(gè)通道的數(shù)據(jù)組織成一幀傳送到輸入FIFO中。在開始信號的觸發(fā)下,,濾波器開始處理數(shù)據(jù),,完成后輸出完成信號通知外部器件,外部器件即可從輸出FIFO中讀出濾波結(jié)果,。
一幀數(shù)據(jù)的處理過程可分為以下幾個(gè)步驟:
(1)外部把濾波數(shù)據(jù)傳送到輸入FIFO中,,然后給出開始信號,濾波器開始處理數(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ù)濾波,最后輸出完成信號,,至此完成一幀數(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)用與仿真
針對應(yīng)變測試系統(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正弦信號的疊加。將此波形模數(shù)轉(zhuǎn)換后進(jìn)行50 Hz陷波及低頻為1 kHz高頻為10 kHz的帶通濾波后,,再將數(shù)字信號進(jìn)行數(shù)模轉(zhuǎn)換后得到輸出信號Vout,。輸入信號中50 Hz與500 Hz信號被過濾,故輸出信號是頻率為5 kHz的正弦波,。
本文介紹的多通道可編程濾波器,,應(yīng)用在自主研發(fā)的應(yīng)變測試系統(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)接口,對于通道數(shù)較少的應(yīng)用場合,,成本較高,。
參考文獻(xiàn)
[1] 程佩青.數(shù)字信號處理教程(第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.