周光宇 程萍
摘 要: 針對傳統(tǒng)的工業(yè)相機成本高昂、靈活性差的缺點,設(shè)計了基于FPGA的CMOS工業(yè)相機。在分析工業(yè)相機原理的基礎(chǔ)上設(shè)計了CMOS工業(yè)相機的硬件電路,利用FPGA配置圖像傳感器并采集圖像數(shù)據(jù),然后在FPGA中緩存處理,最后通過Camera Link接口輸出圖像數(shù)據(jù)。仿真結(jié)果顯示,該相機可以以20 f/s的幀頻輸出960P的圖像數(shù)據(jù),同時該相機可穩(wěn)定連續(xù)工作,相機可將圖像處理算法移植進來,有著較好的靈活性。
關(guān)鍵詞: 工業(yè)相機; 圖像傳感器; 可編程邏輯門陣列; Camera Link接口
中圖分類號: TN409?34 文獻標(biāo)識碼: A 文章編號: 1004?373X(2017)22?0134?03
Abstract: The traditional industrial camera has the characteristics of expensive cost and poor flexibility, so a CMOS industrial camera based on FPGA is designed. The hardware circuit of the CMOS industrial camera was designed on the basis of the analysis of the industrial camera′s principle. The FPGA is used to configure the image sensor, acquire the image data and conduct buffer processing of the data in FPGA. The image data is output through the Camera Link interface. The simulation results show that the camera can output the image data (960 pixel) with the frequency of 20 f/s, work stably and continuously, and transplant the image processing algorithm into it, which has perfect flexibility.
Keywords: industrial camera; image sensor; FPGA; Camera Link interface
機器視覺不再僅僅替代人眼獲取圖像,更具有人的大腦提取、處理信息的功能。相機在機器視覺技術(shù)中扮演著眼睛的作用,它不僅直接決定所采集到的圖像分辨率、圖像質(zhì)量等,同時也與整個系統(tǒng)的運行模式直接相關(guān)[1]。傳統(tǒng)的工業(yè)相機是由專用的集成芯片控制圖像傳感器完成光電轉(zhuǎn)換后將數(shù)據(jù)傳輸?shù)接嬎銠C中,成本高且靈活性差[2]。20世紀(jì)80年代,F(xiàn)PGA技術(shù)的引入為數(shù)字邏輯設(shè)計開創(chuàng)了新的可行性,F(xiàn)PGA同時具備了硬件的并行性及軟件的靈活性[3]。由于FPGA可編程邏輯的容量大、靈活性強擊并行處理能力和內(nèi)嵌DSP多模塊等特點,本文設(shè)計了一款基于FPGA的CMOS工業(yè)相機,實現(xiàn)了圖像采集及數(shù)據(jù)傳輸?shù)墓δ堋?/p>
1 系統(tǒng)總體設(shè)計
本相機主要包括四部分:圖像傳感器模塊、FPGA核心控制模塊、Camera Link接口電路以及SRAM存儲器模塊,系統(tǒng)結(jié)構(gòu)如圖1所示。上位機通過Camera Link接口電路中的串口通信將相機的工作參數(shù)及命令輸出給FPGA,F(xiàn)PGA按接收到的命令控制圖像傳感器并采集圖像,采集到的圖像數(shù)據(jù)傳輸至FPGA中按行緩存,最后通過Camera Link接口輸出到上位機中。
2 相機硬件電路設(shè)計
2.1 圖像傳感器外圍電路設(shè)計
采用安森美半導(dǎo)體公司的MT9M034圖像傳感器。MT9M034是一款1/3.0英寸,1 280×960有源像素陣列的CMOS數(shù)字圖像傳感器,可以產(chǎn)生清晰,銳利的數(shù)字圖像。在線性模式下,每個像素時鐘下可并行輸出12位原始數(shù)據(jù),可同時輸出線和幀信號,相機還可通過外部觸發(fā)信號工作[4]。MT9M034圖像傳感器共需要5種供電,分別為像素電源2.8 V、模擬電源2.8 V、I/O電源1.8 V、核心電源1.8 V和PLL電源2.8 V。供電電源要充分解耦。設(shè)計時數(shù)字部分和模擬部分要分開。
2.2 Camera Link電路設(shè)計
Channel Link由一對驅(qū)動器和接收器組成。驅(qū)動器接收28位單端數(shù)據(jù)信號和一位單端時鐘。驅(qū)動器總共驅(qū)動5條LVDS數(shù)據(jù)流,包括以7∶1方式串行化的4條LVDS數(shù)據(jù)流和1個專用的時鐘傳輸通道。接收器接收4路LVDS數(shù)據(jù)信號和1路LVDS時鐘信號,將數(shù)據(jù)流轉(zhuǎn)換回28位的CMOS/TTL并行數(shù)據(jù)和一位時鐘[5]。電路結(jié)構(gòu)如圖2所示,相機與FPGA之間分別由差分信號驅(qū)動器DS90CR287、接收器DS90LV048、驅(qū)動接收器DS90LV019轉(zhuǎn)換。FPGA的輸入輸出信號經(jīng)過轉(zhuǎn)換以后連接到MDR26連接器上,在差分信號之間要100 Ω的差分阻抗。
3 相機軟件設(shè)計
3.1 相機控制模塊
在本設(shè)計中FPGA為主設(shè)備,圖像傳感器為從設(shè)備。FPGA產(chǎn)生時鐘(SCLK),輸入到圖像傳感器以同步傳輸,數(shù)據(jù)(SDATA)在FPGA與圖像傳感器之間雙向傳輸。SDATA上拉1.5 kΩ電阻到VDD_IO[6]。I2C接口總線定義傳輸代碼如圖3所示。
Start bit是起始位,Slave Address是器件地址,包括7個地址位和1個方向位,最低有效位為“0”時表示寫模式,為“1”時表示讀模式;ACK/NoACK是應(yīng)答位,每一個被傳送的字節(jié)后面都跟隨1位應(yīng)答位;8 b Message是數(shù)據(jù),每次傳送8位數(shù)據(jù),其后是應(yīng)答位;Stop bit是停止位,時鐘線為高電平,數(shù)據(jù)線由低電平變?yōu)楦唠娖綍r有效[7]。endprint
相機控制模塊主要是對圖像的尺寸,輸出時鐘頻率自動曝光,增益和積分時間等寄存器進行了相應(yīng)的設(shè)置。I2C 控制模塊主要對 SCLK 和 SDATA 按照標(biāo)準(zhǔn)控制來進行寄存器的讀/寫。I2C總線仿真圖如圖4所示。
3.2 串口通信模塊
串口通信模塊用于設(shè)置相機的控制參數(shù),主要有圖像的尺寸、積分時間和增益。
(1) 波特率產(chǎn)生器。根據(jù)過采樣采集原理,要產(chǎn)生一個為UART傳輸波特率的16倍的采樣頻率[8]。對于9 600 b/s波特率而言,采樣頻率應(yīng)為153 600。系統(tǒng)時鐘為50 MHz,波特率產(chǎn)生器需要模為326的計數(shù)器。
(2) UART接收器/發(fā)送器。接收器包括三個狀態(tài):開始、數(shù)據(jù)傳輸和停止?fàn)顟B(tài),對應(yīng)于UART傳輸協(xié)議中的開始位、數(shù)據(jù)傳輸位、停止位。
(3) FIFO緩沖器。本設(shè)計采用FIFO(First In First Out)緩存器,F(xiàn)IFO緩沖器由FPGA中的IP核生成[9]。
UART的接收和發(fā)送子模塊結(jié)合起來,就可建立完整的UART模塊,圖5為串口通信模塊的RTL視圖,接收模塊和發(fā)送模塊共用一個波特率產(chǎn)生器。
3.3 圖像接收與輸出模塊
圖像數(shù)據(jù)采集到后,首先在FPGA內(nèi)部的RAM中進行緩存,然后再通過Camera Link接口輸出圖像數(shù)據(jù)。圖像傳感器的圖像數(shù)據(jù)輸出格式如圖6所示,當(dāng)FV為高的時候代表幀有效,LV為高的時候代表線有效,F(xiàn)V與LV同時為高時圖像數(shù)據(jù)有效。
在本設(shè)計中,圖像像素大小為1 280H×960V。圖像傳感器輸出圖像數(shù)據(jù)至FPGA后,數(shù)據(jù)緩存至雙端口RAM中。同時Camera Link驅(qū)動模塊從雙端口RAM中讀取數(shù)據(jù)輸出至差分驅(qū)動器DS90CR285。采用乒乓操作的方式,寫第1行時讀第2行,寫第2行的時候讀第1行。雙端口RAM采用不同的讀寫時鐘,寫時鐘為圖像傳感器輸出像素時鐘(PIXCLK)74.25 MHz。當(dāng)FV和LV同時有效時寫使能有效,寫地址線為12位,數(shù)據(jù)線為12位;讀時鐘為Camera Link時鐘50 MHz,采用A/B的方式輸出圖像,RAM的讀地址線為11位,數(shù)據(jù)線為24位。Camera Link輸出模塊狀態(tài)轉(zhuǎn)移示意圖見圖7。
利用DALSA圖像采集卡X64 Xcelera?CL LX1采集圖像,通過圖像采集軟件可觀察到相機的幀頻為20 f/s,圖像大小為1 280×960,可實時觀察到圖像且無卡頓。
4 結(jié) 論
本文設(shè)計的基于FPGA的CMOS工業(yè)相機以FPGA為核心控制器,通過I2C總線配置CMOS圖像傳感器MT9P034,將采集到的圖像數(shù)據(jù)在FPGA內(nèi)緩存后通過Camera Link接口輸出,同時可通過Camera Link接口修改圖像傳感器的配置參數(shù)。本相機的軟件配置都是通過FPGA進行的,可將圖像處理算法如邊緣檢測、圖像濾波等移植到該相機軟件中,具有較高的實用性。
參考文獻
[1] 黃釘勁,李飛,楊爽,等.高速Camera Link工業(yè)相機視頻采集研究[J].價值工程,2015(4):43?44.
[2] 程瑤,周娜,王榮秀.基于FPGA的線陣型CCD驅(qū)動電路設(shè)計[J].電子器件,2017(1):82?86.
[3] 徐思燕.FPGA器件設(shè)計技術(shù)發(fā)展綜述[J].通訊世界,2015(19):223.
[4] ON Semiconductor. 1/3?inch CMOS digital image sensor MT9M034 data sheet [EB/OL]. [2012?06?27]. https://wenku.baidu.com/view/d2b67d11866fb84ae45c8dcf.html.
[5] 肖兒良,韋榮明,顏文超,等.基于Aurora及Camera Link的高速數(shù)字圖像傳輸[J].信息技術(shù),2015(4):94?97.
[6] 楊龍,李范鳴,劉士建.DSP EMIF與FPGA雙口RAM高速通信實現(xiàn)[J].現(xiàn)代電子技術(shù),2014,37(13):10?12.
[7] 湯偉,劉慧忠,連鈺洋,等.基于FPGA的工業(yè)數(shù)字?jǐn)z像機系統(tǒng)的設(shè)計[J].液晶與顯示,2015(1):103?108.
[8] 劉寶軍,王中訓(xùn),婁陽,等.基于FPGA的UART設(shè)計與實現(xiàn)[J].中國集成電路,2016(6):38?41.
[9] 劉慧忠.基于FPGA的紙病檢測預(yù)處理系統(tǒng)的研究與實現(xiàn)[D].西安:陜西科技大學(xué),2015.
[10] 周光宇,劉慧忠.邊緣檢測算法的FPGA實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2015(10):271?275.endprint