黃以華,黃劍峰
(中山大學信息科學與技術學院 電子與通信工程系,廣東 廣州 510006)
隨著時代的進步,科技的發展,數字圖像的采集與處理在科技研究,工農業生產、醫療衛生、航空航天,軍事對抗等領域得到了越來越廣泛的應用。所以,對圖像采集系統的研究具有重要的現實意義和應用價值。筆者提出了一種基于USB的彩色CCD高清圖像采集系統。CCD中文名稱為電荷耦合器件,它是20世紀70年代迅速發展起來的一種新型半導體探測器件,可把自然圖像轉換為電信號,具有動態范圍大、電荷轉移效率高、低噪聲輸出、分辨率高、工作頻率高等優點[1]。USB即Universal Serial Bus,是通用串行總線的簡稱,這是由七家主要的計算機與電子科技大廠于1994年所研發和制定的一種串行總線協議[2]。本采集系統具有以下特點:數據傳輸采用USB2.0高速傳輸接口;整個系統由USB接口供電,無需外加額外的電源;系統可實現140萬的高清圖像采集;圖像采集的速度最高達7.5 frame/s。
本系統的硬件架構如圖1所示。整個系統由電源系統、光學系統、圖像傳感器,A/D轉換器、CPLD控制器、USB2.0高速接口、上位機PC以及控制程序等各個部分組成。電源模塊負責給整個系統供電,電源模塊的輸入是USB總線提供的5 V電源,進行DC-DC轉換產生兩路CCD驅動所需要的電源:15 V、-8 V。其他模塊的供電采用統一的3.3 V。圖像傳感器采用的是SONY公司的 CCD ICX205AK,它是一款1/2英寸、145萬有效像素的CCD傳感器,每秒能夠輸出145萬有效像素的圖像7.5幀[3]。A/D轉換器負責將CCD輸出的模擬信號轉變成為數字信號,采用的是ADI公司的AD9824,它是一款完善的CCD信號處理器[4]。CPLD控制器產生CCD和AD工作所需要的時序,同時須實時接收USB總線發送過來的控制信息,并根據接收到的參數實現圖像的曝光時間和白平衡等調整。USB2.0高速接口是整個系統數據通信的“交通要道”,對系統中高速圖像信號采集,上位機與硬件電路之間通信等方面起著至關重要的作用。本系統采用Cypress公司的USB2.0控制器 CY7C68013A,CY7C68013A芯片內部包含USB2.0收發器、串行接口引擎 (SIE)、增強型8051內核、16KB RAM、4KB FIFO存儲器、I/O接口、數據總線、地址總線和通用可編程接口,硬件資源非常豐富[5]。根據系統的要求,并考慮到系統的成本,本系統采用Altera公司的MAX 3000A系列產品中封裝為TQFP 100的EPM3128ATC100-10N芯片作為系統的控制中心。該芯片有2500個系統門,128個宏單元,最大支持80個用戶I/O,且功耗低[6]。

圖1 系統架構Fig.1 System structure diagram
圖2為CCD驅動電路[3]。由于ICX205AK垂直移位寄存器不能直接使用TTL電平驅動,所以需要引入CCD驅動電路部分,對CPLD生成的各種轉移脈沖信號進行功率放大,以滿足CCD對驅動波形電壓及電流以及時序的要求。驅動信號的好壞會對CCD的電荷轉移效率產生較大的影響,從而影響成像的質量[7]。本設計采用的是與ICX205AK相配套的垂直時鐘驅動芯片CXDl267AN,將原本為TTL電平的 V1,V2A,V2B,V3和SUB信號轉變為合適的電平。其中V1,V3要求為-8 V/0 V兩個等級,V2A,V2B要求為-8 V/0 V/+15 V 3個等級,SUB為-8 V/+15 V兩個等級。引入XSG1,XSG2兩個時序信號,用于控制CXD1267AN生成垂直移位時鐘信號V2AV2B,實現感光陣列中的電荷信號轉移到移位寄存器。H1,H2水平寄存器轉移時鐘,用于控制水平移位寄存器的電荷信號的順序移出,其頻率直接決定CCD信號輸出的頻率。

圖2 CCD驅動電路Fig.2 Driver circuit of CCD
圖3為高清圖像采集系統的核心傳輸鏈路,USB2.0高速接口。因為圖像采集系統要求將數據高速而準確地傳入PC端,故本系統采用Slave FIFO模式,圖像不經FX2LP的CPU處理,直接通過從屬端點FIFO將數據高速傳入PC端。

