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