基于USB的高清彩色CCD圖像采集系統(tǒng)
摘要:提出一種基于USB的彩色CCD高清圖像采集系統(tǒng)設(shè)計(jì)方案。圖像數(shù)據(jù)的來(lái)源采用的是SONY公司的ICX205AK芯片,結(jié)合USB2.0接口,復(fù)雜可編程邏輯器件CPLD設(shè)計(jì)了一個(gè)高速的彩色CCD圖像采集系統(tǒng)。文中詳細(xì)闡述了系統(tǒng)內(nèi)不同模塊的硬件電路設(shè)計(jì)思路和軟件運(yùn)行流程。整個(gè)系統(tǒng)由電源系統(tǒng)、CCD傳感器、A/D模數(shù)轉(zhuǎn)換器、CPLD控制器、USB2.0高速接口、上位機(jī)控制程序等各個(gè)部分組成。本系統(tǒng)的硬件電路可以協(xié)調(diào)正常工作完成分辨率為140萬(wàn)的高清圖像采集,最高采集幀率達(dá)7.5 frame/s。
關(guān)鍵詞:CCD;圖像采集;ICX205AK;USB2.0;CPLD
隨著時(shí)代的進(jìn)步,科技的發(fā)展,數(shù)字圖像的采集與處理在科技研究,工農(nóng)業(yè)生產(chǎn)、醫(yī)療衛(wèi)生、航空航天,軍事對(duì)抗等領(lǐng)域得到了越來(lái)越廣泛的應(yīng)用。所以,對(duì)圖像采集系統(tǒng)的研究具有重要的現(xiàn)實(shí)意義和應(yīng)用價(jià)值。筆者提出了一種基于USB的彩色CCD高清圖像采集系統(tǒng)。CCD中文名稱為電荷耦合器件,它是20世紀(jì)70年代迅速發(fā)展起來(lái)的一種新型半導(dǎo)體探測(cè)器件,可把自然圖像轉(zhuǎn)換為電信號(hào),具有動(dòng)態(tài)范圍大、電荷轉(zhuǎn)移效率高、低噪聲輸出、分辨率高、工作頻率高等優(yōu)點(diǎn)。USB即Universal Serial Bus,是通用串行總線的簡(jiǎn)稱,這是由七家主要的計(jì)算機(jī)與電子科技大廠于1994年所研發(fā)和制定的一種串行總線協(xié)議。本采集系統(tǒng)具有以下特點(diǎn):數(shù)據(jù)傳輸采用USB2.0高速傳輸接口;整個(gè)系統(tǒng)由USB接口供電,無(wú)需外加額外的電源;系統(tǒng)可實(shí)現(xiàn)140萬(wàn)的高清圖像采集;圖像采集的速度最高達(dá)7.5 frame/s。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 系統(tǒng)硬件架構(gòu)
本系統(tǒng)的硬件架構(gòu)如圖1所示。整個(gè)系統(tǒng)由電源系統(tǒng)、光學(xué)系統(tǒng)、圖像傳感器,A/D轉(zhuǎn)換器、CPLD控制器、USB2.0高速接口、上位機(jī)PC以及控制程序等各個(gè)部分組成。電源模塊負(fù)責(zé)給整個(gè)系統(tǒng)供電,電源模塊的輸入是USB總線提供的5 V電源,進(jìn)行DC—DC轉(zhuǎn)換產(chǎn)生兩路CCD驅(qū)動(dòng)所需要的電源:15 V、-8 V。其他模塊的供電采用統(tǒng)一的3.3 V。圖像傳感器采用的是SONY公司的CCD ICX205AK,它是一款1/2英寸、145萬(wàn)有效像素的CCD傳感器,每秒能夠輸出145萬(wàn)有效像素的圖像7.5幀。A/D轉(zhuǎn)換器負(fù)責(zé)將CCD輸出的模擬信號(hào)轉(zhuǎn)變成為數(shù)字信號(hào),采用的是ADI公司的AD9824,它是一款完善的CCD信號(hào)處理器。CPLD控制器產(chǎn)生CCD和AD工作所需要的時(shí)序,同時(shí)須實(shí)時(shí)接收USB總線發(fā)送過(guò)來(lái)的控制信息,并根據(jù)接收到的參數(shù)實(shí)現(xiàn)圖像的曝光時(shí)間和白平衡等調(diào)整。USB2.0高速接口是整個(gè)系統(tǒng)數(shù)據(jù)通信的“交通要道”,對(duì)系統(tǒng)中高速圖像信號(hào)采集,上位機(jī)與硬件電路之間通信等方面起著至關(guān)重要的作用。本系統(tǒng)采用Cypress公司的USB2.0控制器CY7C68013A,CY7C68013A芯片內(nèi)部包含USB2.0收發(fā)器、串行接口引擎(SIE)、增強(qiáng)型8051內(nèi)核、16KB RAM、4KB FIFO存儲(chǔ)器、I/O接口、數(shù)據(jù)總線、地址總線和通用可編程接口,硬件資源非常豐富。根據(jù)系統(tǒng)的要求,并考慮到系統(tǒng)的成本,本系統(tǒng)采用Altera公司的MAX 3000A系列產(chǎn)品中封裝為TQFP 100的EPM3128 ATCl00-10N芯片作為系統(tǒng)的控制中心。該芯片有2500個(gè)系統(tǒng)門,128個(gè)宏單元,最大支持80個(gè)用戶I/O,且功耗低。
1.2 CCD驅(qū)動(dòng)電路設(shè)計(jì)
圖2為CCD驅(qū)動(dòng)電路。由于ICX205AK垂直移位寄存器不能直接使用TTL電平驅(qū)動(dòng),所以需要引入CCD驅(qū)動(dòng)電路部分,對(duì)CPLD生成的各種轉(zhuǎn)移脈沖信號(hào)進(jìn)行功率放大,以滿足CCD對(duì)驅(qū)動(dòng)波形電壓及電流以及時(shí)序的要求。驅(qū)動(dòng)信號(hào)的好壞會(huì)對(duì)CCD的電荷轉(zhuǎn)移效率產(chǎn)生較大的影響,從而影響成像的質(zhì)量。本設(shè)計(jì)采用的是與ICX205AK相配套的垂直時(shí)鐘驅(qū)動(dòng)芯片CXD1267AN,將原本為TTL電平的V1,V2A,V2B,V3和SUB信號(hào)轉(zhuǎn)變?yōu)楹线m的電平。其中V1,V3要求為-8V/0 V兩個(gè)等級(jí),V2A,V2B要求為-8 V/0 V/+15 V3個(gè)等級(jí),SUB為-8 V/+15 V兩個(gè)等級(jí)。引入XSG1,XSG2兩個(gè)時(shí)序信號(hào),用于控制CXD1267AN生成垂直移位時(shí)鐘信號(hào)V2A\V2B,實(shí)現(xiàn)感光陣列中的電荷信號(hào)轉(zhuǎn)移到移位寄存器。H1,H2水平寄存器轉(zhuǎn)移時(shí)鐘,用于控制水平移位寄存器的電荷信號(hào)的順序移出,其頻率直接決定CCD信號(hào)輸出的頻率。
1.3 高速USB2.0接口設(shè)計(jì)
圖3為高清圖像采集系統(tǒng)的核心傳輸鏈路,USB2.0高速接口。因?yàn)閳D像采集系統(tǒng)要求將數(shù)據(jù)高速而準(zhǔn)確地傳入PC端,故本系統(tǒng)采用Sla ve FIFO模式,圖像不經(jīng)FX2LP的CPU處理,直接通過(guò)從屬端點(diǎn)FIFO將數(shù)據(jù)高速傳入PC端。
圖3中,IFCLK為Slave FIFO的接口時(shí)鐘。Slave FIFO接口時(shí)鐘信號(hào)既可由內(nèi)部提供,也可由外部提供。如果FX2LP設(shè)置為使用外部時(shí)鐘源,則IFCLK引腳可被用來(lái)提供5~48 MHz之間的任何頻率的時(shí)鐘信號(hào)。當(dāng)IFCLK被設(shè)置為輸入時(shí),最小頻率為5 MHz。FIFOADR[1:0]引腳用來(lái)選擇EP2、EP4、EP6和EP8中的一個(gè)FIFO與數(shù)據(jù)總線FD連接。FULL和EMPTY引腳分別是FIFO的滿狀態(tài)和空狀態(tài)標(biāo)志,通過(guò)配置CY7C68013A內(nèi)部的相關(guān)寄存器可使得當(dāng)FIFO滿狀態(tài)或者空狀態(tài)的時(shí)候向外部控制器發(fā)送相應(yīng)的標(biāo)志。SLWR引腳是寫FIFO控制信號(hào),當(dāng)SLWR被激活時(shí),數(shù)據(jù)總線FD上的數(shù)據(jù)在每個(gè)時(shí)鐘信號(hào)IFCLK上升沿到來(lái)時(shí)被寫入FIFO。
INT1和PAUSE信號(hào)是為了協(xié)調(diào)高清圖像數(shù)據(jù)正常發(fā)送而引入的額外信號(hào)。系統(tǒng)中CCD圖像傳感器輸出的模擬信號(hào)經(jīng)AD9824采樣后輸出14 bit數(shù)字信號(hào),但數(shù)據(jù)中不包含圖像幀頭信息。為使主機(jī)應(yīng)用程序能夠準(zhǔn)確和完整地分離出圖像數(shù)據(jù),本系統(tǒng)設(shè)計(jì)方法是在EZ-USB FX2LP的INT1中斷服務(wù)程序中為每一幀圖像加入特定的幀頭。在EZ-USB在往FIFO里面寫入幀頭的過(guò)程中,不允許CPLD繼續(xù)讓AD向FIFO傳送數(shù)據(jù),從而引入了PAUSE信號(hào)通知CPLD暫停傳送數(shù)據(jù)的操作。
本系統(tǒng)采用的模擬轉(zhuǎn)換器AD9824是一款14bits的高效CCD信號(hào)處理器,而FD[15:0]是16位的數(shù)據(jù)總線,在設(shè)計(jì)過(guò)程中,我們將高位數(shù)據(jù)線接地,低14位數(shù)據(jù)線接AD9824數(shù)據(jù)并行輸出數(shù)據(jù)。
2 系統(tǒng)軟件實(shí)現(xiàn)
2.1 AD相關(guān)雙采樣
相關(guān)雙采樣(CDS)通過(guò)對(duì)每一個(gè)CCD像素點(diǎn)輸出信號(hào)采樣兩次來(lái)消除低頻噪聲的影響,它是根據(jù)CCD輸出信號(hào)和噪聲信號(hào)的特點(diǎn)而設(shè)計(jì)。圖4為相關(guān)雙采樣時(shí)序圖,圖中詳細(xì)的指出了相關(guān)采樣的時(shí)序要求。CCD每個(gè)像元的輸出周期都以復(fù)位脈沖信號(hào)開(kāi)始T1,先清除前一個(gè)像素的電荷,以等待下一像素電荷的到來(lái)。此時(shí)的輸出信號(hào)被嵌入復(fù)位電平,并產(chǎn)生復(fù)位噪聲;在圖中T2期間,由于復(fù)位MOSFET漏電流的影響,復(fù)位電平有微小下降,這種現(xiàn)象稱為復(fù)位失調(diào)電壓。此時(shí)的輸出信號(hào)為復(fù)位電平與復(fù)位噪聲、復(fù)位失調(diào)電壓的疊加;在T3期間,CCD電荷進(jìn)行水平轉(zhuǎn)移,此時(shí)混入移位時(shí)鐘干擾;T4期間的輸出為復(fù)位噪聲、復(fù)位失調(diào)電壓和有用光敏輸出信號(hào)的疊加。所以相關(guān)雙采樣的原理就是在T2和T4時(shí)刻對(duì)同一像素點(diǎn)的輸出信號(hào)進(jìn)行采樣,然后將兩次采樣值相減就基本消除了復(fù)位噪聲的干擾,得到信號(hào)電平的實(shí)際有效幅值。本系統(tǒng)選用的模數(shù)轉(zhuǎn)換器AD9824內(nèi)部具有相關(guān)雙采樣電路,系統(tǒng)實(shí)現(xiàn)過(guò)程中就是EPM3128產(chǎn)生如圖4所示的SHP、SHP、DATACLK采樣信號(hào),即可完成相關(guān)雙采樣邏輯,很大程度降低了圖像數(shù)據(jù)中包含的噪聲信號(hào)。
2.2 USB固件程序設(shè)計(jì)
在USB接口設(shè)計(jì)中,USB固件編程是整個(gè)設(shè)計(jì)任務(wù)的核心。USB固件程序用于完成USB設(shè)備的識(shí)別、重列舉、設(shè)備請(qǐng)求、USB協(xié)議處理、外部硬件的功能、負(fù)責(zé)與USB主機(jī)之間的數(shù)據(jù)通信等。固件的設(shè)計(jì)就是使在USB總線上的傳輸能獲得最大的有效的數(shù)據(jù)傳輸速度。
設(shè)備上電之后,就會(huì)按照如下的步驟執(zhí)行固件:
1)初始化架構(gòu)全局變量;
2)調(diào)用TD_Init()初始化FX2LP芯片,調(diào)用用戶自定義的初始化函數(shù),返回后USB設(shè)置為未配置狀態(tài),并打開(kāi)中斷;
3)在緊接著的1秒內(nèi),重新枚舉USB設(shè)備,直到收到SETUP封包;
4)檢查設(shè)備請(qǐng)求,有請(qǐng)求則執(zhí)行相應(yīng)的功能,有的需要跳轉(zhuǎn)到相應(yīng)函數(shù);
5)檢查總線掛起事件,沒(méi)有掛起事件則執(zhí)行9);
6)調(diào)用TD_Suspend(),返回失敗代碼則執(zhí)行9);
7)掛起處理器;
8)檢查重新開(kāi)始事件,事件發(fā)生則調(diào)用TD_Resume(),否則執(zhí)行7);
9)調(diào)用TD_Poll,函數(shù)返回到4)并執(zhí)行。
固件框架流程如圖5所示。
由于AD9824傳送過(guò)來(lái)的每一幀圖像都是連續(xù)的,也就是不包含幀頭信息。本系統(tǒng)采取的做法是在一幀數(shù)據(jù)到來(lái)的時(shí)候,CPLD控制器會(huì)給CY7C68013A一個(gè)中斷信號(hào)。中斷服務(wù)程序所要做的工作就是清空FIFO里面的數(shù)據(jù),并往FIFO里面寫入512個(gè)字節(jié)的幀頭(0xFF)數(shù)據(jù)。這樣做的目的是保證上位機(jī)能夠正確的識(shí)別每一幀數(shù)據(jù)。中斷服務(wù)程序流程圖如圖6所示。
2.3 上位機(jī)程序設(shè)計(jì)
本系統(tǒng)的上層應(yīng)用程序使用VC++6.0軟件進(jìn)行編程,采用多線程、雙緩沖區(qū)等技術(shù)實(shí)現(xiàn)動(dòng)態(tài)圖像的實(shí)時(shí)顯示。
在圖像采集系統(tǒng)中,主要有3個(gè)功能模塊:圖像數(shù)據(jù)采集模塊、圖像數(shù)據(jù)處理模塊、圖像顯示模塊。如果采用單線程方法,則工作過(guò)程為:先進(jìn)行數(shù)據(jù)采集,采集完成后對(duì)數(shù)據(jù)進(jìn)行處理,最后將處理后的數(shù)據(jù)進(jìn)行顯示。由于這3個(gè)功能模塊不能同時(shí)進(jìn)行,會(huì)造成了CPU的利用率低,限制傳輸幀速率的提高,導(dǎo)致系統(tǒng)的整體效率大大降低。
為了提高運(yùn)行效率,本應(yīng)用程序設(shè)計(jì)時(shí)采用多線程并行處理的方法,將數(shù)據(jù)采集、數(shù)據(jù)處理與圖像顯示分別放在3個(gè)線程里進(jìn)行。從圖7中可以很明顯看出單線程與多線程的區(qū)別。
在圖像數(shù)據(jù)采集模塊中,一種數(shù)據(jù)采集方法是串行處理,如圖8所示。
這種結(jié)構(gòu)易于實(shí)現(xiàn),但存在著明顯的不足;效率低下,不適合實(shí)時(shí)性要求高的場(chǎng)合。
為了進(jìn)一步提高圖像采集的實(shí)時(shí)性,在應(yīng)用程序開(kāi)發(fā)時(shí)設(shè)計(jì)了雙緩沖區(qū)交替采集處理的工作方式,如圖9。周期T時(shí)應(yīng)用程序采集數(shù)據(jù)到緩沖區(qū)1,同時(shí)處理緩沖區(qū)2中的數(shù)據(jù);周期T+1時(shí)應(yīng)用程序采集數(shù)據(jù)到緩沖區(qū)2,同時(shí)處理緩沖區(qū)1中的數(shù)據(jù)。如此反復(fù)交替,可以顯著提高數(shù)據(jù)采集效率。
系統(tǒng)測(cè)試結(jié)果表明,與普通的但緩沖區(qū)單線程結(jié)構(gòu)相比,這種雙緩沖區(qū)多線程結(jié)構(gòu)可以顯著提高圖像傳輸?shù)膸俾省?br />
3 系統(tǒng)測(cè)試
通過(guò)USB2.0電纜將設(shè)備連接到裝有Windows XP系統(tǒng)PC機(jī)上面,PC機(jī)上面運(yùn)行采集軟件進(jìn)行圖像采集。如果圖像模糊不清,可以通過(guò)調(diào)節(jié)設(shè)備的鏡頭焦距,使得圖像能夠正確對(duì)焦。圖10是整機(jī)調(diào)試的環(huán)境。圖中采集到的圖像數(shù)據(jù)為CCD的原始并未做處理的有效數(shù)據(jù)。圖像的分辨率為1 360x1 024約等于140萬(wàn)像素。最快可以實(shí)現(xiàn)7.5 frams/s的采集速率。
4 結(jié)論
本文設(shè)計(jì)了一個(gè)基于USB的彩色CCD圖像采集系統(tǒng),系統(tǒng)采用USB總線供電且能穩(wěn)定工作,采集到140萬(wàn)的高清彩色圖像,并最快能實(shí)現(xiàn)7.5 frame/s的動(dòng)態(tài)圖像采集。文章從硬件方面詳細(xì)的敘述了整個(gè)系統(tǒng)的架構(gòu)設(shè)計(jì),CCD驅(qū)動(dòng)電路的設(shè)計(jì)以及高速USB2.0接口的設(shè)計(jì)方案。軟件方面闡述了AD相關(guān)雙采樣,USB固件程序的設(shè)計(jì)框架以及上位機(jī)多線程、雙緩沖的設(shè)計(jì)思路??傊?,本系統(tǒng)的設(shè)計(jì)方法對(duì)基于USB的圖像采集系統(tǒng)的軟硬件設(shè)計(jì)都具有重要的參考價(jià)值。