圖3 高速USB2.0接口電路Fig.3 Interface circuit of USB
圖3中,IFCLK為Slave FIFO的接口時鐘。Slave FIFO接口時鐘信號既可由內部提供,也可由外部提供。如果FX2LP設置為使用外部時鐘源,則IFCLK引腳可被用來提供5~48 MHz之間的任何頻率的時鐘信號。當IFCLK被設置為輸入時,最小頻率為 5 MHz。 FIFOADR[1:0]引腳用來選擇 EP2、EP4、EP6和EP8中的一個FIFO與數據總線FD連接。FULL和EMPTY引腳分別是FIFO的滿狀態和空狀態標志,通過配置CY7C68013A內部的相關寄存器可使得當FIFO滿狀態或者空狀態的時候向外部控制器發送相應的標志。SLWR引腳是寫FIFO控制信號,當SLWR被激活時,數據總線FD上的數據在每個時鐘信號IFCLK上升沿到來時被寫入FIFO。
INT1和PAUSE信號是為了協調高清圖像數據正常發送而引入的額外信號。系統中CCD圖像傳感器輸出的模擬信號經AD9824采樣后輸出14 bit數字信號,但數據中不包含圖像幀頭信息。為使主機應用程序能夠準確和完整地分離出圖像數據,本系統設計方法是在EZ-USB FX2LP的INT1中斷服務程序中為每一幀圖像加入特定的幀頭[8]。在EZ-USB在往FIFO里面寫入幀頭的過程中,不允許CPLD繼續讓AD向FIFO傳送數據,從而引入了PAUSE信號通知CPLD暫停傳送數據的操作。
本系統采用的模擬轉換器AD9824是一款14bits的高效CCD信號處理器,而FD[15:0]是16位的數據總線,在設計過程中,我們將高位數據線接地,低14位數據線接AD9824數據并行輸出數據。
相關雙采樣(CDS)通過對每一個CCD像素點輸出信號采樣兩次來消除低頻噪聲的影響,它是根據CCD輸出信號和噪聲信號的特點而設計。圖4為相關雙采樣時序圖,圖中詳細的指出了相關采樣的時序要求。CCD每個像元的輸出周期都以復位脈沖信號開始T1,先清除前一個像素的電荷,以等待下一像素電荷的到來。此時的輸出信號被嵌入復位電平,并產生復位噪聲;在圖中T2期間,由于復位MOSFET漏電流的影響,復位電平有微小下降,這種現象稱為復位失調電壓。此時的輸出信號為復位電平與復位噪聲、復位失調電壓的疊加;在T3期間,CCD電荷進行水平轉移,此時混入移位時鐘干擾;T4期間的輸出為復位噪聲、復位失調電壓和有用光敏輸出信號的疊加[1]。所以相關雙采樣的原理就是在T2和T4時刻對同一像素點的輸出信號進行采樣,然后將兩次采樣值相減就基本消除了復位噪聲的干擾,得到信號電平的實際有效幅值。本系統選用的模數轉換器AD9824內部具有相關雙采樣電路,系統實現過程中就是EPM3128產生如圖4所示的SHP、SHP、DATACLK采樣信號,即可完成相關雙采樣邏輯,很大程度降低了圖像數據中包含的噪聲信號。

圖4 相關雙采樣時序圖Fig.4 Double sample timing
在USB接口設計中,USB固件編程是整個設計任務的核心。USB固件程序用于完成USB設備的識別、重列舉、設備請求、USB協議處理、外部硬件的功能、負責與USB主機之間的數據通信等。固件的設計就是使在USB總線上的傳輸能獲得最大的有效的數據傳輸速度。
設備上電之后,就會按照如下的步驟執行固件:
1)初始化架構全局變量;
2)調用 TD_Init()初始化 FX2LP芯片,調用用戶自定義的初始化函數,返回后USB設置為未配置狀態,并打開中斷;
3)在緊接著的1秒內,重新枚舉USB設備,直到收到SETUP封包;
4)檢查設備請求,有請求則執行相應的功能,有的需要跳轉到相應函數;
5)檢查總線掛起事件,沒有掛起事件則執行9);
6)調用 TD_Suspend(),返回失敗代碼則執行 9);
7)掛起處理器;
8)檢查重新開始事件,事件發生則調用TD_Resume(),否則執行7);
9)調用 TD_Poll,函數返回到 4)并執行。
固件框架流程如圖5所示。

圖5 固件程序流程圖Fig.5 Flow chart of firmware program
由于AD9824傳送過來的每一幀圖像都是連續的,也就是不包含幀頭信息。本系統采取的做法是在一幀數據到來的時候,CPLD控制器會給CY7C68013A一個中斷信號。中斷服務程序所要做的工作就是清空FIFO里面的數據,并往FIFO里面寫入512個字節的幀頭(0xFF)數據。這樣做的目的是保證上位機能夠正確的識別每一幀數據。中斷服務程序流程圖如圖6所示。

