發布日期:2022-10-17 點擊率:49
隨著數字電子技術的發展,數字電路已由早期的分立元件逐漸發展成集成電路,對電路設計的要求越來越高。尤其是可編程邏輯器件的出現,使得以硬件為載體、以計算機軟件為開發環境的現代數字系統的設計方法日趨成熟。可編程邏輯器件設計靈活、功能強大、可在線修改、效率高等優點深受廣大電子設計人 員青睞。目前,大多數現場可編程邏輯陣列( FPGA) 芯片是電壓敏感型芯片,基于可重構CMOS-SRAM 單元結構,數據具有易失性,工作在低電壓狀態,易受干擾,尤其在工控、軍用場合,外界電磁環境惡劣,電路耦合、空間輻射的雜波脈沖均會對FPGA 工作的穩定性產生影響。
干擾脈沖和毛刺信號是影響FPGA 穩定工作的主要因素,為了保證輸入信號每變化一次,電路只做出一次正確的響應,必須對輸入信號進行濾波處理。要實現信號濾波可以采用硬件濾波和軟件濾波兩 種方法。與硬件濾波相比,軟件濾波不需要硬件電路的支持,從而可以減少元器件的使用,降低成本,更重要的是軟件濾波更易于修改,所以常采用軟件濾波的方法 來實現電路中的信號濾波問題。通過VHDL 語言編程實現信號濾波功能,介紹了延時濾波法和判決濾波法,并通過實驗證明了上述兩種濾波方法的可靠性。
1 延時濾波
延時濾波法的濾波原理是對輸入信號的脈沖寬度進行鑒別,對那些與真實信號的寬度相差很大的干擾信號進行有效的抑制。具體的實現流程為在檢測到輸入信號的 狀態發生變化后,延時一段時間T,脈沖寬度小于延時時間T 的輸入信號被認為是干擾信號,將其濾除; 脈沖寬度大于延時時間T 的輸入信號則被認為是真實信號,將其輸出。針對不同脈沖寬度的干擾信號,可以通過設置不同的參數來實現相應的信號延時,從而達到有效濾波的目的。
1. 1 延時時間T 的確定
延時時間T 取決干擾信號的脈沖寬度T’。延時時間T 太短( T < T’) ,濾波不完整,脈沖寬度大于T 的干擾信號仍然會造成電路的誤動作; 延時時間T 太長( T>>T’) ,會造成資源的浪費,降低電路的工作效率。
這里以某型號的扭子開關輸入信號為例來介紹如何確定延時時間T。由于扭子開關的機械觸點存在彈性作用,當撥動開關時,都不可避免地要在觸點閉合及斷開的 瞬間產生一連串的抖動。為了能夠更準確地估測撥動開關時產生的干擾脈沖寬度T‘,可以用示波器對開關信號進行多次測量,經測量發現這種扭子開關信號的抖動 時間不會超過1. 5ms。圖1 為沒有經過濾波處理的開關信號波形。
圖1 中,橫坐標表示時間,每格代表50 μs,縱坐標表示電壓,每格表示1 V。從圖中可以明顯看出,在開關信號達到穩定狀態之前,有一連串的抖動,抖動時間不到1. 5 ms。這里根據實際情況,確定延時時間T = 2 ms。
1. 2 延時濾波程序設計
延時濾波程序采用一個計數器來實現,計數器的模值N 取決于延時時間T 和采樣時鐘CLK 的周期TCLK。若計數器的初始值為0 時,則N = T /TCLK -1。圖2 為編寫延時濾波程序的流程圖。
圖1 未經過濾波處理的開關信號
圖2 延遲濾波程序流程圖
當檢測到開關信號的狀態發生變化時( 這里以由‘0’變到‘1’為例) ,計數器開始計時,當計數器的計數值計到N 時,如果開關信號仍保持為變化之后的狀態‘1’,則輸出‘1’,否則,認為這是一個干擾脈沖,將其濾除。
當采樣時鐘的頻率為5 kHz 時,TCLK = 0. 2 ms,要實現2 ms 的延時時間,若計數器初始值為0,那么計數器模值N = 9。具體的VHDL 語言程序進程如下:
1. 3 延時濾波程序仿真
分別將開關信號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 判決濾波程序流程圖
主要的程序進程如下:
2. 2 判決濾波程序仿真
同樣以開關信號為例,在QuartusⅡ8. 0 軟件中仿真來驗證結果。圖8 和圖9 分別為對理想開關信號和抖動開關信號進行判決濾波的仿真波形圖。
圖8 理想開關信號判決濾波仿真波形
圖9 抖動開關信號判決濾波仿真波形
仿真結果顯示,此判決濾波程序也可以實現濾波目的。對比圖4 和圖9 可以發現,對相同的抖動脈沖進行濾波,雖然兩種濾波方法都能有效濾除抖動,但是濾波效果是不同的,判決濾波的實時性比較好。
2. 3 判決濾波程序實際驗證
將此判決濾波程序同樣下載到XC3S400 芯片中去,用示波器多次測量,得到濾波后的開關輸出信號波形如圖10 所示。
圖10 判決濾波后的輸出信號波形
圖10 中,橫坐標表示時間,每格代表5 μs,縱坐標表示電壓,每格表示1 V。從圖中可以看出,開關信號中的抖動脈沖已被完全濾除,證明此判決濾波程序是實際可行的。
2. 4 判決濾波的特點
判決濾波既可以用來對開關信號這類抖動時間已知的信號進行濾波,也可以對脈寬很窄的干擾信號進行濾波。在高速電路中,系統晶振常常在幾十兆赫茲左右,時 鐘寬度單位達到納秒級,這可以使判決濾波的采樣時間間隔t 達到納秒級,即寄存器的各個位可在幾十納秒內重新賦值,從而達到消除窄脈沖干擾信號的目的。
2. 5 判決濾波程序的資源占用率
判決濾波程序在XC3S400 芯片中的資源占用情況如表2 所示。
表2 判決濾波程序的資源占用情況
對比表1 顯示的數據來看,兩種濾波方法的資源占用率都比較小,相對延時濾波程序而言判決濾波程序的資源占用率稍大一些。
3 結論
實驗證明延時濾波和判決濾波均能達到很好的濾波效果,在電路的設計過程中,可以根據干擾信號的類型選擇合適的濾波方法。在實時性要求不是很高、干擾信號 脈沖寬度可估測的電路中,可以采用延時濾波法,既節省資源又能有效濾除干擾信號; 在實時性要求比較高、運行速度比較快、干擾信號脈沖寬度很窄的電路中,可以采用判決濾波法,既能有效濾波又能保證電路的效率。
下一篇: PLC、DCS、FCS三大控
上一篇: 直流PTC熱敏電阻恒溫