兩種基于FPGA的軟件濾波方法
1. 3延時濾波程序仿真
本文引用地址:http://www.104case.com/article/278137.htm分別將開關信號din設置成理想信號和抖動信號,利用QuartusⅡ8. 0軟件進行仿真,圖3和圖4分別為理想信號和抖動信號的延時濾波仿真波形圖。

圖3理想開關信號延時濾波仿真波形

圖4抖動開關信號延時濾波仿真波形
圖中clk為采樣時鐘,glrn為復位信號,din為開關輸入信號,dout為延時濾波輸出信號。從圖3可以看出,從開關信號發生變化到輸出發生變化的時間延時為2 ms,從圖4中可以看出,此延時濾波程序有效消除了扭子開關的抖動干擾,驗證了其理論可行性。
1. 4延時濾波程序實際驗證
為了驗證此延時濾波程序的實際濾波效果,將其下載到Xilinx公司的Spartan3系列FPGA芯片XC3S400中,用示波器多次測量經過濾波后的開關信號,得到圖5所示的輸出信號波形。圖5中,橫坐標表示時間,每格代表10μs,縱坐標表示電壓,每格表示1 V.從圖5可以看出,經過濾波后的開關信號不再有抖動現象,此延時濾波程序的實際可靠性得到驗證。

圖5延時濾波后的輸出信號波形
1. 5延時濾波程序資源占用率
在電子電路的設計中,FPGA的資源占用率是我們應該考慮的一個重要問題。如果FPGA的資源占用率太大,會加重FPGA的負擔,影響整個電路的運行速度。表1為延時濾波程序在XC3S400芯片中的資源占用情況。

表1延時濾波程序的資源占用情況
1. 6延時濾波的特點
延時濾波比較適合對脈沖寬度已知的干擾信號進行濾波,這樣可以更準確地確定延時時間,既不會因為延時時間太短而導致濾波不理想,又不會因為延時時間過長而導致資源浪費。而且,延時程序不僅可以有效地消除開關類信號的抖動,還可以濾去干擾、噪音等其他尖峰波,抗干擾強,可靠性高。
如果電路中存在多路輸入信號時,當檢測到任意一路輸入信號狀態發生變化時即執行延時程序,在執行延時程序的過程中將檢測不到其他輸入狀態的變化,所以能夠識別的動作間隔不可能小于延時時間T,特別是當多路輸入信號的狀態集中在短時間內變化時,電路的性能會嚴重下降。并且,由于頻繁執行延時程序,會影響系統的效率和實時性。
2判決濾波
判決濾波是一種基于概率統計的濾波方法。在采樣時鐘CLK的控制下,每隔時間t對開關信號進行一次采樣,并對時間T0內采集到的n個采樣值進行判斷( n = T0 /t),如果這n個采樣值中高電平‘1’的個數百分比大于X,則輸出高電平;相反,如果低電平‘0’的個數百分比大于X,則輸出低電平。
采用一個n位寄存器來實現判決濾波,寄存器各個位的值依次為采樣得到的n個采樣值。寄存器的模型如圖6所示。

圖6寄存器模型
在圖6中,n個格子分別代表寄存器的n個位,寄存器左側的數據為已經處理過的數據,寄存器內的n個數據為正在處理的數據,寄存器右側的數據為即將處理的數據。每過一個采樣時間間隔t,數據依次向高位滑動一位,最低位賦值為輸入信號當前的狀態值。
如上述過程,寄存器內的數據在不斷地更新,數據每滑動一次,即對n個采樣值進行一次判斷,從而達到濾波的目的。由于干擾脈沖的隨機性,采到高電平和低電平的概率是相等的,所以,作為判斷依據的百分比X不能小于50%.在實際應用中,為了使濾波更可靠,X的取值一般都大于50%.
2. 1判決濾波程序設計
本設計采用一個9位寄存器( n = 9),每次判斷時只要‘1’的個數大于或等于5,則濾波輸出‘1’,否則輸出‘0’( X = 5 /9)。圖7為判決濾波程序的流程圖。

圖7判決濾波程序流程圖
濾波器相關文章:濾波器原理
fpga相關文章:fpga是什么
濾波器相關文章:濾波器原理
電源濾波器相關文章:電源濾波器原理
塵埃粒子計數器相關文章:塵埃粒子計數器原理 脈沖點火器相關文章:脈沖點火器原理 數字濾波器相關文章:數字濾波器原理
評論