徐博峰,李秀娟
(南京航空航天大學(xué) 江蘇 南京 210016)
基于FPGA的速度和位置測量板卡的設(shè)計(jì)與實(shí)現(xiàn)
徐博峰,李秀娟
(南京航空航天大學(xué) 江蘇 南京 210016)
針對增量式光電編碼器經(jīng)典速度測量算法M/T法低速采樣時(shí)間過長和位置測量算法精度不高的問題,本文基于定采樣周期M/T法設(shè)計(jì)實(shí)現(xiàn)了速度和位置測量板卡。采用Xilinx公司的XC3S400 FPGA為核心控制芯片進(jìn)行設(shè)計(jì),并設(shè)計(jì)PC104總線接口實(shí)現(xiàn)板卡與控制器的數(shù)據(jù)通信。該板卡接收處理光電編碼器的反饋脈沖得到速度和位置參數(shù),將數(shù)據(jù)通過PC104總線接口傳遞給控制器。實(shí)驗(yàn)表明,板卡的最小采樣時(shí)間達(dá)到1 ms,并且位置測量精度可達(dá)5×10-5。
光電編碼器;速度和位置測量算法;FPGA;PC104
增量式光電編碼器作為速度和位置傳感器被廣泛應(yīng)用于伺服系統(tǒng)。理論上,光電編碼器反饋脈沖的頻率對應(yīng)被測軸轉(zhuǎn)速,反饋脈沖個(gè)數(shù)的累加值對應(yīng)位置信息。經(jīng)典的速度測量方法有M法、T法和M/T法3種:其中M法通過計(jì)取固定時(shí)間間隔內(nèi)光電編碼器的反饋脈沖數(shù)計(jì)算當(dāng)前轉(zhuǎn)速,適用于高速場合;T法利用高頻脈沖測量相鄰反饋脈沖的時(shí)間間隔計(jì)算當(dāng)前轉(zhuǎn)速,適用于低速場合;M/T法不僅測量固定時(shí)間間隔內(nèi)反饋脈沖的增量值,而且計(jì)數(shù)該時(shí)間內(nèi)的高頻脈沖數(shù)。雖然M/T法克服了M法和T法測速范圍有限的缺點(diǎn),在高速和低速段都具有較高的分辨率及較低的測速誤差,但是存在低速采樣時(shí)間過長等問題。經(jīng)典的位置測量方法按轉(zhuǎn)向的正負(fù)對反饋脈沖進(jìn)行增減計(jì)數(shù),然后將計(jì)數(shù)值乘以脈沖當(dāng)量K得到當(dāng)前位置信息,可見其測量精度取決于脈沖當(dāng)量。
本文以定采樣周期M/T法為基礎(chǔ),它解決了經(jīng)典M/T法低速檢測時(shí)間過長的問題,保證每一固定周期都能采樣到數(shù)據(jù)。此外,該算法充分利用反饋脈沖的位置信息和時(shí)間信息,得到了比一個(gè)脈沖當(dāng)量K更為精確的位置信息[1]。本文利用FPGA設(shè)計(jì)實(shí)現(xiàn)定采樣周期M/T法,并設(shè)計(jì)PC104總線接口滿足板卡與控制器數(shù)據(jù)通信的要求[2]。
速度和位置測量板卡接收光電編碼器的反饋脈沖信號,通過差分電路將其轉(zhuǎn)換為單端信號消除共模干擾,然后在FPGA中對脈沖處理得到速度和位置參數(shù),最后將參數(shù)通過PC104數(shù)據(jù)接口傳遞給控制器。速度和位置測量板卡除差分電路以外的功能均通過FPGA設(shè)計(jì)實(shí)現(xiàn) (如圖1所示),因此FPGA是本板卡的核心芯片。速度和位置測量板卡主要包括倍頻辨向模塊、定采樣周期M/T法模塊和PC104數(shù)據(jù)接口模塊。
圖1 FPGA結(jié)構(gòu)框圖Fig.1 Structure diagram of FPGA
光電編碼器的輸出反饋脈沖包括相位差90°的A、B信號以及零位脈沖Z。A、B之間的相位關(guān)系標(biāo)志被測軸的轉(zhuǎn)向,即A相超前B相90°表示正轉(zhuǎn),滯后90°表示反轉(zhuǎn);Z脈沖起到參考零點(diǎn)的作用。一個(gè)周期內(nèi)A、B兩路信號的相對位置變換了4次,即正轉(zhuǎn)A、B按00-10-11-01循環(huán)輸出,反轉(zhuǎn)遵循00-01-11-10的規(guī)律。倍頻辨向模塊通過檢測A、B信號的狀態(tài)變化輸出四倍頻及方向信號,不僅提高了速度和位置測量的精度,還起到抗干擾的作用。
定采樣周期M/T法模塊分為速度測量電路和位置測量電路兩部分,圖 給出了該算法的硬件原理及時(shí)序圖。定采樣周期M/T法對高頻脈沖fc兩級鎖存的設(shè)計(jì)確保實(shí)際檢測起始點(diǎn)Tk超前于采樣周期Tn,這解決了M/T法在低速時(shí)檢測時(shí)間過長的問題,保證每個(gè)采樣周期內(nèi)都能成功采集到數(shù)據(jù)。
圖2 定采樣周期M/T法原理及時(shí)序圖Fig.2 Schematic and Sequence diagram of fixed sampling period M/T algorithm
速度測量硬件電路由速度計(jì)數(shù)器及其數(shù)據(jù)鎖存器Cm,以及高頻脈沖計(jì)數(shù)器及其兩級數(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)速為:
位置測量硬件電路同樣采用高頻脈沖的兩級鎖存設(shè)計(jì),除此之外還包括位置計(jì)數(shù)器及其數(shù)據(jù)鎖存器Cmm,以及輔助位置鎖存器Ctt。由圖2可知,dTn-1和dTn這兩個(gè)時(shí)間差所對應(yīng)的位置變化小于一個(gè)脈沖當(dāng)量K,位置測量算法將上述時(shí)間差內(nèi)的位置變化加入到位置信息中,提高了位置測量的分辨率和精度。dTn通過差分當(dāng)前周期輔助位置鎖存器Ctt和脈沖鎖存器Ct得到,接著將dTn乘以速度值Vn可得位置變化。位置鎖存器Cmm計(jì)取了反饋脈沖的變化值,再加上dTn-1和dTn內(nèi)位置變化,便能計(jì)算出精確的位置信息[3]。
根據(jù)速度和位置測量板卡的總體設(shè)計(jì)方案,利用Verilog設(shè)計(jì)實(shí)現(xiàn)各模塊。
本模塊在FPGA系統(tǒng)時(shí)鐘clk上升沿檢測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方向信號,同時(shí)輸出一個(gè)計(jì)數(shù)脈沖,這樣一個(gè)周期內(nèi)將產(chǎn)生4個(gè)計(jì)數(shù)脈沖實(shí)現(xiàn)了四倍頻;當(dāng)變化對應(yīng) 00-01、01-11、11-10、10-00時(shí),標(biāo)志A滯后B相 90°,光電編碼器反轉(zhuǎn)則清零方向信號,并輸出一個(gè)計(jì)數(shù)脈沖;當(dāng)變化符合00-00、01-01、10-10、11-11時(shí),說明光電編碼器處于換向階段,或者對應(yīng)正反轉(zhuǎn)的中間狀態(tài),此時(shí)保持方向信號并且不輸出計(jì)數(shù)脈沖;當(dāng)變化為 00-11、01-10、10-01、11-00 時(shí), 說明 A、B 信號受到干擾而產(chǎn)生了錯誤的狀態(tài)翻轉(zhuǎn),此時(shí)保持方向信號并且不輸出計(jì)數(shù)脈沖,達(dá)到了抗干擾的目的。
分析定采樣周期M/T法模塊可知,它主要由計(jì)數(shù)器和鎖存器組成,其中計(jì)數(shù)器對脈沖個(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ù),在檢測到計(jì)數(shù)脈沖有效時(shí)加1計(jì)數(shù)值。位置計(jì)數(shù)器采用可逆計(jì)數(shù)的方式,在計(jì)數(shù)脈沖有效時(shí)通過方向脈沖決定采取增或減計(jì)數(shù)。由于對增量式光電編碼器的反饋脈沖計(jì)數(shù)只能獲得轉(zhuǎn)臺的相對位置,因此在計(jì)數(shù)器斷電或控制系統(tǒng)上電之前,都要對計(jì)數(shù)器所存數(shù)值進(jìn)行校正,即歸零。為了實(shí)現(xiàn)歸零操作,計(jì)數(shù)器除可逆計(jì)數(shù)外還需具備清零以及置數(shù)等功能。
鎖存器在采樣脈沖T有效時(shí),鎖存當(dāng)前數(shù)據(jù)供接口電路讀取,其中采樣周期大小取決于控制器對速度和位置的讀取頻率??紤]到數(shù)據(jù)讀取的安全性,控制器讀操作前必須首先完成各鎖存器的數(shù)據(jù)鎖存工作,即通過控制器對板卡的寫信號產(chǎn)生采樣脈沖T觸發(fā)鎖存器的鎖存工作[4]。
本模塊設(shè)計(jì)了4個(gè)雙字鎖存器暫存速度和位置參數(shù),因此開辟4個(gè)雙字的I/O地址空間。控制器對I/O地址的讀操作實(shí)現(xiàn)鎖存器數(shù)據(jù)的讀取,寫操作為板卡提供清零、置數(shù)及采樣脈沖等信號。
PC104總線是一種專為嵌入式控制而定義的工業(yè)控制總線,它具有小尺寸結(jié)構(gòu)、抗震性極佳的堆棧式連接、低功耗總線驅(qū)動等優(yōu)點(diǎn),廣泛應(yīng)用于機(jī)載設(shè)備的開發(fā)中。此外,它是一個(gè)8位和16位兼容的總線,本模塊采用8位總線方式,采用以下總線信號完成通信設(shè)計(jì):SD7~SD0:數(shù)據(jù)信號;SA9~SA0:地址信號;AEN:地址使能信號;IOR:I/O讀信號;IOW:I/O寫信號;電源信號[5]。
在PC104系統(tǒng)中,為防止I/O地址沖突,每個(gè)模塊都必須有一個(gè)單獨(dú)的基地址。速度和位置測量板卡采用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),一旦控制器對板卡進(jìn)行操作,則進(jìn)入S1狀態(tài)。S1狀態(tài)記錄控制器的地址、數(shù)據(jù)以及控制信號,并判斷控制器的操作類型。如果是讀操作進(jìn)入S2狀態(tài),若是寫操作則進(jìn)入S3狀態(tài)。在S2狀態(tài)中,將對應(yīng)地址的數(shù)據(jù)給到數(shù)據(jù)線,完成讀操作。在S3狀態(tài),將數(shù)據(jù)寫入對應(yīng)地址中,完成寫操作。讀操作或者寫操作完成之后,狀態(tài)又重新回到S0,等待控制器下次讀寫[6]。
圖3 PC104接口狀態(tài)機(jī)Fig.3 State Machine of PC104 interface
下面結(jié)合PC104的信號說明各狀態(tài)的作用。S0狀態(tài)檢測地址使能信號AEN,當(dāng)AEN有效并且地址信號SA的高位與基地址一致,說明控制器對本板卡操作,則激活S1狀態(tài)。S1狀態(tài)記錄地址信號SA的低4位和數(shù)據(jù)信號SD,并判斷讀信號IOR或?qū)懶盘朓OW是否有效。當(dāng)IOR有效說明目前進(jìn)行讀操作進(jìn)入S2狀態(tài),而IOW有效表明當(dāng)前為寫操作進(jìn)入S3狀態(tài)。S2狀態(tài)對地址進(jìn)行分支選擇確定欲讀取數(shù)據(jù)的地址,輸出對應(yīng)地址的數(shù)據(jù)完成讀操作。S3狀態(tài)將數(shù)據(jù)寫入到對應(yīng)地址完成寫操作[7]。
用ISE軟件編程實(shí)現(xiàn)各模塊的功能,用ModelSim對其進(jìn)行仿真測試,圖4為仿真結(jié)果。由圖可知,輸入的A、B信號模擬正轉(zhuǎn)、反轉(zhuǎn)及干擾三種狀態(tài),正轉(zhuǎn)和反轉(zhuǎn)下每周期都將輸出四個(gè)脈沖,并且正轉(zhuǎn)方向信號置1,反轉(zhuǎn)清零,而在干擾信號下不輸出計(jì)數(shù)脈沖,并且方向信號保持不變。速度計(jì)數(shù)器在計(jì)數(shù)脈沖有效時(shí)計(jì)數(shù),位置計(jì)數(shù)器根據(jù)方向信號對計(jì)數(shù)脈沖做增減計(jì)數(shù),速度鎖存器Cm、位置鎖存器Cmm在采樣周期有效時(shí)鎖存速度和位置值。輔助高頻脈沖鎖存器Cf及高頻脈沖鎖存器Ct對高頻脈沖進(jìn)行兩級鎖存,保證實(shí)際采樣點(diǎn)超前于采樣周期,保證每個(gè)周期下都能采樣到數(shù)據(jù)。
圖4 仿真圖Fig.4 Simulation diagram
設(shè)計(jì)完成的速度和位置測量板卡如圖5所示,F(xiàn)PGA采用Xilinx公司的XC3S400,控制器部分選用盛博公司的SAT-1040板卡。使用36000刻線的增量式光電編碼器,高頻脈沖由40 MHz晶振提供,最小采樣周期可達(dá)1ms,在測量范圍內(nèi)速度、位置測量精度分別達(dá)到3×10-5、5×10-5。
圖5 速度和位置測量板卡Fig.5 Speed and position measurement card
文中以FPGA為核心控制芯片設(shè)計(jì)實(shí)現(xiàn)了速度和位置測量板卡,它以定采樣周期M/T法為基礎(chǔ)對光電編碼器的反饋脈沖處理得到表征速度和位置的參數(shù),通過PC104總線接口將數(shù)據(jù)傳遞給控制器計(jì)算得到精確的速度和位置信息。整個(gè)設(shè)計(jì)在FPGA內(nèi)完成,故硬件結(jié)構(gòu)簡介,可靠性強(qiáng),抗干擾能力強(qiáng);板卡的最小采樣時(shí)間達(dá)到1 ms,確保每一周期下都能采樣到可靠數(shù)據(jù),并將位置測量精度提高至5×10-5。
[1]石忠東,陳培正,陳定積,等.高精度數(shù)字測速及動態(tài)位置檢測算法[J].清華大學(xué)學(xué)報(bào),2004,44(8):1021-1024.
SHI Zhong-dong,CHEN Pei-zheng,CHEN Ding-ji,et al.High resolution digitalvelocitydetection and dynamic position detection methods[J].J Tsinghua Univ,2004,44(8):1021-1024.
[2]徐文波,田耕.Xilinx FPGA開發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
[3]Richard C K.An enhanced constant sample-time digital tachometer through oversampling [J].Transactions of the Institute of Measurement and Control,2004,26(2):83-98.
[4]丁磊,馮永晉,張海笑.數(shù)字邏輯與EDA設(shè)計(jì)[M].西安:西安電子科技大學(xué),2012.
[5]潘啟勇,盧達(dá).基于FPGA的電腦橫機(jī)控制器PC104總線接口設(shè)計(jì)[J].東南大學(xué)學(xué)報(bào),2008,38(17):154-157.
PAN Qi-yong,LU Da.Design of PC104 bus interface for FPGA-based computerized flat knitter controller[J].Journal of Southeast University,2008,38(17):154-157.
[6]吳小虎.基于FPGA的PC/104和多路UART擴(kuò)展系統(tǒng)的研究與發(fā)現(xiàn)[D].安徽:安徽大學(xué),2011.
[7]PC/104 Specification Version 2.6[S].PC/104 Embedded Consortium,2008.
Design and implementation of speed and position measurement card based on FPGA
XU Bo-feng,LI Xiu-juan
(Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China)
To figure out the disadvantages of long sampling period of classical speed algorithm M/T method under low speed and low precision of classical position algorithm,the speed and position measurement card is designed,which is based on fixed sampling period M/T algorithm.Adopts X3CS400 FPGA as the core control chip,and designs PC104 interface through which the board can communicates with the controller.After receiving and processing feedback pulse of optical encoder,the card transmits the speed and position data to the controller via PC104 interface.The result of experiments shows that the minimum sampling period can reach 1ms,and the precision of position measurement comes to 5×10-5.
optical encoder;speed and position algorithm;FPGA;PC104
TN310-34
A
1674-6236(2014)13-0149-03
2013-10-07 稿件編號:201310010
徐博峰(1990—),男,浙江樂清人,碩士。研究方向:信號檢測與控制技術(shù)。