VHDL設(shè)計的消抖與濾波
在同一塊電路板上,由于信號線的走線過長而產(chǎn)生的高頻毛刺我們可以通過在接近輸入端串聯(lián)一個100歐左右的電阻來濾除。但是對于板外信號,或者板內(nèi)其他干擾造成較大的抖動時只好采用積分電路來濾波,即串一個電阻還要并一個電容接地。
同樣在VHDL中我們可以采用類似的辦法,對于小于觸發(fā)器建立時間的毛刺可以用時鐘打一下實現(xiàn)濾波。但對于開關(guān)或按鍵抖動等較大的干擾,我們可以采用延時比較法或積分法,或者二者并用。
比較法:這個方法很好理解,就是若干個時鐘周期讀取的數(shù)據(jù)相同時我們認為收到了一個穩(wěn)定的數(shù)據(jù),否則認為是過渡態(tài)。即采用若干位的移位寄存器,當寄存器是全'1'或全'0'時才開始讀數(shù)。這種方法的缺點是,當干擾脈沖較寬時我們必須等比地擴大移位寄存器的比特,消耗較大資源。
積分法:用一個增減計數(shù)器,當輸入信號為'1'時計數(shù)器遞增計數(shù)直到計數(shù)器全'1'停止計數(shù)、否則計數(shù)器遞減計數(shù)直到全'0'停止計數(shù)。那么計數(shù)器的 MSB即為輸入信號的去抖信號。你也可以用時鐘再加上一個速度較慢的使能來對輸入信號計數(shù)。顯然計數(shù)器的位數(shù)要求與要去抖的抖動脈沖寬度的對數(shù)關(guān)系。當然也可以二者結(jié)合,前端用幾個比特的移位寄存器實現(xiàn)比較,比較結(jié)果作為計數(shù)使能來控制接下來的增減計數(shù)器的計數(shù)。
評論