《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的可編程濾波器的設(shè)計(jì)
基于FPGA的可編程濾波器的設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2012年第22期
吳其琦,韋文斌
(廣西工學(xué)院 電子信息與控制工程系,廣西 柳州545006)
摘要: 應(yīng)變測(cè)試系統(tǒng)中傳感器輸出信號(hào)非常微弱,傳感器與測(cè)量?jī)x連接線較長(zhǎng)容易引入干擾信號(hào),,且應(yīng)變儀應(yīng)用場(chǎng)地干擾信號(hào)不同。介紹了一種用FPGA實(shí)現(xiàn)的可編程IIR型濾波器,,該濾波器以二階基本節(jié)為核心,,通過(guò)改變二階基本節(jié)的系數(shù)來(lái)改變?yōu)V波器濾波模型及截止頻率。嵌入式計(jì)算機(jī)把系數(shù)寫(xiě)入濾波器實(shí)現(xiàn)低通,、高通,、帶通及帶阻濾波。該濾波器在應(yīng)變測(cè)量?jī)x器應(yīng)用上取得了很好效果,。
關(guān)鍵詞: FPGA 可編程濾波器 多通道 IIR
Abstract:
Key words :

摘  要: 應(yīng)變測(cè)試系統(tǒng)中傳感器輸出信號(hào)非常微弱,,傳感器與測(cè)量?jī)x連接線較長(zhǎng)容易引入干擾信號(hào),且應(yīng)變儀應(yīng)用場(chǎng)地干擾信號(hào)不同,。介紹了一種用FPGA實(shí)現(xiàn)的可編程IIR型濾波器,,該濾波器以二階基本節(jié)為核心,通過(guò)改變二階基本節(jié)的系數(shù)來(lái)改變?yōu)V波器濾波模型及截止頻率,。嵌入式計(jì)算機(jī)把系數(shù)寫(xiě)入濾波器實(shí)現(xiàn)低通,、高通、帶通及帶阻濾波,。該濾波器在應(yīng)變測(cè)量?jī)x器應(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)過(guò)濾波及模數(shù)轉(zhuǎn)換后得到數(shù)字信號(hào),。在應(yīng)變測(cè)試現(xiàn)場(chǎng),,采樣點(diǎn)分布廣,電橋與放大器間距離遠(yuǎn),,需要接入較長(zhǎng)引線,,電橋輸出的微伏級(jí)信號(hào)在傳輸中容易引入各種干擾,。應(yīng)變信號(hào)的頻譜范圍較寬,如測(cè)試橋梁應(yīng)力時(shí)為赫茲級(jí),,測(cè)試高速發(fā)動(dòng)機(jī)應(yīng)力時(shí)為幾千赫茲級(jí),。干擾信號(hào)中既有來(lái)自于電網(wǎng)的50 Hz工頻干擾、廣播電視信號(hào),,也有電子設(shè)備發(fā)出的上千赫茲高頻干擾,,如在汽車應(yīng)力測(cè)試時(shí),常受到火花塞發(fā)出的點(diǎn)火脈沖干擾,。以工頻干擾為例,,對(duì)于信號(hào)頻譜小于50 Hz的測(cè)試場(chǎng)合,可以選擇濾波頻率小于50 Hz的低通濾波,對(duì)于頻譜大于50 Hz的場(chǎng)合可以選擇低通頻率大于50 Hz的帶通濾波器,對(duì)于頻譜包含50 Hz的場(chǎng)合可以選擇50 Hz陷波器,。因此需要根據(jù)測(cè)量現(xiàn)場(chǎng)改變?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)中的濾波問(wèn)題,。

1 IIR濾波器的工作原理及結(jié)構(gòu)
    無(wú)限長(zhǎng)單位沖擊響應(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)高階多通道濾波器,,通過(guò)構(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ù)保存起來(lái)再進(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)簡(jiǎn)潔且工作可靠,。
