邱葭華,胡 毅
(合肥工業大學儀器科學與光電工程學院,安徽合肥 230009)
基于Mealy型狀態機的莫爾條紋細分和辨向技術
邱葭華,胡 毅
(合肥工業大學儀器科學與光電工程學院,安徽合肥 230009)
介紹了一種利用VHDL語言描述的Mealy型狀態機對光柵莫爾條紋進行8細分和辨向的方法。該方法通過狀態機對經過預處理電路的光柵信號變化狀態進行判斷,從而輸出計數脈沖和方向信號。通過一種改進的計數方法,避免了尖峰干擾脈沖對計數值的影響,提高了細分和計數精度。
莫爾條紋;細分和辨向;VHDL;Mealy狀態機;脈沖干擾
光柵作為精密測量位移的一種重要工具,已在精密儀器、高精度精密加工等領域得到了廣泛應用[1]。當光柵尺沿垂直于柵線相對移動一個柵距時,莫爾條紋就移動一個條紋間距,通過統計光電元件接收到的莫爾條紋變化的周期數便得知光柵尺的位移量[2]。
隨著超精密加工技術的發展,對光柵測量精度的要求也提高,需要提高光柵測量的分辨率。提高光柵測量分辨率可以通過提高光柵刻線密度實現,但這樣會增加成本,且隨著刻線密度的增加,要進一步提高刻線密度在工藝上實現難度也較大,同時柵距越小,對光學系統和機械機構的要求也越嚴格[3]。
通過對光柵信號進行細分同樣可以提高光柵的測量分辨率,并且成本較低。傳統硬件細分方法的電路較為復雜,隨著大規模可編程邏輯器件的發展,許多傳統的邏輯電路可以用可編程邏輯器件代替,同時系統的可靠性和處理速度也將提高[4]。文中介紹了一種基于FPGA對光柵莫爾條紋進行8細分和辨向的方法。
如圖1所示,兩路相位相差90°的正余弦信號分別通過兩個過零比較器,得到兩信號頻率和原始正余弦信號頻率相同的方波信號A、B。另外,此正余弦信號分別通過兩個絕對值電路后,翔實送入比較電路進行比較,將會得到一信號頻率為原始正余弦信號頻率兩倍的方波信號C。通過FPGA對A、B、C這3路方波信號進行處理,實現莫爾條紋的8細分和辨向。

圖1 光柵信號預處理電路框圖及各信號示意圖
圖1所示是相位相差90°的正余弦信號,經過預處理電路后得到的A、B、C 3路信號在一個周期內的電平變化,可以通過對A、B、C 3路信號的每個上升沿和下降沿進行計數從而得到8倍頻計數。但是用這種方法處理,當信號受到干擾產生尖峰脈沖時,將會出現重復計數的情況,導致計數值有較大的誤差,嚴重影響光柵的計量精度。
對圖1中的A、B、C 3路信號的電平狀態進行分析可以發現,在一個周期內,A、B、C 3路信號的電平狀態總共有以下 8 種狀態:100、101、111、110、010、011、001、000。這8種狀態的變化順序正好組成一個3位的格雷碼,按照3位格雷碼對應的十進制數,分別將這8 種狀態定義為 S7、S6、S5、S4、S3、S2、S1、S0。當光柵正向移動時,A信號相位超期 B信號90°,A、B、C 3路信號的電平狀態按照 S7-S6-S5-S4-S3-S2-S1-S0-S7的順序循環變化;當光柵反向移動時,A信號相位落后B信號90°,A、B、C 3路信號的電平狀態按照S4-S5-S6-S7-S0-S1-S2-S3-S4的順序循環變化。
圖2(a)中顯示了光柵正向移動時的情況,圖2(b)中顯示了光柵反向移動時的情況。

圖2 光柵移動和受到脈沖干擾時狀態變化圖
由以上分析可知,通過對電平狀態變化的次數進行計數可得到光柵移動的距離,根據電平狀態的變化順序可以得到光柵移動的方向。可以設計一個模塊,當A、B、C信號的電平狀態按照S7-S6-S5-S4-S3-S2-S1-S0-S7順序變化一次表示光柵正向移動1/8柵距,此時輸出一個計數脈沖,方向信號置1;當A、B、C信號的電平狀態按照 S0-S1-S2-S3-S4-S5-S6-S7-S0順序變化一次表示光柵反向移動1/8柵距,此時輸出一個計數脈沖,方向信號置0;當A、B、C不改變時表示光柵移動不到1/8柵距,不輸出計數脈沖,方向信號保持不變。當光柵受到脈沖干擾時:在S5狀態比沒有干擾的情況多了一次“111-101-111”狀態變化,計數器將進行一次“加1”和一次“減1”操作,計數值不受脈沖干擾的影響;在S3狀態比沒有干擾的情況多了一次“010-000-010”狀態變化,由于這兩次變化均不在前文所述的狀態變化順序里,計數器將不進行操作,計數值不受脈沖干擾的影響。
通過以上分析,可以在FPGA中設計一個Mealy型狀態機,根據A、B、C的電平狀態決定輸出計數脈沖和方向信號[5],其狀態圖如圖3所示,initial表示初始狀態,S0、S1、S2、S3、S4、S5、S6、S7分別為 Mealy 型狀態機的8個狀態;兩個狀態間的連線和箭頭表示狀態的變化方向,當連線的起點和終點都在同一個狀態上時,表示狀態不發生改變;連線一側的數字由兩部分組成,如001/11,斜線上面的部分是導致狀態改變的A、B、C信號的輸入值,斜線下面的部分是輸出的計數脈沖cnt和方向信號direct,X表示輸出的值不發生改變。

