基于FPGA的速度和位置測(cè)量板卡的設(shè)計(jì)與實(shí)現(xiàn)
摘要:針對(duì)增量式光電編碼器經(jīng)典速度測(cè)量算法M/T法低速采樣時(shí)間過長(zhǎng)和位置測(cè)量算法精度不高的問題,本文基于定采樣周期M/T法設(shè)計(jì)實(shí)現(xiàn)了速度和位置測(cè)量板卡。采用Xilinx公司的XC3S400 FPGA為核心控制芯片進(jìn)行設(shè)計(jì),并設(shè)計(jì)PC104總線接口實(shí)現(xiàn)板卡與控制器的數(shù)據(jù)通信。該板卡接收處理光電編碼器的反饋脈沖得到速度和位置參數(shù),將數(shù)據(jù)通過PC104總線接口傳遞給控制器。實(shí)驗(yàn)表明,板卡的最小采樣時(shí)間達(dá)到1ms,并且位置測(cè)量精度可達(dá)5×10-3。
本文引用地址:http://2s4d.com/article/201610/308996.htm增量式光電編碼器作為速度和位置傳感器被廣泛應(yīng)用于伺服系統(tǒng)。理論上,光電編碼器反饋脈沖的頻率對(duì)應(yīng)被測(cè)軸轉(zhuǎn)速,反饋脈沖個(gè)數(shù)的累加值對(duì)應(yīng)位置信息。經(jīng)典的速度測(cè)量方法有M法、T法和M/T法3種:其中M法通過計(jì)取固定時(shí)間間隔內(nèi)光電編碼器的反饋脈沖數(shù)計(jì)算當(dāng)前轉(zhuǎn)速,適用于高速場(chǎng)合;T法利用高頻脈沖測(cè)量相鄰反饋脈沖的時(shí)間間隔計(jì)算當(dāng)前轉(zhuǎn)速,適用于低速場(chǎng)合;M/T法不僅測(cè)量固定時(shí)間間隔內(nèi)反饋脈沖的增量值,而且計(jì)數(shù)該時(shí)間內(nèi)的高頻脈沖數(shù)。雖然M/T法克服了M法和T法測(cè)速范圍有限的缺點(diǎn),在高速和低速段都具有較高的分辨率及較低的測(cè)速誤差,但是存在低速采樣時(shí)間過長(zhǎng)等問題。經(jīng)典的位置測(cè)量方法按轉(zhuǎn)向的正負(fù)對(duì)反饋脈沖進(jìn)行增減計(jì)數(shù),然后將計(jì)數(shù)值乘以脈沖當(dāng)量K得到當(dāng)前位置信息,可見其測(cè)量精度取決于脈沖當(dāng)量。
本文以定采樣周期M/T法為基礎(chǔ),它解決了經(jīng)典M/T法低速檢測(cè)時(shí)間過長(zhǎng)的問題,保證每一固定周期都能采樣到數(shù)據(jù)。此外,該算法充分利用反饋脈沖的位置信息和時(shí)間信息,得到了比一個(gè)脈沖當(dāng)量K更為精確的位置信息。本文利用FPGA設(shè)計(jì)實(shí)現(xiàn)定采樣周期M/T法,并設(shè)計(jì)PC104總線接口滿足板卡與控制器數(shù)據(jù)通信的要求。
1 總體方案
速度和位置測(cè)量板卡接收光電編碼器的反饋脈沖信號(hào),通過差分電路將其轉(zhuǎn)換為單端信號(hào)消除共模干擾,然后在FPGA中對(duì)脈沖處理得到速度和位置參數(shù),最后將參數(shù)通過PC104數(shù)據(jù)接口傳遞給控制器。速度和位置測(cè)量板卡除差分電路以外的功能均通過FPGA設(shè)計(jì)實(shí)現(xiàn)(如圖1所示),因此FPGA是本板卡的核心芯片。速度和位置測(cè)量板卡主要包括倍頻辨向模塊、定采樣周期M/T法模塊和PC104數(shù)據(jù)接口模塊。
1. 1 倍頻辨向模塊
光電編碼器的輸出反饋脈沖包括相位差90°的A、B信號(hào)以及零位脈沖Z。A、B之間的相位關(guān)系標(biāo)志被測(cè)軸的轉(zhuǎn)向,即A相超前B相90°表示正轉(zhuǎn),滯后90°表示反轉(zhuǎn);Z脈沖起到參考零點(diǎn)的作用。一個(gè)周期內(nèi)A、B兩路信號(hào)的相對(duì)位置變換了4次,即正轉(zhuǎn)A、B按00-10-11-01循環(huán)輸出,反轉(zhuǎn)遵循00-01-11-10的規(guī)律。倍頻辨向模塊通過檢測(cè)A、B信號(hào)的狀態(tài)變化輸出四倍頻及方向信號(hào),不僅提高了速度和位置測(cè)量的精度,還起到抗干擾的作用。
1.2 定采樣周期M/T法模塊
定采樣周期M/T法模塊分為速度測(cè)量電路和位置測(cè)量電路兩部分,圖2給出了該算法的硬件原理及時(shí)序圖。定采樣周期M/T法對(duì)高頻脈沖fc兩級(jí)鎖存的設(shè)計(jì)確保實(shí)際檢測(cè)起始點(diǎn)Tk超前于采樣周期Tn,這解決了M/T法在低速時(shí)檢測(cè)時(shí)間過長(zhǎng)的問題,保證每個(gè)采樣周期內(nèi)都能成功采集到數(shù)據(jù)。
速度測(cè)量硬件電路由速度計(jì)數(shù)器及其數(shù)據(jù)鎖存器Cm,以及高頻脈沖計(jì)數(shù)器及其兩級(jí)數(shù)據(jù)鎖存器Cf和Ct構(gòu)成;其中速度鎖存器Cm和高頻脈沖鎖存器Ct由采樣脈沖觸發(fā),輔助高頻脈沖鎖存器Cf由反饋脈沖觸發(fā)。通過差分處理得到當(dāng)前周期Tn內(nèi)的轉(zhuǎn)速增量Cm和高頻脈沖增量Ct,并設(shè)高頻脈沖的頻率為fc,脈沖當(dāng)量為K,那么計(jì)算可得轉(zhuǎn)速為:
Vn=KxfcxCm/Ct
位置測(cè)量硬件電路同樣采用高頻脈沖的兩級(jí)鎖存設(shè)計(jì),除此之外還包括位置計(jì)數(shù)器及其數(shù)據(jù)鎖存器Cmm,以及輔助位置鎖存器Ctt。由圖2可知,dTn-1和dTn這兩個(gè)時(shí)間差所對(duì)應(yīng)的位置變化小于一個(gè)脈沖當(dāng)量K,位置測(cè)量算法將上述時(shí)間差內(nèi)的位置變化加入到位置信息中,提高了位置測(cè)量的分辨率和精度。dTn通過差分當(dāng)前周期輔助位置鎖存器Ctt和脈沖鎖存器Ct得到,接著將dTn乘以速度值Vn可得位置變化。位置鎖存器Cmm計(jì)取了反饋脈沖的變化值,再加上dTn-1和dTn內(nèi)位置變化,便能計(jì)算出精確的位置信息。
dTn=(Ctt(n)-Ct(n))/fc
S=KxCmm+VnxdTn-Vn-1xdTn-1
2 各個(gè)模塊Verllog實(shí)現(xiàn)
根據(jù)速度和位置測(cè)量板卡的總體設(shè)計(jì)方案,利用Verilog設(shè)計(jì)實(shí)現(xiàn)各模塊。
2.1 倍頻辨向模塊
本模塊在FPGA系統(tǒng)時(shí)鐘clk上升沿檢測(cè)A、B的電平,并與上一clk記錄的狀態(tài)進(jìn)比較:當(dāng)狀態(tài)變化符合00-10、10-11、11-01、01-00時(shí),表明A超前B相90°,并且A或B產(chǎn)生一個(gè)邊沿跳變,此時(shí)光電編碼器正轉(zhuǎn)那么置1方向信號(hào),同時(shí)輸出一個(gè)計(jì)數(shù)脈沖,這樣一個(gè)周期內(nèi)將產(chǎn)生4個(gè)計(jì)數(shù)脈沖實(shí)現(xiàn)了四倍頻;當(dāng)變化對(duì)應(yīng)00-01、01-11、11-10、10-00時(shí),標(biāo)志A滯后B相90°,光電編碼器反轉(zhuǎn)則清零方向信號(hào),并輸出一個(gè)計(jì)數(shù)脈沖;當(dāng)變化符合00-00、01-01、10-10、11-11時(shí),說明光電編碼器處于換向階段,或者對(duì)應(yīng)正反轉(zhuǎn)的中間狀態(tài),此時(shí)保持方向信號(hào)并且不輸出計(jì)數(shù)脈沖;當(dāng)變化為00-11、01-10、10-01、11-00時(shí),說明A、B信號(hào)受到干擾而產(chǎn)生了錯(cuò)誤的狀態(tài)翻轉(zhuǎn),此時(shí)保持方向信號(hào)并且不輸出計(jì)數(shù)脈沖,達(dá)到了抗干擾的目的。
2.2 定采樣周期M/T法模塊
分析定采樣周期M/T法模塊可知,它主要由計(jì)數(shù)器和鎖存器組成,其中計(jì)數(shù)器對(duì)脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù),得到的計(jì)數(shù)值存于鎖存器中等待數(shù)據(jù)接口模塊讀取。
按計(jì)數(shù)方式的不同,計(jì)數(shù)器又可細(xì)分為增計(jì)數(shù)器和可逆計(jì)數(shù)器。其中高頻脈沖計(jì)數(shù)器和速度計(jì)數(shù)器都采用增計(jì)數(shù),在檢測(cè)到計(jì)數(shù)脈沖有效時(shí)加1計(jì)數(shù)值。位置計(jì)數(shù)器采用可逆計(jì)數(shù)的方式,在計(jì)數(shù)脈沖有效時(shí)通過方向脈沖決定采取增或減計(jì)數(shù)。由于對(duì)增量式光電編碼器的反饋脈沖計(jì)數(shù)只能獲得轉(zhuǎn)臺(tái)的相對(duì)位置,因此在計(jì)數(shù)器斷電或控制系統(tǒng)上電之前,都要對(duì)計(jì)數(shù)器所存數(shù)值進(jìn)行校正,即歸零。為了實(shí)現(xiàn)歸零操作,計(jì)數(shù)器除可逆計(jì)數(shù)外還需具備清零以及置數(shù)等功能。
鎖存器在采樣脈沖T有效時(shí),鎖存當(dāng)前數(shù)據(jù)供接口電路讀取,其中采樣周期大小取決于控制器對(duì)速度和位置的讀取頻率。考慮到數(shù)據(jù)讀取的安全性,控制器讀操作前必須首先完成各鎖存器的數(shù)據(jù)鎖存工作,即通過控制器對(duì)板卡的寫信號(hào)產(chǎn)生采樣脈沖T觸發(fā)鎖存器的鎖存工作。
本模塊設(shè)計(jì)了4個(gè)雙字鎖存器暫存速度和位置參數(shù),因此開辟4個(gè)雙字的I/O地址空間??刂破鲗?duì)I/O地址的讀操作實(shí)現(xiàn)鎖存器數(shù)據(jù)的讀取,寫操作為板卡提供清零、置數(shù)及采樣脈沖等信號(hào)。
2.3 PC104數(shù)據(jù)接口模塊
PC104總線是一種專為嵌入式控制而定義的工業(yè)控制總線,它具有小尺寸結(jié)構(gòu)、抗震性極佳的堆棧式連接、低功耗總線驅(qū)動(dòng)等優(yōu)點(diǎn),廣泛應(yīng)用于機(jī)載設(shè)備的開發(fā)中。此外,它是一個(gè)8位和16位兼容的總線,本模塊采用8位總線方式,采用以下總線信號(hào)完成通信設(shè)計(jì):SD7~SD0:數(shù)據(jù)信號(hào);SA9~SA0:地址信號(hào);AEN:地址使能信號(hào);IOR:I/O讀信號(hào);IOW:I/O寫信號(hào);電源信號(hào)。
在PC104系統(tǒng)中,為防止I/O地址沖突,每個(gè)模塊都必須有一個(gè)單獨(dú)的基地址。速度和位置測(cè)量板卡采用10位地址譯碼,基地址通過板卡上的基地址跳線器進(jìn)行設(shè)置。PC104數(shù)據(jù)接口采用I/O讀寫方式進(jìn)行通信,利用狀態(tài)機(jī)設(shè)計(jì)實(shí)現(xiàn)本模塊如圖3所示。S0為空閑狀態(tài),此狀態(tài)為初始狀態(tài),一旦控制器對(duì)板卡進(jìn)行操作,則進(jìn)入S1狀態(tài)。S1狀態(tài)記錄控制器的地址、數(shù)據(jù)以及控制信號(hào),并判斷控制器的操作類型。如果是讀操作進(jìn)入S2狀態(tài),若是寫操作則進(jìn)入S3狀態(tài)。在S2狀態(tài)中,將對(duì)應(yīng)地址的數(shù)據(jù)給到數(shù)據(jù)線,完成讀操作。在S3狀態(tài),將數(shù)據(jù)寫入對(duì)應(yīng)地址中,完成寫操作。讀操作或者寫操作完成之后,狀態(tài)又重新回到S0,等待控制器下次讀寫。
下面結(jié)合PC104的信號(hào)說明各狀態(tài)的作用。S0狀態(tài)檢測(cè)地址使能信號(hào)AEN,當(dāng)AEN有效并且地址信號(hào)SA的高位與基地址一致,說明控制器對(duì)本板卡操作,則激活S1狀態(tài)。S1狀態(tài)記錄地址信號(hào)SA的低4位和數(shù)據(jù)信號(hào)SD,并判斷讀信號(hào)IOR或?qū)懶盘?hào)IOW是否有效。當(dāng)IOR有效說明目前進(jìn)行讀操作進(jìn)入S2狀態(tài),而IOW有效表明當(dāng)前為寫操作進(jìn)入S3狀態(tài)。S2狀態(tài)對(duì)地址進(jìn)行分支選擇確定欲讀取數(shù)據(jù)的地址,輸出對(duì)應(yīng)地址的數(shù)據(jù)完成讀操作。S3狀態(tài)將數(shù)據(jù)寫入到對(duì)應(yīng)地址完成寫操作。
3 測(cè)試平臺(tái)與仿真測(cè)試
用ISE軟件編程實(shí)現(xiàn)各模塊的功能,用ModelSim對(duì)其進(jìn)行仿真測(cè)試,圖4為仿真結(jié)果。由圖可知,輸入的A、B信號(hào)模擬正轉(zhuǎn)、反轉(zhuǎn)及干擾三種狀態(tài),正轉(zhuǎn)和反轉(zhuǎn)下每周期都將輸出四個(gè)脈沖,并且正轉(zhuǎn)方向信號(hào)置1,反轉(zhuǎn)清零,而在干擾信號(hào)下不輸出計(jì)數(shù)脈沖,并且方向信號(hào)保持不變。速度計(jì)數(shù)器在計(jì)數(shù)脈沖有效時(shí)計(jì)數(shù),位置計(jì)數(shù)器根據(jù)方向信號(hào)對(duì)計(jì)數(shù)脈沖做增減計(jì)數(shù),速度鎖存器Cm、位置鎖存器Cmm在采樣周期有效時(shí)鎖存速度和位置值。輔助高頻脈沖鎖存器Cf及高頻脈沖鎖存器Ct對(duì)高頻脈沖進(jìn)行兩級(jí)鎖存,保證實(shí)際采樣點(diǎn)超前于采樣周期,保證每個(gè)周期下都能采樣到數(shù)據(jù)。
設(shè)計(jì)完成的速度和位置測(cè)量板卡如圖5所示,F(xiàn)PGA采用Xilinx公司的XC3S400,控制器部分選用盛博公司的SAT-1040板卡。使用36000刻線的增量式光電編碼器,高頻脈沖由40 MHz晶振提供,最小采樣周期可達(dá)1ms,在測(cè)量范圍內(nèi)速度、位置測(cè)量精度分別達(dá)到3x10-5、5x10-5。
4 結(jié)束語
文中以FPGA為核心控制芯片設(shè)計(jì)實(shí)現(xiàn)了速度和位置測(cè)量板卡,它以定采樣周期M/T法為基礎(chǔ)對(duì)光電編碼器的反饋脈沖處理得到表征速度和位置的參數(shù),通過PC104總線接口將數(shù)據(jù)傳遞給控制器計(jì)算得到精確的速度和位置信息。整個(gè)設(shè)計(jì)在FPGA內(nèi)完成,故硬件結(jié)構(gòu)簡(jiǎn)介,可靠性強(qiáng),抗干擾能力強(qiáng);板卡的最小采樣時(shí)間達(dá)到1 ms,確保每一周期下都能采樣到可靠數(shù)據(jù),并將位置測(cè)量精度提高至5x10-5。
評(píng)論