摘 要: 介紹了一種基于FPGA" title="FPGA">FPGA的新型絕對式編碼器" title="絕對式編碼器">絕對式編碼器。利用FPGA和硬件描述語言" title="硬件描述語言">硬件描述語言,采用自頂向下的設計方法,實現(xiàn)了辨向模塊、串/并轉換模塊、查表譯碼模塊以及NiosⅡ軟核CPU等功能模塊的設計,以及絕對位置的準確測量。該編碼器具有結構緊湊、集成度高的優(yōu)點,以適應工程上對絕對式編碼器小型化的要求。
關鍵詞: 絕對式編碼器 FPGA 硬件描述語言
隨著制造業(yè)和自動化技術的迅速發(fā)展,編碼器作為一種融合數(shù)字技術的精密測角裝置已被廣泛應用于數(shù)控機床、機器人、自動化儀表等領域。編碼器將機械運動中的角度、位移、轉速等物理量轉變成數(shù)字信號輸出,因此將它與數(shù)字信號處理技術、計算機技術相結合,可實現(xiàn)快速、及時、準確的位置檢測與控制。根據(jù)形成代碼方式的不同,編碼器可分為增量式和絕對式兩類。傳統(tǒng)絕對式編碼器如果要反映2n精度,其碼盤上至少要有n道碼道,每道對應于一個讀碼元件。這種結構比較復雜,制作困難,碼盤徑向尺寸較大,難以實現(xiàn)小型化、集成化,成為絕對式編碼器進一步發(fā)展的障礙[1~4]。本文介紹一種新型絕對式編碼器,采用一個光敏元件讀取單圈串行編碼碼道,采用兩個光敏元件讀取同步碼道獲得辨向信息,并且利用FPGA器件來實現(xiàn)辨向和譯碼,從而獲得位置信息。該編碼器可以實現(xiàn)絕對位置的準確測量,具有結構緊湊、集成度高的優(yōu)點,為絕對式編碼器的小型化開辟了一條有效的途徑。
1 基于FPGA的系統(tǒng)總體方案設計
本文實現(xiàn)了10位絕對式編碼器,在碼盤的圓周上有1024個編碼位置。與傳統(tǒng)絕對式編碼器不同,碼盤上只有兩個碼道。內(nèi)圈為編碼碼道,由1024個透光或遮光的窗口組成,透光窗口用1來表示,遮光窗口用0來表示;采用一個光敏元件串行讀取編碼碼道來獲得惟一的絕對位置編碼,絕對位置編碼由相鄰的10個編碼位置上的二值信息組成;編碼碼道的布置方式既可以通過計算機編程的方法尋找,也可以通過對m序列進行適當?shù)奶幚韥慝@得。碼盤的外圈為同步碼道,由相對于每一個編碼位置的透光窗口組成;在同步碼道上設置兩個光敏元件,其中一路作為同步信號觸發(fā)編碼碼道上的光敏元件讀碼,兩路信號結合起來用于判斷碼盤的旋轉方向。
新型絕對式編碼器系統(tǒng)結構如圖1所示。編碼碼道上的二值信息經(jīng)光敏元件串行讀入后,送入串/并轉換模塊中的10位雙向移位寄存器,移位寄存器根據(jù)編碼器的旋轉方向進行移位,串/并轉換模塊輸出的絕對位置編碼經(jīng)過譯碼后就可以實現(xiàn)絕對位置測量。圖1中虛線框起來的部分在一片F(xiàn)PGA芯片上實現(xiàn),選擇了Altera公司Cyclone" title="Cyclone">Cyclone系列的EP1C12Q240C8" title="EP1C12Q240C8">EP1C12Q240C8芯片。
根據(jù)編碼器絕對位置測量的需要,在FPGA系統(tǒng)電路總體設計時,主要考慮完成辨向、串/并轉換、譯碼和顯示等功能。系統(tǒng)頂層原理圖如圖2所示,分為辨向、串/并轉換、譯碼和NiosⅡ處理器軟核四大模塊,其中每個模塊又由一系列功能單元和子模塊組成。
2 FPGA內(nèi)部各功能模塊設計
2.1 辨向模塊
在碼盤同步碼道上設置的兩個光敏元件輸出兩路方波信號(a信號和b信號),周期均為T,在安裝時保證相位差為90°。圖3給出了碼盤在換向旋轉時a、b信號的波形圖,在a信號的上升沿采集b信號,就可以判斷碼盤的旋轉方向。當碼盤按逆時針方向旋轉時,a信號比b信號超前,在a信號的上升沿時b信號為0;當碼盤按順時針方向旋轉時,a信號比b信號滯后,在a信號的上升沿時b信號為1。利用VHDL編程實現(xiàn)辨向模塊的設計。
2.2 串/并轉換模塊
編碼碼道上光敏元件串行輸出包含絕對位置編碼信息的信號,而譯碼模塊需要的是10位并行絕對位置二進制碼,利用VHDL語言設計了10位雙向移位寄存器實現(xiàn)串/并轉換,具有清零、左移、右移、并行置數(shù)等功能。如圖2所示,移位寄存器的時鐘信號CLK采用同步碼道上光敏元件輸出的a信號,串行輸入信號SI是編碼碼道上光敏元件輸出信號incode;方向信號DIR是辨向模塊的輸出信號DIROUT,碼盤逆時針旋轉時DIR為高電平,移位寄存器右移,碼盤順時針旋轉時DIR為低電平,移位寄存器左移;其他控制信號CE、CLR、SET和LOAD均由NiosⅡ處理器軟核控制,均設置為高電平有效;串/并轉換模塊的輸出信號DATAOUT[9..0]將用作下一步查表的地址信號。
2.3 FIFO模塊
利用雙口RAM和讀寫地址模塊來實現(xiàn)FIFO模塊,其內(nèi)部模塊圖和接口信號如圖4所示。FIFO的接口信號包括寫時鐘(wr_clk)和讀時鐘(rd_clk)、與寫時鐘同步的寫有效(wen)和寫數(shù)據(jù)(wr_data)、與讀時鐘同步的讀有效(rden)和讀數(shù)據(jù)(rd_data)。為了實現(xiàn)準確的讀寫和避免FIFO上溢或下溢,還應給出與讀時鐘和寫時鐘同步的空標志(empty)和滿標志(full),以禁止讀寫操作。寫地址產(chǎn)生模塊根據(jù)寫時鐘和寫有效信號產(chǎn)生遞增的寫地址,讀地址產(chǎn)生模塊根據(jù)讀時鐘和讀有效信號產(chǎn)生遞增的讀地址。FIFO的操作如下:在寫時鐘wr_clk的上升沿,當wren有效時,將wr_data寫入雙口RAM中與寫地址對應的單元;始終將雙口RAM中與讀地址對應的數(shù)據(jù)讀到數(shù)據(jù)總線上。
2.4 譯碼模塊
將串/并轉換模塊輸出信號DATAOUT[9..0] 作為查表地址,通過查找絕對位置編碼與角度對應表實現(xiàn)絕對位置測量。配置了256KB的SRAM及2M的Flash,SRAM用來為NiosⅡ運行程序和存儲相關數(shù)據(jù),F(xiàn)lash用來存儲絕對位置編碼與角度對應表。譯碼時先以串/并轉換模塊輸出信號DATAOUT[9..0]作為地址訪問Flash,通過查表獲得所需要的那一列數(shù)據(jù),然后將它讀出并寫入FPGA的塊RAM中。存儲在Flash中的表格為10×1024×1024bit,即占用1M×10bit的空間,當讀出其中的一列時,其大小為10×1024bit。FPGA中有專門的雙口讀/寫同步片內(nèi)塊RAM,每個RAM有4096個存儲單元,本文將讀出的10×1024bit數(shù)據(jù)寫入四個塊內(nèi)RAM中,并配置成16×256bit。利用VHDL語言實現(xiàn)查表譯碼程序。
2.5 NiosⅡ軟核CPU
為了縮短開發(fā)周期且高效利用FPGA資源,系統(tǒng)采用了NiosⅡ軟核處理器。它是Altera公司推出的一款32/16位精簡指令處理器軟核,可以實現(xiàn)SOPC(System On a Programmable Chip)集成[5]。根據(jù)實際需要,考慮到系統(tǒng)的穩(wěn)定性和可擴展性,NiosⅡ軟核CPU主要包括以下幾部分:FIFO采集控制信號接口、辨向控制信號接口、譯碼控制信號接口、Flash控制器和LCD控制接口。
本文實現(xiàn)了一種基于FPGA的新型10位絕對式編碼器,應用于直流牽引電動機下刻機自動定位系統(tǒng)中。實驗結果表明:在換向器圓周上定位精度達到1mm,較好地滿足了工程實際需要。
參考文獻
1 董莉莉,熊經(jīng)武,萬秋華. 光電軸角編碼器的發(fā)展動態(tài)[J]. 光學精密工程,2000;8(2):198~202
2 湯天瑾,曹向群,林 斌. 光電軸角編碼器發(fā)展現(xiàn)狀分析及展望[J]. 光學儀器,2005;27(1):90~96
3 郁有文,常 健. 絕對碼編碼器中一種新型的編碼方法[J].儀器儀表學報,2004;25(4):541~544
4 蘇海冰,劉恩海. 單圈絕對式編碼器的研制[J]. 光學精密工程,2002;10(1):74~77
5 傅豐林. Nios軟核心嵌入式處理器設計大賽優(yōu)秀作品精選[M]. 西安:西安電子科技大學出版社,2005