圖6 中斷程序工作流程Fig.6 Flow chart of interrupt program
本系統的上層應用程序使用VC++6.0軟件進行編程,采用多線程、雙緩沖區等技術實現動態圖像的實時顯示。
在圖像采集系統中,主要有3個功能模塊:圖像數據采集模塊、圖像數據處理模塊、圖像顯示模塊。如果采用單線程方法,則工作過程為:先進行數據采集,采集完成后對數據進行處理,最后將處理后的數據進行顯示。由于這3個功能模塊不能同時進行,會造成了CPU的利用率低,限制傳輸幀速率的提高,導致系統的整體效率大大降低。
為了提高運行效率,本應用程序設計時采用多線程并行處理的方法,將數據采集、數據處理與圖像顯示分別放在3個線程里進行。從圖7中可以很明顯看出單線程與多線程的區別。

圖7 單線程與多線程系統結構Fig.7 Single-threaded and multi-threaded architecture
在圖像數據采集模塊中,一種數據采集方法是串行處理[9],如圖 8 所示。

圖8 串行數據采集方法Fig.8 Serial data acquisition methods
這種結構易于實現,但存在著明顯的不足:效率低下,不適合實時性要求高的場合。
為了進一步提高圖像采集的實時性,在應用程序開發時設計了雙緩沖區交替采集處理[10]的工作方式,如圖9。周期T時應用程序采集數據到緩沖區1,同時處理緩沖區2中的數據;周期T+1時應用程序采集數據到緩沖區2,同時處理緩沖區1中的數據。如此反復交替,可以顯著提高數據采集效率。

圖9 雙緩沖交替采集方法Fig.9 Double buffering alternate acquisition method
系統測試結果表明,與普通的但緩沖區單線程結構相比,這種雙緩沖區多線程結構可以顯著提高圖像傳輸的幀速率。
通過USB2.0電纜將設備連接到裝有Windows XP系統PC機上面,PC機上面運行采集軟件進行圖像采集。如果圖像模糊不清,可以通過調節設備的鏡頭焦距,使得圖像能夠正確對焦。圖10是整機調試的環境。圖中采集到的圖像數據為CCD的原始并未做處理的有效數據。圖像的分辨率為1 360×1 024約等于140萬像素。最快可以實現7.5 frams/s的采集速率。

圖10 整機調試圖Fig.10 Overall debugging Figure
本文設計了一個基于USB的彩色CCD圖像采集系統,系統采用USB總線供電且能穩定工作,采集到140萬的高清彩色圖像,并最快能實現7.5 frame/s的動態圖像采集。文章從硬件方面詳細的敘述了整個系統的架構設計,CCD驅動電路的設計以及高速USB2.0接口的設計方案。軟件方面闡述了AD相關雙采樣,USB固件程序的設計框架以及上位機多線程、雙緩沖的設計思路??傊?,本系統的設計方法對基于USB的圖像采集系統的軟硬件設計都具有重要的參考價值。
[1]佟首峰,阮錦,郝志航.CCD圖像傳感器降噪技術的研究[J].光學精密工程,2000,8(2):140-145.
TONG Shou-feng,RUAN Jin,HAO Zhi-hang.Noise reducing scheme on output signal of CCD[J].Optics and Precision Engineering,2000,8(2):140-145.
[2]周立功.PDIUSBD12 USB固件編程與驅動開發 [M].北京:北京航空航天大學出版社,2003.
[3]Diagonal 8 mm (Type 1/2)Progressive Scan CCD Image Sensor with Square Pixel for Color Cameras[Z]:ICX205AK.SONY Corpornation.
[4]Complete 14-Bit 30 MSPS CCD Signal Processor:AD9824[Z].Analog Devices, Inc.,2002.
[5]EZ-USB FX2LP USB Microcontroller:CY7C68013A[Z].Cypress Semiconductor Corporation,2006.
[6]MAX 3000A Programmable Logic Device Family[Z].Altera Corporation 2006.
[7]侯新梅,李自田,胡炳樑.基于FPGA的面陣CCD驅動電路的設計[J].現代電子技術,2010,7(318):195-197.
HOU Xin-mei,LI Zi-tian,HU Bing-liang.Design of driving time circuit for area array CCD based on FPGA[J].Modern Electronics Technique, 2010,7(318):195-197.
[8]孟浩,付繼光,王中宇.基于EZ-USB FX2的CMOS圖像采集系統設計與實現[J].儀器儀表學報,2007,28(4):332-335.
MENG Hao,FU Ji-hua,WANG Zhong-yu.Design and implementation of CMOS image acquisition system based on EZ-USB FX2[J].Chinese Journal of Scientific Instrument,2007,28(4):332-335.
[9]陳胡興.多線程技術及其在數據采集中的應用[J].機械工程與自動化,2007(4):140-141.
CHEN Hu-xing.Multi-threads technology and its application in data acquisition[J].Mechanical Engineering&Automation,2007(4):140-141.
[10]劉曉冬,蘇光大.一種基于中斷的多線程高速圖像采集系統[J].計算機工程與應用,2000,36(5):8-11.
LIU Xiao-dong,SU Guang-da.A high speed image capture system based on interrupt and Multi-Thread techniques[J].Computer Engineering and Applicatons,2000,36(5):8-11.