基于FPGA的增量型光電編碼器抗抖動二倍頻電路設計
2.2.1 濾除編碼器抖動的原理
采用二倍頻技術濾除抖動脈沖。所謂二倍頻技術即對A相或者B相每個脈沖的上升沿和下降沿分別計數。光電編碼器經過二倍頻后正常輸出波形如圖3所示,A相脈沖O→1跳變時,B為O,則編碼器正轉;B為1,則編碼器反轉。A相脈沖1→O跳變時,B為1,則編碼器正轉;B為0,則編碼器反轉。編碼器正常輸出波形時,A、B兩相交替跳變,如果A相發生跳變后,B相沒有發生跳變A相又發生跳變,此時認為是干擾脈沖,反之同樣視為干擾脈沖。本文引用地址:http://www.104case.com/article/191645.htm
分析圖4,對A相的跳變沿進行二倍頻計數,B相的高低電平用來判斷編碼器的正反轉。B相邊沿的抖動脈沖對二倍頻計數沒有影響,如圖4(b)所示。分析圖4(a),A相邊緣的抖動認為是干擾脈沖被濾除掉。圖4(c),圖4(d)中的a,b標記的位置是編碼器物理地址,如圖4(d)標記的a,b表示編碼器在此處反復振動。圖4(c)、圖4(d)(1)、(2)標記處跳變沿視為抖動脈沖,應濾除,A相的正轉脈沖數據數和反轉脈沖數據數相減后就是A相實際二倍頻后的脈沖數據。
2.2.2 FPGA濾除編碼器抖動及仿真結果
根據以上分析,本文采用FPGA濾除增量型光電編碼器輸出抖動脈沖。編譯環境采用QuartusⅡ8.O。在FPGA中使用圖形和語言結合的方法設計邏輯模塊。內部的邏輯子模塊采用Verilog語言來實現。頂層模塊的結構圖如圖5所示。A和B輸入引腳連接增量型編碼器A相和B相信號。Acount為16位的數據寄存器,輸出當前編碼器的位置。頂層設計中包含兩個模塊,一個是根據編碼器的B相跳變沿記錄來濾除編碼器A相抖動脈沖的BlockA模塊,該模塊根據濾除后的A相脈沖數據個數并記錄脈沖數據。Verilog的主要程序如下:
評論