《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA與FSM的高精度測(cè)角系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA與FSM的高精度測(cè)角系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第2期
王 鵬1, 杜衛(wèi)東2, 呂志剛1, 雷 斌1
1.西安工業(yè)大學(xué) 電子信息工程學(xué)院 信息通信系, 陜西 西安710032; 2.山東省特種設(shè)備檢驗(yàn)研究院,山東 濟(jì)南250101
摘要: 介紹了一種基于有限狀態(tài)機(jī)(FSM)的高精度角度測(cè)量系統(tǒng)。該系統(tǒng)采用Renishaw高精度增量式光電編碼器作為位置傳感器來測(cè)量角度,在FPGA上用VHDL語言描述與仿真有限狀態(tài)機(jī),實(shí)現(xiàn)信號(hào)濾波與去抖,從而保證了計(jì)數(shù)器計(jì)數(shù)的正確性。在ARM9處理器上實(shí)現(xiàn)角度的實(shí)時(shí)計(jì)算,并控制轉(zhuǎn)臺(tái)旋轉(zhuǎn)。在激光跟蹤測(cè)量系統(tǒng)的工程應(yīng)用中驗(yàn)證了該系統(tǒng)的正確性和有效性。
中圖分類號(hào): TP301.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)02-0077-03
The design and implementation of high precision angle measuring system based on FPGA & FSM
Wang Peng1, Du Weidong2, Lv Zhigang1, Lei Bin1
1. School of Electronic and Information Engineering, Xi′an Technological University,Xi′an 710032,China; 2. Shandong Special Equipment Inspection Institute, Jinan 250101,China
Abstract: This paper describes a high-precision angle measurement system based on finite state machine(FSM). The system uses Renishaw precision incremental optical encoder as a position sensor to measure the angle, using VHDL language in the FPGA to describe and simulation finite state machine, to achieve signal filtering and the shaking, thus ensuring the correctness of the counter. The ARM9 processor achieves real-time calculation of the angle, and controls the turntable rotation. In the engineering application of the laser tracking measurement system verify the correctness and effectiveness.
Key words : FSM; FPGA; incremental photoelectric encoder; EP1C12Q240

    激光跟蹤測(cè)量系統(tǒng)(Laser Tracker System)是工業(yè)測(cè)量系統(tǒng)中常用的一種高精度的測(cè)量儀器,是近十年發(fā)展起來的新型大尺寸空間測(cè)量儀器,不僅對(duì)靜止目標(biāo)可以測(cè)量,而且對(duì)運(yùn)動(dòng)目標(biāo)也可以進(jìn)行跟蹤測(cè)量。它集合了激光測(cè)距技術(shù)、光電技術(shù)、精密機(jī)械技術(shù)、計(jì)算機(jī)及控制技術(shù)等各種先進(jìn)技術(shù),對(duì)空間運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤并實(shí)時(shí)測(cè)量目標(biāo)的空間三維坐標(biāo)。它具有快速、動(dòng)態(tài)、精度高等優(yōu)點(diǎn),適合于大尺寸工件配裝測(cè)量。在航空航天、機(jī)械制造、核工業(yè)、現(xiàn)代軍事等測(cè)量領(lǐng)域得到廣泛的應(yīng)用。該系統(tǒng)的跟蹤精度在很大程度上依賴于轉(zhuǎn)臺(tái)的旋轉(zhuǎn)角度的測(cè)量精度。

    為了提高系統(tǒng)轉(zhuǎn)臺(tái)旋轉(zhuǎn)角度測(cè)量的精度,本系統(tǒng)采用高分辨率的光電編碼器來測(cè)量角度。光電編碼器是利用光柵衍射原理實(shí)現(xiàn)位移數(shù)字變換的,光電編碼器作為一種高精度的測(cè)角傳感器已普遍應(yīng)用于伺服跟蹤系統(tǒng)中,它具有精度高、響應(yīng)快、性能穩(wěn)定可靠等優(yōu)點(diǎn)。光電編碼器按編碼方式主要分為兩類:增量式與絕對(duì)式。由于增量式光電編碼器成本低、測(cè)角的精度高,因此本系統(tǒng)的增量式光電編碼器選用Renishaw公司的高精度圓光柵。
    然而,由于機(jī)械振動(dòng)或抖動(dòng)等原因,增量式編碼器的輸出脈沖會(huì)出現(xiàn)抖動(dòng)毛刺的現(xiàn)象,因此需要在對(duì)編碼器輸出脈沖進(jìn)行計(jì)數(shù)的過程中采取有效的方法來去掉抖動(dòng)干擾。本文介紹的有限狀態(tài)機(jī)方法,在FPGA上可以有效消除抖動(dòng)引起的計(jì)數(shù)干擾,提高計(jì)數(shù)的精度[1]。
