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