周 鈞,張世學,凌劍勇,吳慶林
(1.中國人民解放軍92941部隊,遼寧 葫蘆島 125001;2.中國科學院 長春光學精密機械與物理研究所,吉林 長春 130033)
傳統(tǒng)光電編碼器采用標定光柵和指示光柵相配合產(chǎn)生疊柵條紋,并通過光電轉(zhuǎn)換元件實現(xiàn)對疊柵條紋的接收,進而實現(xiàn)對角度位置的測量[1-4]. 受疊柵條紋光電信號純凈度及A/D轉(zhuǎn)換精度影響,傳統(tǒng)角位移測量無法實現(xiàn)更高的測角精度和測角分辨率. 隨著現(xiàn)代數(shù)字圖像處理技術(shù)的發(fā)展,采用圖像識別的方法實現(xiàn)對光柵碼盤刻線圖案的識別,進而實現(xiàn)高精度、高分辨率角位移的測量[5-7]. 采用圖像識別方式,以圖像感光元陣列代替?zhèn)鹘y(tǒng)的光電轉(zhuǎn)換元件,能在算法上更加靈活地實現(xiàn)角位移測量的計算. 在圖像式角位移測量中,高質(zhì)量的圖像采集和調(diào)試系統(tǒng)是研究的重要部分. 為此,研制了基于FPGA+USB的高質(zhì)量圖像采集系統(tǒng),能夠?qū)崿F(xiàn)對CMOS圖像探測器像素數(shù)據(jù)的采集,并通過USB傳輸?shù)絇C機上,通過VC++軟件編程,實現(xiàn)對所采集圖像的顯示. 經(jīng)過實驗,該設計的圖像采集系統(tǒng)能夠準確采集并顯示圖像.
數(shù)據(jù)采集系統(tǒng)是圖像式光電編碼器中的核心,其功能如圖1所示. 發(fā)光元件照射光柵碼盤,光柵碼盤的圖案經(jīng)過成像透鏡映射到圖像探測器上. 圖像探測器的像素數(shù)據(jù)通過LVDS總線傳輸?shù)讲杉?,采集卡通過USB數(shù)據(jù)線,將圖像傳輸?shù)接嬎銠C中,在計算機軟件中實現(xiàn)圖像顯示.
圖1 數(shù)據(jù)采集系統(tǒng)原理
光柵碼盤上的編碼刻線如圖2所示. 編碼刻線為等寬、等間距的2n條透光的刻線,均勻地分布在光柵碼盤的圓周. 在采集刻線圖案時,為了提高圖像傳輸速度,精簡數(shù)據(jù)傳輸數(shù)量,設置圖像探測器開窗大小為3像素×1 280像素. 根據(jù)圖2,所采集的圖像中,橫向包含4條光柵碼盤的編碼刻線.
圖2 圖像探測器開窗原理
數(shù)據(jù)采集卡通過SPI總線向圖像探測器傳輸開窗指令及CMOS圖像探測器的初始化控制指令,該指令可以參見CMOS芯片的數(shù)據(jù)手冊[8].
圖像采集系統(tǒng)需要準確實現(xiàn)對編碼刻線的圖像采集,并將圖像傳入計算機,計算機進行角位移測量識別,并完成圖像式編碼器的調(diào)試.
為實現(xiàn)圖像數(shù)據(jù)采集,所設計的數(shù)據(jù)采集卡的硬件電路包含:LVDS數(shù)據(jù)接收模塊、SPI指令控制模塊、RAM數(shù)據(jù)存儲模塊和USB輸出傳輸模塊,如圖3所示.
圖3 采集系統(tǒng)硬件原理
所有模塊都在FPGA芯片XC3S400中設計實現(xiàn),XC3S400芯片擁有4×105個可編程門陣列和4個DCM模塊,其最大I/O口數(shù)量為264個,每個I/O最高數(shù)據(jù)傳輸速度達到622+Mb/s. FPGA芯片對USB芯片進行各類信號的輸出,包括讀寫控制信號、使能信號和數(shù)據(jù)信號等.
圖像探測器的LVDS總線包含:CLKOUT時鐘信號、SYNC同步信號、DOUT0~DOUT3數(shù)據(jù)信號. 傳輸時,數(shù)據(jù)接收模塊同時判斷CLKOUT的上升沿和下降沿,并在每個邊沿處鎖存SYNC同步信號和DOUT0~DOUT3數(shù)據(jù)信號. 每鎖存10位即為1個完整的灰度數(shù)據(jù). 其中SYNC傳輸?shù)氖峭綌?shù)據(jù),其數(shù)值可以是:幀開始、幀結(jié)束、行開始、行結(jié)束、像素有效數(shù)據(jù)、圖像綜合等待等標志信號. 數(shù)據(jù)接收模塊通過判斷SYNC所傳輸?shù)臄?shù)值為:幀開始、幀結(jié)束、行開始、行結(jié)束和像素有效數(shù)據(jù)為有效的同步信號,此時將DOUT0~DOUT3傳輸?shù)挠行Щ叶葦?shù)據(jù)信號按順序存入RAM數(shù)據(jù)存儲模塊.
USB輸出傳輸模塊將有效像素數(shù)據(jù)從RAM中按照順序讀出,將數(shù)據(jù)發(fā)送到CY68013A. 在CY68013A芯片內(nèi)部集成了增強型的51內(nèi)核,并向下與標準的8051指令集兼容. CY68013A芯片中集成了串行接口引擎,使其能夠?qū)崿F(xiàn)大部分USB2.0協(xié)議下數(shù)據(jù)處理,因此,USB協(xié)議處理的工作量被大大減少了,同時,該芯片提供了4 kB存儲空間的FIFO,保證了高速的數(shù)據(jù)傳輸. CY7C68013芯片具有3種數(shù)據(jù)傳輸模式:端口數(shù)據(jù)傳輸模式、GPIF數(shù)據(jù)傳輸模式和Slave FIFO數(shù)據(jù)傳輸模式[9-10]. 本系統(tǒng)采用基于Slave FIFO數(shù)據(jù)傳輸工作模式,不需要系統(tǒng)CPU參與,從而提高了系統(tǒng)數(shù)據(jù)傳輸效率. 本系統(tǒng)通過FPGA芯片控制所有USB芯片的控制引腳. 當向CY7C68013芯片進行信號讀/寫操作時,需要根據(jù)芯片IFCLK引腳輸出的時鐘,向FD引腳發(fā)送數(shù)據(jù). 每個IFCLK時鐘周期鎖存1次數(shù)據(jù).
在USB傳輸中,F(xiàn)PGA將4個數(shù)據(jù)(16 bit)編為1組數(shù)據(jù),每個16 bit數(shù)據(jù)包含1個10位的有效數(shù)據(jù),每組數(shù)據(jù)包含:字頭、像素位置、像素灰度和校驗數(shù)據(jù). 其中,校驗數(shù)據(jù)由像素位置和像素灰度數(shù)據(jù)的異或運算得出. FPGA每 512個數(shù)據(jù)寫入CY7C68013的FIFO中,CY7C68013就開始1次USB傳輸.
CY7C68013芯片的IFCLK時鐘最大為40 MHz,傳輸1組數(shù)據(jù)的時鐘為10 MHz. 傳輸3像素×1 280像素灰度值的頻率為2.6 kHz. 因此,所設計的采集系統(tǒng)最大傳輸幀頻為2.6 kHz.
系統(tǒng)上位機軟件通過VC++代碼編寫實現(xiàn),軟件主要功能包括:
1)對CY7C68013芯片的程序下載;
2)圖像數(shù)據(jù)接收;
3)數(shù)據(jù)參量現(xiàn)實;
4)通過枚舉法篩選出鏈接到上位計算機上的USB芯片;
5)當判斷EEPROM處于無程序狀態(tài),軟件將控制上位機對芯片燒寫固件程序. VC++軟件編寫的上位機采集軟件界面如圖4所示.
圖4 計算機軟件界面
圖4中包括:指示燈、圖像顯示、狀態(tài)顯示和控制按鈕. 其中,圖像顯示用來顯示接收的圖像信息,便于調(diào)試;狀態(tài)顯示和指示燈顯示軟件的當前運行狀態(tài);控制按鈕用來執(zhí)行指令操作.
傳輸時VC++軟件接收流程如圖5所示.
圖5 軟件流程圖
CY7C68013A芯片每個傳輸時,向上位機傳輸512個數(shù)據(jù). VC++軟件開啟USB,每次接收512個數(shù)據(jù)后進行字頭判斷;當?shù)趇個數(shù)據(jù)是字頭時,那么i+1和i+2個數(shù)據(jù)分別為像素位置和像素灰度值;如果第i+3個數(shù)據(jù)的校驗正確,軟件將實現(xiàn)該像素位置的灰度值顯示;依次循環(huán),直到實現(xiàn)3像素×1 280像素的顯示.
采集電路實物圖如圖6所示. 包括:LVDS接口、FPGA芯片、USB芯片. 圖6中LVDS接口通過DB9連接器連接到FPGA芯片中,F(xiàn)PGA芯片與USB芯片連接.
采用圖6中的采集卡對某圖像式光電編碼器進行圖像采集,采集到的圖案如圖7所示,可以看出,圖7中圖像較為清晰,沒有采集噪點,滿足圖像式編碼器調(diào)試使用要求.
圖6 電路板實物圖
圖7 采集的圖案
為滿足圖像式光電編碼器的設計需要,設計了基于FPGA+USB的圖像式角位移測量數(shù)據(jù)處理系統(tǒng). 該系統(tǒng)采用FPGA芯片實現(xiàn)對CMOS圖像探測器的圖像采集,并通過USB芯片CY7C68013A傳輸?shù)缴衔挥嬎銠C中,在計算機中通過VC++軟件實現(xiàn)對圖像的接收和顯示工作. 經(jīng)過測試,所設計的采集系統(tǒng)滿足圖像式編碼器的調(diào)試使用需求.