1 方案設(shè)計(jì)
1.1 系統(tǒng)組成

    激光跟蹤測(cè)量系統(tǒng)的核心處理模塊主要由ARM處理器,F(xiàn)PGA組成。為了充分利用ARM9微處理器的運(yùn)算能力和FPGA的高速邏輯處理能力,在設(shè)計(jì)中對(duì)功能的實(shí)現(xiàn)進(jìn)行了劃分。ARM9 用于運(yùn)動(dòng)控制平臺(tái)的控制并且與FPGA一起形成一個(gè)完整的應(yīng)用平臺(tái)。FPGA主要完成編碼器的精確計(jì)數(shù)功能、與ARM9處理器數(shù)據(jù)通信、與激光測(cè)距儀數(shù)據(jù)通信功能。系統(tǒng)的組成框圖如圖1所示。本文重點(diǎn)介紹在FPGA上實(shí)現(xiàn)編碼器的輸出脈沖計(jì)數(shù)與角度測(cè)量。

 

1.2 增量式編碼器原理
    增量型編碼器通常有3路信號(hào)輸出:A、B和Z,每路都是差分信號(hào),共6路信號(hào),信號(hào)采用TTL電平,A脈沖在前,B脈沖在后,A、B脈沖相差90°,每旋轉(zhuǎn)一圈發(fā)出一個(gè)基準(zhǔn)脈沖Z,作為參考機(jī)械零位。Z相的波形中心對(duì)準(zhǔn)A相輸出的波形中心。利用A相B相的相位差來進(jìn)行判相,A超前B 90°為正轉(zhuǎn),反之B超前A 90°為反轉(zhuǎn)。
    由于增量式編碼器不帶記憶功能,因此對(duì)外界因素引起的干擾非常敏感,在實(shí)際應(yīng)用中,由于機(jī)械振動(dòng)、工作環(huán)境,電機(jī)負(fù)載等都無可避免地會(huì)產(chǎn)生震動(dòng),編碼器會(huì)在某一相的脈沖邊緣的地方出現(xiàn)抖動(dòng)的情況,因此有效濾掉脈沖的抖動(dòng)和毛刺,是提高計(jì)數(shù)精度的關(guān)鍵技術(shù)。編碼器輸出真實(shí)信號(hào)的波形如圖2所示[2-3]。

 

 


2 理論分析與算法
2.1 有限狀態(tài)機(jī)原理

    在編碼器的一個(gè)輸出周期內(nèi),A、B兩相輸出信號(hào)共產(chǎn)生4個(gè)跳變沿,在A、B方波信號(hào)的上升沿和下降沿分別計(jì)數(shù),從而實(shí)現(xiàn)四倍頻計(jì)數(shù)的操作。本文通過有限狀態(tài)機(jī)FSM,對(duì)原始信號(hào)進(jìn)行四倍頻采樣控制,狀態(tài)機(jī)外加的一路高速同步時(shí)鐘信號(hào)作為狀態(tài)機(jī)的驅(qū)動(dòng)時(shí)鐘信號(hào),從而有效濾掉抖動(dòng)干擾。
  有限狀態(tài)機(jī)FSM(Finite State Machine)是一種時(shí)序電路,是數(shù)字系統(tǒng)中實(shí)現(xiàn)高效率可靠性邏輯控制的重要方法。標(biāo)準(zhǔn)狀態(tài)機(jī)可分為摩爾型Moore和米利型Mealy兩種類型。Mealy狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和輸入信號(hào)的函數(shù)。在本設(shè)計(jì)中,對(duì)編碼器輸出信號(hào)進(jìn)行計(jì)數(shù),采用的計(jì)數(shù)器是雙向計(jì)數(shù)器,既與當(dāng)前編碼器所處于的電平組合有關(guān),又與前一個(gè)狀態(tài)有關(guān)。因此本設(shè)計(jì)采用Mealy狀態(tài)機(jī)。Mealy狀態(tài)機(jī)比Moore狀態(tài)機(jī)在狀態(tài)切換時(shí)提前一個(gè)同步時(shí)鐘, 因而具有較高的實(shí)時(shí)性。A、B兩相信號(hào)轉(zhuǎn)換狀態(tài)如圖3所示[4]。


3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1 軟硬件平臺(tái)

    根據(jù)以上分析,編碼器輸出的原始信號(hào)經(jīng)過有限狀態(tài)機(jī)處理后,得到了四倍頻的輸出信號(hào)。本系統(tǒng)采用FPGA實(shí)現(xiàn)四倍頻控制和計(jì)數(shù)功能,與用分立器件構(gòu)成的倍頻計(jì)數(shù)電路相比,具有穩(wěn)定度高,移植性靈活,可靠性好的特點(diǎn)。
    硬件采用Altera公司的Cyclone系列FPGA芯片EP1C12Q240,編譯環(huán)境為Quartus II 5.1集成開發(fā)環(huán)境。在Quartus II的開發(fā)環(huán)境中,可以通過兩種方法來實(shí)現(xiàn)Mealy有限狀態(tài)機(jī)。第一采用硬件描述語言,第二通過Quartus II中的狀態(tài)機(jī)編輯工具來完成。本設(shè)計(jì)采用硬件描述語言來實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)。
