增量型光電編碼器抗抖動(dòng)二倍頻電路的設計
2.2.2 FPGA濾除編碼器抖動(dòng)及仿真結果
根據以上分析,本文采用FPGA濾除增量型光電編碼器輸出抖動(dòng)脈沖。編譯環(huán)境采用QuartusⅡ8.O。在FPGA中使用圖形和語(yǔ)言結合的方法設計邏輯模塊。內部的邏輯子模塊采用Verilog語(yǔ)言來(lái)實(shí)現。頂層模塊的結構圖如圖5所示。A和B輸入引腳連接增量型編碼器A相和B相信號。Acount為16位的數據寄存器,輸出當前編碼器的位置。頂層設計中包含兩個(gè)模塊,一個(gè)是根據編碼器的B相跳變沿記錄來(lái)濾除編碼器A相抖動(dòng)脈沖的BlockA模塊,該模塊根據濾除后的A相脈沖數據個(gè)數并記錄脈沖數據。Verilog的主要程序如下:
另一個(gè)模塊BlockB主要完成的功能是濾除編碼器B相的抖動(dòng)脈沖。根據分析濾除編碼器抖動(dòng)的原理,ENA引腳為BlockA模塊的輸出引腳,當A相輸入引腳有跳變時(shí)ENA為1,A相引腳有連續的跳變或者接下來(lái)B相有跳變時(shí)ENA為0。ENB為編碼器B相跳變使能引腳,當ENA為1時(shí)如果B相有跳變ENB為1,當ENA為1時(shí)如果B相有連續跳變ENB為0。主要程序如下:
以圖4(a)的編碼器抖動(dòng)輸出仿真為例,仿真效果如圖6所示。從圖中分析,A相輸出7個(gè)脈沖,應該輸出3個(gè)脈沖,二倍頻后是14個(gè)脈沖,應該輸出6個(gè)脈沖,經(jīng)過(guò)濾除后脈沖計數器數為6個(gè)。A相的抖動(dòng)脈沖得到有效的濾除。
3 結語(yǔ)
現場(chǎng)調試結果證明,該算法可以消除工業(yè)現場(chǎng)出現的干擾和抖動(dòng)現象,能夠準確地記錄脈沖數據。此濾波方法可以采用軟件濾波,但是軟件濾波需要的引腳較多,采用兩個(gè)中斷引腳響應A相的上升沿和下降沿,浪費CPU資源。采用FPGA實(shí)現編碼器的濾波,設計方便,改動(dòng)靈活。
評論