圖3 Mealy狀態機的狀態圖
根據圖3所示的狀態圖,以VHDL語言編程,用QuartusⅡ進行仿真得到如圖4所示的波形。在每次有效狀態變化的下一個時鐘周期輸出一個計數脈沖,同時方向信號也發生相應的改變;如果發生的是非有效狀態變化,不輸出計數脈沖,方向信號保持不變。

圖4 光柵8細分和辨向仿真圖
根據細分模塊輸出的計數脈沖和方向信號,需要設計一個雙向的可逆計數器來完成光柵細分后的計數。由于對于不同的光柵計數最大值可能不相同,所以在計數器模塊中需要添加一個可以改變的計數最大值,當計數器正向計數到最大值時,繼續進行加計數將會返回零;當計數器反向計數到零時,繼續減計數將會返回設定的最大值。
光柵8細分模塊和計數模塊構成的總體模塊圖如圖5所示,該模塊的總體仿真結果如圖6所示。為提高細分和計數的精度,8細分模塊和計數模塊要求同步時鐘的頻率比較高,然而當直接使用比較高頻率的時鐘信號時,高頻率時鐘信號可能會對外圍電路產生干擾,為避免這種干擾,可以采用頻率比較低的時鐘源信號,通過FPGA內部的鎖相環電路(PPL)進行倍頻后使用[6]。

光柵信號在受到干擾時,會產生尖峰脈沖,經過前面的預處理電路后,可能會出現信號脈沖的跳變,這種信號脈沖跳變會給計數帶來影響,使測量的誤差較大。當采用經典的計數方法對輸入信號的上升沿和下降沿進行計數時,每產生一個尖峰脈沖都會使得計數值額外增加或者減少1,并且無法避免這樣的誤差。
圖7為光柵輸出信號受到尖峰脈沖干擾時,輸出計數值的情況。圖中共模擬了5處脈沖干擾,這些脈沖干擾可以分為兩類,一類脈沖干擾對計數器不產生影響,另外一類脈沖干擾使計數器產生額外的加和減操作,但是對計數值結果不產生影響。

設計中所用的計數方法可以消除由于脈沖干擾產生的計數誤差。當光柵的輸出信號在沒有受到干擾時,從S6狀態到S4狀態計數器應該進行兩次“加1”的操作,計數值增加2。在此過程中由于受到兩次脈沖干擾,信號的狀態變化為:101-111-011-111-110-101-110,根據前文所述的細分和計數方法,計數器分別進行的操作為:“加 1”、“無計數”、“無計數”、“加1”、“無計數”、“無計數”,計數值增加2。當光柵的輸出信號在沒有受到干擾時,從S3狀態到S1狀態計數器應該進行兩次“加1”的操作,計數值增加2。在此過程中由于受到3次脈沖干擾,信號的狀態變化為:010-110-010-011-010-011-001-011-001,根據前文所述的細分和計數方法,計數器分別進行的操作為:“減1”、“加1”、“加1”、“減1”、“加1”、“加1”、“減1”、“加1”,計數器累加后,計數值增加2。通過以上分析可以發現,當光柵信號受到干擾產生脈沖跳變時,采用設計中的方法會通過“不進行計數操作”或者進行一次成對的“加1”和“減1”操作來保證計數值的準確,消除由于脈沖干擾而產生的計數誤差。
該設計先將光柵的正余弦兩路信號,經過絕對值電路和比較電路得到3路方波信號,通過VHDL描述的Mealy型狀態機,對3路信號的狀態變化和狀態改變順序進行處理,從而輸出計數脈沖和方向信號,完成對光柵莫爾條紋的8細分和辨向。傳統的計數方法在有尖峰脈沖干擾時會有較大誤差,為避免這種干擾對計數值的影響,設計利用一種改進的計數方法來實現細分計數,從而提高了細分和計數的精度。
[1]朱應時.圓光柵的高精度高質量莫爾條紋信號的研究[J].計量學報,1995,16(4):280 -285,296.
[2]張善鍾.計量光柵計數[M].北京:機械工業出版社,1985.
[3]呂孟軍.光柵莫爾條紋電子學細分技術研究[D].南京:南京航空航天大學,2008.
[4]唐暉,葉險峰,李向軍.一種基于FPGA的光柵莫爾條紋數字細分技術[J].計量技術,2006(10):14-17.
[5]潘松,黃繼業.EDA技術實用教程[M].2版.北京:科學出版社,2005.
[6]陳興文,劉燕.基于FPGA技術消除光電編碼器抖動干擾的設計[J].設計與研究,2005(2):33-34.
Moore Stripes Subdivision and the Differentiation of Direction Based on Mealy State Machine
QIU Jiahua,HU Yi
(School of Instrument Science and Opto-electronic Engineering,Hefei University of Technology,Hefei 230009,China)
This article describes a way of Moore stripes subdivision and the differentiation of direction based on the Mealy state machine and described by the VHDL language.By this method,the state machine judges the change of the grating signal of the pre-processed circuit and then outputs the count pulse and direction signal.By an improved counting method the effect of the peak interference pulse on the count is avoided and the accuracy of the subdivision and counting is improved.
moore stripes;subdivide with differentiation toward;VHDL;Mealy state machine;pulse interference
TN29
A
1007-7820(2012)08-067-03
2012-03-04
邱葭華(1986—),男,碩士研究生。研究方向:精密測試技術及儀器。