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