2.1 濾波器的設(shè)計(jì)方法
    濾波器的設(shè)計(jì)使用Matlab軟件的Filter Design 濾波器設(shè)計(jì)軟件。該軟件界面直觀,,操作方便,。首先指定濾波器類型,如低通,、高通,、帶通、帶阻等常用的濾波形式,,指定濾波器模型,,如巴特沃思型、切貝雪夫型,、橢圓型等形式,。接著輸入濾波器的采樣頻率、濾波頻率,、階數(shù)等參數(shù)即可生成濾波器,。軟件還可以對(duì)濾波器進(jìn)行各種分析,如幅頻特性,、相頻特性等,。通過(guò)分析這些特性再調(diào)整濾波器參數(shù),直至得到滿意的濾波效果為止,。最后導(dǎo)出濾波器的二階基本節(jié)系數(shù),,轉(zhuǎn)換成二進(jìn)制格式后通過(guò)系數(shù)端口輸入到本文介紹的濾波器中,,即可獲得期望的濾波效果[4]。
    在應(yīng)變測(cè)試系統(tǒng)中,,大多數(shù)測(cè)試場(chǎng)合存在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ù)庫(kù)中供用戶根據(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及輸入開(kāi)關(guān),,輸入FIFO用于暫存輸入的一幀數(shù)據(jù),輸入開(kāi)關(guān)用于切換運(yùn)算模塊的數(shù)據(jù)來(lái)源,,數(shù)據(jù)來(lái)源包括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是雙口模式的,,寫(xiě)入系數(shù)與讀出系數(shù)獨(dú)立操作。在寫(xiě)入系數(shù)時(shí),,系數(shù)寄存器用于保存系數(shù)α2k,、β1k、β2k,、Ak,,再和系數(shù)端口的系數(shù)α1k同時(shí)寫(xiě)入系數(shù)RAM。輸出模塊包括輸出開(kāi)關(guān)及輸出FIFO,。運(yùn)算模塊的輸出包括中間運(yùn)算數(shù)據(jù)及最終濾波數(shù)據(jù),輸出開(kāi)關(guān)切換上述兩種數(shù)據(jù),。輸出FIFO存儲(chǔ)32個(gè)通道的輸出數(shù)據(jù),。主控模塊控制各個(gè)模塊工作,在收到開(kāi)始信號(hào)后,,分別輸出讀地址,、輸入開(kāi)關(guān)信號(hào)、輸出開(kāi)關(guān)信號(hào)及濾波完成信號(hào),。
2.3 濾波器的工作過(guò)程
    濾波器工作過(guò)程包括輸入系數(shù)階段及運(yùn)算階段,。在輸入系數(shù)階段,通過(guò)地址和系數(shù)兩個(gè)端口把濾波器的系數(shù)寫(xiě)入到系數(shù)RAM,。地址端口首先給出雙口RAM的輸入口地址A0,。系數(shù)端口依次送出α10、α20、β20,、β10,,模塊中的寄存器依次傳遞系數(shù),此時(shí)各個(gè)系數(shù)分別送到對(duì)應(yīng)雙口RAM的輸入口數(shù)據(jù)端,,在寫(xiě)信號(hào)的作用下把系數(shù)存儲(chǔ)到相應(yīng)單元,。按同樣的方式寫(xiě)入地址為A1的系數(shù),直至寫(xiě)入到A255的系數(shù),。
    輸入系數(shù)完成后,,濾波器進(jìn)入運(yùn)算階段。輸入的濾波數(shù)據(jù)以幀為單位,,32個(gè)通道的數(shù)據(jù)組織成一幀傳送到輸入FIFO中,。在開(kāi)始信號(hào)的觸發(fā)下,濾波器開(kāi)始處理數(shù)據(jù),,完成后輸出完成信號(hào)通知外部器件,,外部器件即可從輸出FIFO中讀出濾波結(jié)果。
    一幀數(shù)據(jù)的處理過(guò)程可分為以下幾個(gè)步驟:
    (1)外部把濾波數(shù)據(jù)傳送到輸入FIFO中,,然后給出開(kāi)始信號(hào),,濾波器開(kāi)始處理數(shù)據(jù);
    (2)主控模塊切換輸入開(kāi)關(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)主控模塊切換輸入開(kāi)關(guān)和輸出開(kāi)關(guān),,把運(yùn)算結(jié)果傳送到運(yùn)算模塊輸入端進(jìn)行下一次二階運(yùn)算。同樣的方式共進(jìn)行8次運(yùn)算,,完成16階濾波運(yùn)算,;
    (5)主控模塊切換輸出開(kāi)關(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)被過(guò)濾,,故輸出信號(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)用場(chǎ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] 王誠(chéng),,吳繼華.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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。