3.2 程序設(shè)計(jì)
    為了提高系統(tǒng)的實(shí)用性和穩(wěn)定性,濾掉信號(hào)上的毛刺,在A、B相信號(hào)進(jìn)入狀態(tài)機(jī)前,先設(shè)計(jì)一個(gè)濾波器進(jìn)行初次濾波,每個(gè)信號(hào)用4個(gè)D觸發(fā)器和1個(gè)判決器來濾波;觸發(fā)器由時(shí)鐘SCLK驅(qū)動(dòng)。小于一個(gè)SCLK時(shí)鐘周期的毛刺,都被濾波器濾掉了。濾波器的原理圖如圖5所示[6-7]。

    整個(gè)程序的設(shè)計(jì)是采用圖形和語言相結(jié)合的方法來實(shí)現(xiàn)的。頂層設(shè)計(jì)采用圖形文件,頂層模塊的結(jié)構(gòu)圖如圖6所示。
    內(nèi)部的狀態(tài)機(jī)模塊采用VHDL語言來實(shí)現(xiàn)。頂層模塊包含兩個(gè)模塊,一個(gè)濾波器模塊,該模塊根據(jù)三選二判決的原理來濾掉毛刺;另一個(gè)模塊是狀態(tài)機(jī)模塊,最終輸出編碼器計(jì)數(shù)的結(jié)果。Input[0]和input[1]輸入引腳分別連接增量型編碼器A相和B相信號(hào)。q[31..0]為32位的計(jì)數(shù)器,輸出當(dāng)前編碼器的計(jì)數(shù)值,dirout是編碼器的旋轉(zhuǎn)方向信號(hào)。
    程序設(shè)計(jì)完成后,在仿真工具modelsim下進(jìn)行波形仿真。仿真結(jié)果如圖7所示。從圖中看出,計(jì)數(shù)器能夠?qū)崿F(xiàn)正向與反向計(jì)數(shù),可以有效濾除脈沖上的抖動(dòng),獲得精確的計(jì)數(shù)值。

    本文提出了一種基于有限狀態(tài)機(jī)的高精度測(cè)量系統(tǒng),在FPGA上用有限狀態(tài)機(jī)實(shí)現(xiàn)了編碼器輸出脈沖的去抖,并通過32位計(jì)數(shù)器實(shí)現(xiàn)精確計(jì)數(shù)。最終在ARM處理器上完成角度的計(jì)算。通過大量反復(fù)試驗(yàn),試驗(yàn)結(jié)果表明本文介紹的方法具有精度高、成本低、接口兼容性高、可靠性高、可移植性好等優(yōu)點(diǎn),可以有效抑制噪聲干擾,獲得高精度的角度數(shù)據(jù)。該方法已經(jīng)成功應(yīng)用在激光跟蹤測(cè)量系統(tǒng)中,該技術(shù)的推廣可以取得良好的經(jīng)濟(jì)效益,具有重要實(shí)用意義。
參考文獻(xiàn)
[1] 侯鴻斌,陳安,高妍.基于有限狀態(tài)機(jī)的高精度周期可變編碼器計(jì)數(shù)器設(shè)計(jì)[J].福建電腦, 2010(1):1-2.
[2] 方華松,丁望來.基于FPGA的抗編碼器抖動(dòng)干擾的高精 度編碼技術(shù)[J].船電技術(shù),2009(7):15-18.
[3] 閆莎莎,朱世強(qiáng).基于CPLD 的光電編碼器測(cè)量系統(tǒng)[J]. 機(jī)電工程,2009(26):77-79.
[4] 蔣晶,蔣東方,高航.高可靠性增量式光電編碼器接口電路設(shè)計(jì)[J].測(cè)控技術(shù),2009,28(2):1-3.
[5] 鈔靖,王小椿,姜虹. 基于FPGA 的光電編碼器四倍頻電路設(shè)計(jì)[J].儀表技術(shù), 2007(6):17-21.
[6] 王彩霞,李梅.基于FPGA的增量式光電角度編碼 器信號(hào)處理系統(tǒng)[J].微計(jì)算機(jī)信息,2010,26(8-2):125-     126.
[7] 韓黨群,肖軍.基于狀態(tài)機(jī)描述的光電編碼器四倍頻電路設(shè)計(jì)[J].西安航空技術(shù)高等??茖W(xué)校學(xué)報(bào),2008,9(5):
23-25.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。