周 鈞,張世學,凌劍勇,吳慶林
(1.中國人民解放軍92941部隊,遼寧 葫蘆島 125001;2.中國科學院 長春光學精密機械與物理研究所,吉林 長春 130033)
傳統光電編碼器采用標定光柵和指示光柵相配合產生疊柵條紋,并通過光電轉換元件實現對疊柵條紋的接收,進而實現對角度位置的測量[1-4]. 受疊柵條紋光電信號純凈度及A/D轉換精度影響,傳統角位移測量無法實現更高的測角精度和測角分辨率. 隨著現代數字圖像處理技術的發展,采用圖像識別的方法實現對光柵碼盤刻線圖案的識別,進而實現高精度、高分辨率角位移的測量[5-7]. 采用圖像識別方式,以圖像感光元陣列代替傳統的光電轉換元件,能在算法上更加靈活地實現角位移測量的計算. 在圖像式角位移測量中,高質量的圖像采集和調試系統是研究的重要部分. 為此,研制了基于FPGA+USB的高質量圖像采集系統,能夠實現對CMOS圖像探測器像素數據的采集,并通過USB傳輸到PC機上,通過VC++軟件編程,實現對所采集圖像的顯示. 經過實驗,該設計的圖像采集系統能夠準確采集并顯示圖像.
數據采集系統是圖像式光電編碼器中的核心,其功能如圖1所示. 發光元件照射光柵碼盤,光柵碼盤的圖案經過成像透鏡映射到圖像探測器上. 圖像探測器的像素數據通過LVDS總線傳輸到采集卡,采集卡通過USB數據線,將圖像傳輸到計算機中,在計算機軟件中實現圖像顯示.

圖1 數據采集系統原理
光柵碼盤上的編碼刻線如圖2所示. 編碼刻線為等寬、等間距的2n條透光的刻線,均勻地分布在光柵碼盤的圓周. 在采集刻線圖案時,為了提高圖像傳輸速度,精簡數據傳輸數量,設置圖像探測器開窗大小為3像素×1 280像素. 根據圖2,所采集的圖像中,橫向包含4條光柵碼盤的編碼刻線.

圖2 圖像探測器開窗原理
數據采集卡通過SPI總線向圖像探測器傳輸開窗指令及CMOS圖像探測器的初始化控制指令,該指令可以參見CMOS芯片的數據手冊[8].
圖像采集系統需要準確實現對編碼刻線的圖像采集,并將圖像傳入計算機,計算機進行角位移測量識別,并完成圖像式編碼器的調試.
為實現圖像數據采集,所設計的數據采集卡的硬件電路包含:LVDS數據接收模塊、SPI指令控制模塊、RAM數據存儲模塊和USB輸出傳輸模塊,如圖3所示.

