基于USB2.O的CMOS圖像采集系統(tǒng)的設(shè)計(jì)
O 引言
CMOS圖像傳感器與CCD圖像傳感器相比,具有功耗低、集成度高,便于采用高速的并行讀取體系等優(yōu)點(diǎn),因而在圖像傳感、天文觀測、星敏感器等領(lǐng)域得到廣泛應(yīng)用。目前圖像采集主要基于PCI總線或其他傳統(tǒng)接串并口圖像采集系統(tǒng)進(jìn)行數(shù)據(jù)傳輸,它們存在著功耗高,安裝復(fù)雜,價(jià)格昂貴等缺點(diǎn)。在實(shí)現(xiàn)對(duì)高分辨率圖像傳感器無丟失的數(shù)據(jù)傳輸過程中,USB2.O接口以其即插即用、擴(kuò)展性強(qiáng)、傳輸速度高達(dá)480Mbps等優(yōu)點(diǎn),能夠滿足快速傳送大批量數(shù)據(jù)要求。
因此,高分辨率的CMOS圖像傳感器和高速USB總線技術(shù)為圖像傳感技術(shù)的改進(jìn)應(yīng)用提供了必要的條件。解決了以往低分辨率圖像傳感器像源失真,穩(wěn)定性能差等缺點(diǎn)。本系統(tǒng)利用130萬像素CMOS圖像傳感器實(shí)現(xiàn)了圖像高速傳輸采集,其傳輸速度達(dá)到23.6MBps,能廣泛地應(yīng)用在工廠礦山等惡劣環(huán)境中。
1 系統(tǒng)硬件設(shè)計(jì)
圖像采集系統(tǒng)部分主要由光學(xué)鏡頭、CMOS圖像傳感器,USB控制器以及驅(qū)動(dòng)電路(E2PROM等)組成。圖1為硬件系統(tǒng)的總體框圖。
1.1 CMOS圖像傳感器一0V9620
系統(tǒng)選用美國Ominivision公司開發(fā)的高性能CMOS圖像傳感器0V9620作為圖像傳感芯片。0V9620集成了CMOS光感應(yīng)核,時(shí)序控制電路,A/D轉(zhuǎn)換器及SCCB(serialCamera Contro1 Bus)接口等。具有SXGA(分辨率1280×1024)和VGA(分辨率640×480)兩種模式,并可以提供15fps的SXGA或30fps的VGA動(dòng)態(tài)圖像。帶有目標(biāo)黑級(jí)校準(zhǔn)、可編程/自動(dòng)曝光、增益控制及白平衡控制功能。
0V9620具有可編程控制10bit數(shù)字視頻信號(hào)并行輸出功能,同時(shí)提供像素時(shí)鐘PCL K、行同步信號(hào)HREF及幀同步信號(hào)VSYNC,為后續(xù)USB對(duì)視頻數(shù)據(jù)的接收與傳輸提供同步控制信號(hào)。其時(shí)序圖如圖2所示。其數(shù)據(jù)輸出格式為Bayer RAW,即利用Bayer濾光陣列把輸入光信號(hào)分解成RGB三原色,每個(gè)像素僅保留一種顏色,RGB保留比例為2: 4: 2。
1.2 USB控制芯片一CY7C68013
系統(tǒng)USB主控制芯片選用的是CypreSS公司的EZ—USBFX2芯片CY7C68013,該芯片集成了增強(qiáng)型805lMCU、串行接口引擎SIE、片上RAM、4K的FIF0存儲(chǔ)器、通用可編程接口GPIF及數(shù)據(jù)/地址總線,減少了多個(gè)芯片接口部分需要時(shí)序配合的麻煩,并節(jié)省電路板空間。CY7C68013的如下特性保證了其高速(480Mb/s)傳輸特性。
(1)芯片內(nèi)有480Mb/s的收發(fā)器(PLL和智能SIE),很好的執(zhí)行了USB2.0協(xié)議,并將MCU解放出來,加快傳輸速率。
(2)具有“量子FIFO”的處理框架,并具有2、3、4倍增緩沖端點(diǎn)FIF0,解決了高速模式下帶寬問題,較好適應(yīng)USB2.0數(shù)據(jù)高速傳輸速率。
(3)內(nèi)嵌增強(qiáng)型8051內(nèi)核可運(yùn)行在48MHz的時(shí)鐘頻率下,每條指令只需4個(gè)時(shí)鐘周期,速度遠(yuǎn)高于普通805 l單片機(jī)。
1.3 圖像采集電路及實(shí)現(xiàn)
圖像采集系統(tǒng)原理圖如圖3所示,系統(tǒng)以0V9620和EZ—USB FX2為核心, 在整個(gè)采集電路中,0V9620的作用是通過感光陣列將來自透鏡的光學(xué)圖像轉(zhuǎn)換為一一對(duì)應(yīng)的數(shù)字信號(hào)DO~D9,同時(shí)為USB傳輸提供了可靠的同步時(shí)序控制脈沖;EZ—USB FX2的作用是高速傳輸數(shù)字信號(hào)到PC機(jī),同時(shí)為0V9620提供5V電源。利用片上MCU模擬I2C總線對(duì)0V9620的分辨率、對(duì)比度、亮度和曝光時(shí)間等參數(shù)進(jìn)行設(shè)置。
當(dāng)采集設(shè)備連接到上位機(jī)上后,USB功能設(shè)備以高速的模式進(jìn)行設(shè)備的識(shí)別并枚舉。下載固件,使EZ—USBFX2工作于同步S1ave FIFO模式,同步讀寫。
設(shè)計(jì)中將USB固件程序下載到EEPROM 24LC64中,上電后主芯片首先檢測I2C總線上的E2PROM,判斷如首字節(jié)是OxC2,則把固件程序從E2PROM中自動(dòng)下載到自身的RAM中并執(zhí)行,實(shí)現(xiàn)重枚舉。從而提高系統(tǒng)的便攜性能。
Slave FIFO模式為從機(jī)方式,由0V9620的時(shí)鐘信號(hào)PCLK控制CY7C68013內(nèi)部的多層緩沖FIFO進(jìn)行讀寫,從而確保了圖像采集的同步、無偏移特性。利用幀同步信號(hào)VSYNC作為圖像采集的起始同步信號(hào),當(dāng)VSYNC高電平到來以前,初始置PA7為低電平,鉗制SLWR使寫入無效,并且清空FIFO,這樣保證殘余數(shù)據(jù)清空使采集圖像不會(huì)發(fā)生偏移;當(dāng)VSYNC為高電平時(shí),標(biāo)志一幀圖像的開始,進(jìn)入中斷處理。這時(shí)置PA7為高電平,行同步信號(hào)HREF使能SLWR,寫信號(hào)有效。這樣在“量子FIF0”框架下圖像數(shù)據(jù)從該幀的第一個(gè)像素開始自動(dòng)高速地傳輸?shù)缴衔粰C(jī)中,實(shí)現(xiàn)了采集一幅完整、無偏移的圖像。
2 系統(tǒng)軟件設(shè)計(jì)
圖像采集系統(tǒng)軟件主要包括3方面的工作:USB固件程序、USB設(shè)備驅(qū)動(dòng)程序和主機(jī)應(yīng)用程序設(shè)計(jì)。
2.1 USB固件程序設(shè)計(jì)
Cypress公司為CY7C68013提供了一個(gè)固件開發(fā)框架,可以在KEIL C51環(huán)境下開發(fā)。由于開發(fā)框架的引入,從而大大縮短了用戶的研發(fā)周期。該框架由fw.c、USBJmpTb.a(chǎn)5l、dscr.a(chǎn)51、periph.c、Ezusb.1ib幾部分組成。固件程序主要完成一下幾部分功能:(1)初始化,包括對(duì)CY7C68013的端點(diǎn)配置和傳輸模式的初始化。(2)命令控制函數(shù),按照采集原理實(shí)現(xiàn)采集過程。(3)中斷處理,包括處理各種USB中斷及外部中斷。
設(shè)計(jì)中,考慮到系統(tǒng)要求高速無丟失地傳輸大量數(shù)據(jù)。因此在初始化過程中,本系統(tǒng)采用BULK傳輸方式。系統(tǒng)EP6(FIFOADR[1:0]=10)為塊傳輸IN端點(diǎn),采用總線供電,IFCLK由外部設(shè)備控制器提供(IFCONFIG=Ox43H),確保系統(tǒng)的穩(wěn)定行。其輸入選擇1 6位數(shù)據(jù)線(wORDWIDE=1)并行輸入,并設(shè)置FIF0深度位4倍緩沖,保證傳輸具有較高的寬度和深度。系統(tǒng)采用自動(dòng)打包的方式(hUTOIN=1)使外設(shè)的數(shù)據(jù)由于不需要8051的處理,直接從FIFO到SIE,有利于提高傳輸速率。而命令控制函數(shù)和中斷處理負(fù)責(zé)采集原理的實(shí)施,其程序部分代碼如下:
2.2 USB驅(qū)動(dòng)程序設(shè)計(jì)
USB設(shè)備驅(qū)動(dòng)程序在整個(gè)系統(tǒng)中相當(dāng)于設(shè)備端固件和主機(jī)應(yīng)用程序之間的紐帶。USB設(shè)備驅(qū)動(dòng)程序?qū)儆赪DM驅(qū)動(dòng)程序,其主要完成了兩個(gè)功能:第一,USB設(shè)備的添加,操作系統(tǒng)快速識(shí)別USB硬件設(shè)備;第二,處理IRP_MJ_PNP青求,建立設(shè)備端與操作系統(tǒng)之間的通訊。
編寫USB設(shè)備驅(qū)動(dòng)程序所需要的開發(fā)環(huán)境,主要包括:DDK(Drivet Oevelopment Kit,驅(qū)動(dòng)開發(fā)工具包),BUILD工具和Visua1 C++開發(fā)環(huán)境。Visual C++是包含標(biāo)準(zhǔn)編譯工具的集成開發(fā)環(huán)境,通過正確設(shè)置,其可以用來建立內(nèi)核模式的設(shè)備驅(qū)動(dòng)程序。它向用戶提供了以良好的編譯環(huán)境、方便的調(diào)試器和一些有用的工具(如rebase、guidgen等),都有助于驅(qū)動(dòng)程序的開發(fā)。因此,本系統(tǒng)系統(tǒng)采用Visual C++6.0開發(fā)工具,對(duì)USB設(shè)備驅(qū)動(dòng)程序進(jìn)行開發(fā)和調(diào)試,步驟如下:
1)設(shè)置Visual C++驅(qū)動(dòng)開環(huán)境
2)創(chuàng)建并設(shè)置一個(gè)Makefile項(xiàng)目,使處于驅(qū)動(dòng)開發(fā)環(huán)境。
3)使用當(dāng)前Makefile項(xiàng)目來開發(fā)設(shè)備驅(qū)動(dòng)程序,也可以修改通用驅(qū)動(dòng)程序(GDP),使其符合該采集系統(tǒng)要求。
4)編寫DrvBuild.Bat批處理文件。
5)調(diào)用BUILD工具,創(chuàng)建驅(qū)動(dòng)程序,安裝驅(qū)動(dòng)。
2.3 主機(jī)應(yīng)用程序設(shè)計(jì)
本系統(tǒng)在VC++6.0下調(diào)用API函數(shù)編寫上層用戶端圖像顯示程序,實(shí)現(xiàn)對(duì)USB高速傳輸,捕獲,讀寫和保存等操作。為提高采集速度,在設(shè)計(jì)用使用了多線程技術(shù),采用兩個(gè)線程完成圖像的顯示,即將控制線程與采集顯示線程。其流程圖如圖4一a所示。
由于0V9620采用彩色濾光器陣列(CFA)為Bayer方案,如圖5所示,每個(gè)像素只包括RGB顏色的一個(gè)分量,為恢復(fù)另外2種顏色分量,必須進(jìn)行彩色去馬賽克(co1ordemosaicing)處理,即彩色插值。本系統(tǒng)采用雙線性(Bilinear)差值算法對(duì)像素進(jìn)行還原,即利用相鄰像素中同色分量的平均值作為當(dāng)前像素的待求顏色分量。其具體數(shù)學(xué)模型為:
令S(x,y)表示像素點(diǎn)(x,y)處的顏色值,包含三個(gè)顏色分量:紅色R(x,y)、綠色G(x,y)、藍(lán)色B(x,y),則有:
然后對(duì)圖像進(jìn)行雙線性差值,其中可分兩類像素點(diǎn)。
(1)對(duì)于像素點(diǎn)(3,3),有R(3,3)=r33,G(3,3)=0,B(3,3)=0,為了得到該處的G,B分量值,可根據(jù)鄰點(diǎn)來進(jìn)行估計(jì),根據(jù)算法有:
(2)對(duì)于像素點(diǎn)(3,4),有G(3,4)=g34,R(3,4)=O,B(3,4)=O,根據(jù)算法估計(jì)得到:
類似的可以對(duì)每個(gè)像素點(diǎn)缺省的色彩分量進(jìn)行估計(jì),恢復(fù)成正常的彩色圖像。
該算法運(yùn)算簡單,運(yùn)算速度塊,符合系統(tǒng)要求。
3 試驗(yàn)測試
將該系統(tǒng)應(yīng)用到圖像采集中,實(shí)驗(yàn)結(jié)果如圖6所示。
過軟硬件調(diào)試,最終采集到高分辨率,高速率,高清晰畫面,其采集數(shù)率達(dá)到了23.6MBps,證實(shí)該設(shè)計(jì)的可行性并達(dá)到預(yù)期效果。
4 結(jié)論
基于USB 2.O的CMOS圖像采集系統(tǒng)采用130萬像素圖像傳感器0V9620 作為圖像感光芯片,保證了圖像質(zhì)量:采用USB2.O CY7C86013作為數(shù)據(jù)傳輸模塊及控制模塊,保證了圖像數(shù)據(jù)的實(shí)時(shí)傳輸。對(duì)于130萬像素高分辨率,15幀/s的動(dòng)態(tài)圖像,能夠滿足許多對(duì)分辨率和幀頻率有高要求的應(yīng)用場合。