兩種基于FPGA的軟件濾波方法
隨著(zhù)數字電子技術(shù)的發(fā)展,數字電路已由早期的分立元件逐漸發(fā)展成集成電路,對電路設計的要求越來(lái)越高。尤其是可編程邏輯器件的出現,使得以硬件為載體、以計算機軟件為開(kāi)發(fā)環(huán)境的現代數字系統的設計方法日趨成熟??删幊踢壿嬈骷O計靈活、功能強大、可在線(xiàn)修改、效率高等優(yōu)點(diǎn)深受廣大電子設計人員青睞。目前,大多數現場(chǎng)可編程邏輯陣列( FPGA)芯片是電壓敏感型芯片,基于可重構CMOS-SRAM單元結構,數據具有易失性,工作在低電壓狀態(tài),易受干擾,尤其在工控、軍用場(chǎng)合,外界電磁環(huán)境惡劣,電路耦合、空間輻射的雜波脈沖均會(huì )對FPGA工作的穩定性產(chǎn)生影響。
干擾脈沖和毛刺信號是影響FPGA穩定工作的主要因素,為了保證輸入信號每變化一次,電路只做出一次正確的響應,必須對輸入信號進(jìn)行濾波處理。要實(shí)現信號濾波可以采用硬件濾波和軟件濾波兩種方法。與硬件濾波相比,軟件濾波不需要硬件電路的支持,從而可以減少元器件的使用,降低成本,更重要的是軟件濾波更易于修改,所以常采用軟件濾波的方法來(lái)實(shí)現電路中的信號濾波問(wèn)題。通過(guò)VHDL語(yǔ)言編程實(shí)現信號濾波功能,介紹了延時(shí)濾波法和判決濾波法,并通過(guò)實(shí)驗證明了上述兩種濾波方法的可靠性。
1延時(shí)濾波
延時(shí)濾波法的濾波原理是對輸入信號的脈沖寬度進(jìn)行鑒別,對那些與真實(shí)信號的寬度相差很大的干擾信號進(jìn)行有效的抑制。具體的實(shí)現流程為在檢測到輸入信號的狀態(tài)發(fā)生變化后,延時(shí)一段時(shí)間T,脈沖寬度小于延時(shí)時(shí)間T的輸入信號被認為是干擾信號,將其濾除;脈沖寬度大于延時(shí)時(shí)間T的輸入信號則被認為是真實(shí)信號,將其輸出。針對不同脈沖寬度的干擾信號,可以通過(guò)設置不同的參數來(lái)實(shí)現相應的信號延時(shí),從而達到有效濾波的目的。
1. 1延時(shí)時(shí)間T的確定
延時(shí)時(shí)間T取決干擾信號的脈沖寬度T‘。延時(shí)時(shí)間T太短( T>T‘),會(huì )造成資源的浪費,降低電路的工作效率。
這里以某型號的扭子開(kāi)關(guān)輸入信號為例來(lái)介紹如何確定延時(shí)時(shí)間T.由于扭子開(kāi)關(guān)的機械觸點(diǎn)存在彈性作用,當撥動(dòng)開(kāi)關(guān)時(shí),都不可避免地要在觸點(diǎn)閉合及斷開(kāi)的瞬間產(chǎn)生一連串的抖動(dòng)。為了能夠更準確地估測撥動(dòng)開(kāi)關(guān)時(shí)產(chǎn)生的干擾脈沖寬度T',可以用示波器對開(kāi)關(guān)信號進(jìn)行多次測量,經(jīng)測量發(fā)現這種扭子開(kāi)關(guān)信號的抖動(dòng)時(shí)間不會(huì )超過(guò)1.5ms.圖1為沒(méi)有經(jīng)過(guò)濾波處理的開(kāi)關(guān)信號波形。
圖1中,橫坐標表示時(shí)間,每格代表50μs,縱坐標表示電壓,每格表示1 V.從圖中可以明顯看出,在開(kāi)關(guān)信號達到穩定狀態(tài)之前,有一連串的抖動(dòng),抖動(dòng)時(shí)間不到1. 5 ms.這里根據實(shí)際情況,確定延時(shí)時(shí)間T = 2 ms.
1. 2延時(shí)濾波程序設計
延時(shí)濾波程序采用一個(gè)計數器來(lái)實(shí)現,計數器的模值N取決于延時(shí)時(shí)間T和采樣時(shí)鐘CLK的周期TCLK.若計數器的初始值為0時(shí),則N = T /TCLK-1.圖2為編寫(xiě)延時(shí)濾波程序的流程圖。

圖1未經(jīng)過(guò)濾波處理的開(kāi)關(guān)信號

圖2延遲濾波程序流程圖
當檢測到開(kāi)關(guān)信號的狀態(tài)發(fā)生變化時(shí)(這里以由‘0’變到‘1’為例),計數器開(kāi)始計時(shí),當計數器的計數值計到N時(shí),如果開(kāi)關(guān)信號仍保持為變化之后的狀態(tài)‘1’,則輸出‘1’,否則,認為這是一個(gè)干擾脈沖,將其濾除。
當采樣時(shí)鐘的頻率為5 kHz時(shí),TCLK = 0. 2 ms,要實(shí)現2 ms的延時(shí)時(shí)間,若計數器初始值為0,那么計數器模值N = 9.具體的VHDL語(yǔ)言程序進(jìn)程如下:


濾波器相關(guān)文章:濾波器原理
fpga相關(guān)文章:fpga是什么
濾波器相關(guān)文章:濾波器原理
電源濾波器相關(guān)文章:電源濾波器原理
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理 脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理 數字濾波器相關(guān)文章:數字濾波器原理
評論