圖3 采集系統硬件原理
所有模塊都在FPGA芯片XC3S400中設計實現,XC3S400芯片擁有4×105個可編程門陣列和4個DCM模塊,其最大I/O口數量為264個,每個I/O最高數據傳輸速度達到622+Mb/s. FPGA芯片對USB芯片進行各類信號的輸出,包括讀寫控制信號、使能信號和數據信號等.
圖像探測器的LVDS總線包含:CLKOUT時鐘信號、SYNC同步信號、DOUT0~DOUT3數據信號. 傳輸時,數據接收模塊同時判斷CLKOUT的上升沿和下降沿,并在每個邊沿處鎖存SYNC同步信號和DOUT0~DOUT3數據信號. 每鎖存10位即為1個完整的灰度數據. 其中SYNC傳輸的是同步數據,其數值可以是:幀開始、幀結束、行開始、行結束、像素有效數據、圖像綜合等待等標志信號. 數據接收模塊通過判斷SYNC所傳輸的數值為:幀開始、幀結束、行開始、行結束和像素有效數據為有效的同步信號,此時將DOUT0~DOUT3傳輸的有效灰度數據信號按順序存入RAM數據存儲模塊.
USB輸出傳輸模塊將有效像素數據從RAM中按照順序讀出,將數據發送到CY68013A. 在CY68013A芯片內部集成了增強型的51內核,并向下與標準的8051指令集兼容. CY68013A芯片中集成了串行接口引擎,使其能夠實現大部分USB2.0協議下數據處理,因此,USB協議處理的工作量被大大減少了,同時,該芯片提供了4 kB存儲空間的FIFO,保證了高速的數據傳輸. CY7C68013芯片具有3種數據傳輸模式:端口數據傳輸模式、GPIF數據傳輸模式和Slave FIFO數據傳輸模式[9-10]. 本系統采用基于Slave FIFO數據傳輸工作模式,不需要系統CPU參與,從而提高了系統數據傳輸效率. 本系統通過FPGA芯片控制所有USB芯片的控制引腳. 當向CY7C68013芯片進行信號讀/寫操作時,需要根據芯片IFCLK引腳輸出的時鐘,向FD引腳發送數據. 每個IFCLK時鐘周期鎖存1次數據.
在USB傳輸中,FPGA將4個數據(16 bit)編為1組數據,每個16 bit數據包含1個10位的有效數據,每組數據包含:字頭、像素位置、像素灰度和校驗數據. 其中,校驗數據由像素位置和像素灰度數據的異或運算得出. FPGA每 512個數據寫入CY7C68013的FIFO中,CY7C68013就開始1次USB傳輸.
CY7C68013芯片的IFCLK時鐘最大為40 MHz,傳輸1組數據的時鐘為10 MHz. 傳輸3像素×1 280像素灰度值的頻率為2.6 kHz. 因此,所設計的采集系統最大傳輸幀頻為2.6 kHz.
系統上位機軟件通過VC++代碼編寫實現,軟件主要功能包括:
1)對CY7C68013芯片的程序下載;
2)圖像數據接收;
3)數據參量現實;
4)通過枚舉法篩選出鏈接到上位計算機上的USB芯片;
5)當判斷EEPROM處于無程序狀態,軟件將控制上位機對芯片燒寫固件程序. VC++軟件編寫的上位機采集軟件界面如圖4所示.

圖4 計算機軟件界面
圖4中包括:指示燈、圖像顯示、狀態顯示和控制按鈕. 其中,圖像顯示用來顯示接收的圖像信息,便于調試;狀態顯示和指示燈顯示軟件的當前運行狀態;控制按鈕用來執行指令操作.
傳輸時VC++軟件接收流程如圖5所示.

圖5 軟件流程圖
CY7C68013A芯片每個傳輸時,向上位機傳輸512個數據. VC++軟件開啟USB,每次接收512個數據后進行字頭判斷;當第i個數據是字頭時,那么i+1和i+2個數據分別為像素位置和像素灰度值;如果第i+3個數據的校驗正確,軟件將實現該像素位置的灰度值顯示;依次循環,直到實現3像素×1 280像素的顯示.
采集電路實物圖如圖6所示. 包括:LVDS接口、FPGA芯片、USB芯片. 圖6中LVDS接口通過DB9連接器連接到FPGA芯片中,FPGA芯片與USB芯片連接.
采用圖6中的采集卡對某圖像式光電編碼器進行圖像采集,采集到的圖案如圖7所示,可以看出,圖7中圖像較為清晰,沒有采集噪點,滿足圖像式編碼器調試使用要求.

圖6 電路板實物圖

圖7 采集的圖案
為滿足圖像式光電編碼器的設計需要,設計了基于FPGA+USB的圖像式角位移測量數據處理系統. 該系統采用FPGA芯片實現對CMOS圖像探測器的圖像采集,并通過USB芯片CY7C68013A傳輸到上位計算機中,在計算機中通過VC++軟件實現對圖像的接收和顯示工作. 經過測試,所設計的采集系統滿足圖像式編碼器的調試使用需求.