2.2 誤碼脈沖的濾除
2.2.1 濾除編碼器抖動的原理
采用二倍頻技術(shù)濾除抖動脈沖。所謂二倍頻技術(shù)即對A相或者B相每個脈沖的上升沿和下降沿分別計數(shù)。光電編碼器經(jīng)過二倍頻后正常輸出波形如圖3所示,A相脈沖O→1跳變時,B為O,則編碼器正轉(zhuǎn);B為1,則編碼器反轉(zhuǎn)。A相脈沖1→O跳變時,B為1,則編碼器正轉(zhuǎn);B為0,則編碼器反轉(zhuǎn)。編碼器正常輸出波形時,A、B兩相交替跳變,如果A相發(fā)生跳變后,B相沒有發(fā)生跳變A相又發(fā)生跳變,此時認為是干擾脈沖,反之同樣視為干擾脈沖。
分析圖4,對A相的跳變沿進行二倍頻計數(shù),B相的高低電平用來判斷編碼器的正反轉(zhuǎn)。B相邊沿的抖動脈沖對二倍頻計數(shù)沒有影響,如圖4(b)所示。分析圖4(a),A相邊緣的抖動認為是干擾脈沖被濾除掉。圖4(c),圖4(d)中的a,b標(biāo)記的位置是編碼器物理地址,如圖4(d)標(biāo)記的a,b表示編碼器在此處反復(fù)振動。圖4(c)、圖4(d)(1)、(2)標(biāo)記處跳變沿視為抖動脈沖,應(yīng)濾除,A相的正轉(zhuǎn)脈沖數(shù)據(jù)數(shù)和反轉(zhuǎn)脈沖數(shù)據(jù)數(shù)相減后就是A相實際二倍頻后的脈沖數(shù)據(jù)。
2.2.2 FPGA濾除編碼器抖動及仿真結(jié)果
根據(jù)以上分析,本文采用FPGA濾除增量型光電編碼器輸出抖動脈沖。編譯環(huán)境采用QuartusⅡ8.O。在FPGA中使用圖形和語言結(jié)合的方法設(shè)計邏輯模塊。內(nèi)部的邏輯子模塊采用Verilog語言來實現(xiàn)。頂層模塊的結(jié)構(gòu)圖如圖5所示。A和B輸入引腳連接增量型編碼器A相和B相信號。Acount為16位的數(shù)據(jù)寄存器,輸出當(dāng)前編碼器的位置。頂層設(shè)計中包含兩個模塊,一個是根據(jù)編碼器的B相跳變沿記錄來濾除編碼器A相抖動脈沖的BlockA模塊,該模塊根據(jù)濾除后的A相脈沖數(shù)據(jù)個數(shù)并記錄脈沖數(shù)據(jù)。Verilog的主要程序如下:
另一個模塊BlockB主要完成的功能是濾除編碼器B相的抖動脈沖。根據(jù)分析濾除編碼器抖動的原理,ENA引腳為BlockA模塊的輸出引腳,當(dāng)A相輸入引腳有跳變時ENA為1,A相引腳有連續(xù)的跳變或者接下來B相有跳變時ENA為0。ENB為編碼器B相跳變使能引腳,當(dāng)ENA為1時如果B相有跳變ENB為1,當(dāng)ENA為1時如果B相有連續(xù)跳變ENB為0。主要程序如下:
以圖4(a)的編碼器抖動輸出仿真為例,仿真效果如圖6所示。從圖中分析,A相輸出7個脈沖,應(yīng)該輸出3個脈沖,二倍頻后是14個脈沖,應(yīng)該輸出6個脈沖,經(jīng)過濾除后脈沖計數(shù)器數(shù)為6個。A相的抖動脈沖得到有效的濾除。
3 結(jié)語
現(xiàn)場調(diào)試結(jié)果證明,該算法可以消除工業(yè)現(xiàn)場出現(xiàn)的干擾和抖動現(xiàn)象,能夠準(zhǔn)確地記錄脈沖數(shù)據(jù)。此濾波方法可以采用軟件濾波,但是軟件濾波需要的引腳較多,采用兩個中斷引腳響應(yīng)A相的上升沿和下降沿,浪費CPU資源。采用FPGA實現(xiàn)編碼器的濾波,設(shè)計方便,改動靈活。
FPGA的應(yīng)用領(lǐng)域包羅萬象,我們今天來看看在音樂科技領(lǐng)域及醫(yī)療照護的智能巧思。
關(guān)鍵字: FPGA 科技領(lǐng)域 智能強大的產(chǎn)品可降低信號噪音并提高分辨率與動態(tài)
關(guān)鍵字: Spectrum儀器 數(shù)字化儀 FPGA本篇是FPGA之旅設(shè)計的第十二例,在前面的例程中,完成了DS18B20溫度傳感器數(shù)據(jù)的采集,并且將采集到的數(shù)據(jù)顯示在數(shù)碼管上。由于本例將對溫濕度傳感器DHT11進行采集,而且兩者的數(shù)據(jù)采集過程類似,所以可以參考一下前面的...
關(guān)鍵字: FPGA DS18B20溫度傳感器第八例啦,本例將介紹如何通過FPGA采集DS18B20傳感器的溫度值。
關(guān)鍵字: FPGA DS18B20傳感器