摘 要:CMOS型傳感器比傳統(tǒng)的CCD型傳感器具有諸多優(yōu)勢,基于CMOS型傳感器的圖像系統(tǒng)已成為研究和開發(fā)的重點。設計一種以FPGA為核心控制芯片、基于USB接口和ADCS1121 CMOS型單色圖像傳感器的圖像采集系統(tǒng)。介紹系統(tǒng)的構成及其硬件設計方法,給出USB固件程序、設備驅動程序及用戶應用程序的實現(xiàn)方法。
關鍵詞:CMOS圖像傳感器;圖像采集;USB;傳輸控制
中圖分類號:TN386 文獻標識碼:B
文章編號:1004-373X(2008)06-186-03
Design of Image Acquisition System Based on CMOS Image Sensor
DU Jiang LIN Huizhen2,HU Dongliang2
(1.Zhuhai Sanet Technology Co.Ltd.,Zhuhai,519000,China;2.Naval University of Engineering,Wuhan,430033,China)
Abstract:CMOS sensor has many advantages than traditional CCD sensor,the image system based on CMOS has became a hotspot in research and development.A image acquisition system based on USB and ADCS1121 CMOS homochromatic image sensor is designed here.The hardware of system is analyzed in detail,the program of USB interface controller and CMOS sensor driver and application software are described.Realization of USB firmware program,equipment driving program and application program are given.
Keywords:CMOS image sensor;image acquisition;USB;transmission control
1 引 言
CMOS型傳感器的象素間距急速減小,已接近于CCD型傳感器的水平,而在較小的幾何結構內可以集成時序和控制電路、緩沖放大器、A/D轉換器、信號處理模塊等。雖然與傳統(tǒng)的CCD型傳感器相比,CMOS型傳感器的圖像噪聲偏大,但功耗低、成本低、體積小、集成度高、分辨率已接近CCD型傳感器水平的優(yōu)點,使其在圖像系統(tǒng)設計中得到廣泛的應用。本文設計了一個基于USB 2.0和CMOS型傳感器的高速圖像采集系統(tǒng),具有體積小,開發(fā)方便的優(yōu)點,可以應用于指紋檢測、安全監(jiān)控等領域,也可作為圖像配準的實驗平臺。
2 系統(tǒng)設計
2.1 系統(tǒng)構成
系統(tǒng)構成框圖如圖1所示。主要包括CMOS圖像傳感器、FPGA控制芯片及USB接口芯片,另外還有電源芯片。
在本文中,傳感器芯片選用安捷倫公司的APS單色圖像傳感器ADCS-1121,該芯片具有噪聲低、動態(tài)范圍大、靈敏度及分辨率高等特點。其主要技術指標如表1所示??刂菩酒捎肵ILINX公司的SPARTANII系列FPGA XC2S50-TQ144,約有5萬個邏輯門,接口電平可配置。
在系統(tǒng)工作時,首先由FPGA驅動CMOS圖像傳感器工作,傳感器輸出8位數(shù)字信號,經過FPGA時加幀同步信號后,由USB接口芯片CY7C68013上傳到計算機處理。
2.2 硬件設計
2.2.1 圖像傳感器驅動
圖像傳感器驅動主要完成CMOS傳感器的初始化、工作模式配置。ADCS-1121的驅動是通過I2C總線對其內部的24個寄存器進行配置實現(xiàn),工作幀頻為30幀/s。外圍電路的連接示意圖如圖2所示。
ADCS-1121的工作過程可分為復位、曝光以及讀出。曝光時間由寄存器里的計數(shù)值進行設置,實際時間為計數(shù)值與最小時鐘周期(30 MHz時鐘)的乘積。由于配置寄存器時需要通過I2C總線(SDATA_TxD和SCLK_RxD)往寄存器寫入數(shù)據(jù),因此需要注意傳送數(shù)據(jù)前,要先送出器件地址標識和片內寄存器地址,本系統(tǒng)中7位地址標識為“1010101”,R/W位設置為“0”,當數(shù)據(jù)傳送成功時,系統(tǒng)返回的ACK信號應把SDA線拉低。
在圖2中DRDY為象素輸出同步信號;nROW為行同步信號;nFRAME為幀同步信號;nRST為復位信號;D0~D7為輸出的數(shù)據(jù)。圖3所示是這些信號者間的簡單邏輯關系,DATA為輸出數(shù)據(jù)。
nFRAME與nROW類似,圖3中沒有給出。當?shù)?行的第1個象素讀出時,nROW和nFRAME均拉低,直到最后一個象素(對nROW是行,對nFRAME是幀)讀出后,兩者均變?yōu)楦唠娖?。需要注意的是,復位時鐘nRST需要40個周期以上的保持時間。另外,在上電配置中,為了保證配置正確,可以在FPGA內插入延遲程序,在上電后延遲5 ms后再向CMOS傳感器輸出配置信號。
2.2.2 傳輸控制
傳輸控制主要完成數(shù)據(jù)同步信號的添加及對USB接口的控制。系統(tǒng)設計中USB芯片選用Cypress公司的CY7C68013,該芯片開發(fā)簡單、資源豐富。需要注意的是IFCLK端在采用外部時鐘時,只支持5~48 MHz的時鐘,同時RESERVED端必須下拉到地。在不考慮功耗時,WU端可以通過一個上拉電阻接到3.3 V電源。
CMOS傳感器輸出8 b的數(shù)字信號,直接送進FPGA,由于采用同步設計沒有考慮采用緩存,因此,需要實時地在數(shù)據(jù)流中插入幀同步碼。
利用傳感器輸出的DRDY和nFrame信號作為約束,插入同步碼。DRDY有效輸出時周期為300 ns,由于DRDY對應每個讀出的象素,因此,如果直接用于USB的寫FIFO操作,則每幀會占用8個字節(jié)的同步碼,造成丟失數(shù)據(jù)。在FPGA里可以采用外部高速的30 MHz時鐘同步,產生一個新的時鐘USB_CLK,即在DRDY后面伸長出8個時鐘,整個圖像延遲8個DRDY周期,如圖4所示。這樣,通過FPGA內部設置一個8B的FIFO,既保證了同步碼的嵌入又不影響對USB內部的slave FIFO進行寫入操作。
2.3 軟件設計
軟件包括USB固件程序、驅動程序以及用戶應用程序。
2.3.1 EZ-USB FX2固件
固件是能否令圖像傳感器正常工作及USB進行正常通信的關鍵。他的主要功能包括:接受并處理USB驅動程序的請求及應用程序的控制指令,控制USB接口芯片與主機間的通信,根據(jù)應用程序要求正確設置圖像傳感器寄存器。設計中需要編寫EZUSB的固件。CYPRESS公司提供的Development Kits里提供了豐富的資源,利用EZ USB-FX2固件框架可以簡化和加速開發(fā)基于EZ-USB FX2的外圍設備。固件框架里提供了現(xiàn)成的源代碼,主要包括初始化、處理設備請求以及USB掛起電源管理,只需用戶編寫USB描述符以及外設功能代碼即可。固件框流程圖如圖5所示。
2.3.2 驅動程序
在操作系統(tǒng)中通過運行內核層的驅動程序才能控制硬件。Windows應用環(huán)境下的USB設備驅動程序可以通過WinDriver,Driver Studio等工具開發(fā)。而Cypress公司的開發(fā)工具在安裝路徑下的Driver文件夾里提供了簡單的驅動程序。對于本文所設計的系統(tǒng),這種驅動程序可以直接使用,能夠滿足需要。值得注意的是,在使用這個驅動程序時,由于ezusbsys.c文件里管道最大傳輸字節(jié)數(shù)只有64 000,所以應用程序里緩存區(qū)不能超過64 000;如果需要開辟大緩存,可以用Windows DDK生成新的驅動。
2.3.3 應用程序
應用程序用Visual C++完成。對于USB設備控制,只需要2個函數(shù):DeviceIoControl 和CreateFile。
由CreateFile得到句柄,通過DeviceIoControl實現(xiàn)預定的操作。以傳輸64 000個數(shù)據(jù)為例,核心代碼為:
DWORDinPacketSize;
// 定義接收緩沖
BYTE * inBuffer = new BYTE[MEM_SIZE];
Memset (inBuffer,0,MEM_SIZE);
BULK_TRANSFER_CONTROLbulkControl;
BOOLEANbResult = FALSE;
intnBytes = 0;
// ENDPOINT8 IN
bulkControl.pipeNum=3;
inPacketSize=64000;
bResult = DeviceIoControl
( hDevice,IOCTL_EZUSB_BULK_READ,
bulkControl,
Sizeof ( BULK_TRANSFER_CONTROL ),
inBuffer,inPacketSize,
(unsigned long *)nBytes,
NULL
);
通過指針inBuffer,可以對上傳的數(shù)據(jù)進行捕獲幀同步、濾波、顯示等后處理。
3 結 語
基于USB和CMOS傳感器的圖像系統(tǒng)體積小、重量輕、功耗低,可以有效地在指紋檢測、條形碼檢測、安全監(jiān)控等場合得到應用,而USB2.0的傳輸方式能快速地將數(shù)字圖像信號上傳,可以滿足這些場合的實時性的要求。
參考文獻
[1]潘銀松,袁祥輝,林聚承,等.CMOS數(shù)字圖像傳感器研究進展[J].重慶大學學報:自然科學版,2005,28(9):16-18.
[2]江川貴,廖啟征,魏世民.基于CMOS圖像傳感器的USB接口圖像采集系統(tǒng)設計[J].儀表技術,2005(3):18-20.
[3]李杰,劉金國,王英霞,等.CMOS有源圖像傳感器的最新研究進展[J].傳感器技術,2005,24(1):7-8.
[4]錢峰.EZ-USB FX2單片機原理、編程及應用[M].北京:北京航空航天大學出版社,2006.
[5]余國華,馮啟明.基于CMOS圖像傳感器的視頻采集系統(tǒng)設計[J].武漢理工大學學報:交通科學與工程版,2004,28(1):145-147.
作者簡介 杜 江 男,工程師。研究方向為電子工程。