楊勇奇 王典洪 徐朝玉 倪效勇 羅林波
摘 要: 設計一種以Sony面陣CCD器件ICX618為傳感器的實時圖像采集系統(tǒng)。該系統(tǒng)采用FPGA作為控制核心,由AD9945芯片對CCD的輸出信號進行相關雙采樣處理和A/D轉(zhuǎn)換,經(jīng)USB接口完成數(shù)據(jù)的高速傳輸,最后由上位機對數(shù)據(jù)進行處理和顯示。實驗表明,設計的CCD圖像采集系統(tǒng)在40 f/s的幀頻下工作穩(wěn)定,系統(tǒng)性能好、成本低、可靠性高,具有較好的實用價值,能夠為其他型號CCD的應用提供參考。
關鍵詞: 圖像采集; 面陣CCD; FPGA; USB; 傳感器; 數(shù)據(jù)高速傳輸
中圖分類號: TN386.5?34 文獻標識碼: A 文章編號: 1004?373X(2018)16?0022?04
Abstract: A real?time image acquisition system with the area array CCD ICX618 made by Sony as the sensor is designed. In the system with FPGA as the control core, the AD9945 chip is used to perform the related double sampling processing and A/D conversion for output signals of the CCD. The USB interface is used to complete high?speed data transmission, and data is processed and displayed on the upper computer. The experimental results show that the designed CCD image acquisition system can work stably at the frame frequency of 40 f/s, has good performance, low cost, high reliability, and good practical value, and can provide a reference for the application of other types of CCDs.
Keywords: image acquisition; area array CCD; FPGA; USB; sensor; high?speed data transmission
CCD是一種能將光信號轉(zhuǎn)變?yōu)殡娦盘柕奶綔y器件,鑒于其體積小、功耗低、動態(tài)范圍大、響應速度快等優(yōu)點,在圖像傳感和圖像檢測領域得到廣泛應用[1]。在X射線衍射儀(X?Ray Diffraction,XRD)中,利用面陣CCD替代測角儀是實現(xiàn)儀器便攜式應用的關鍵技術[2],但應用于X射線波段的科研級大面陣CCD價格十分昂貴,單片價格達到數(shù)萬元,而且其內(nèi)部工藝復雜,對控制電路要求極其嚴格,容易因為控制不當造成損壞[3]。采用工業(yè)級的CCD搭建一個圖像采集系統(tǒng),為科研級面陣CCD的應用提供一個前期驗證的參考模型是非常必要的。本文設計了一套實時圖像采集系統(tǒng),采用FPGA為系統(tǒng)控制核心,以CCD為圖像傳感器,經(jīng)AD9945實現(xiàn)高速A/D轉(zhuǎn)換,通過USB接口連接FPGA和計算機完成數(shù)據(jù)和命令的傳輸,最后在上位機程序中實時顯示采集的圖像數(shù)據(jù)。
系統(tǒng)架構(gòu)如圖1所示,該系統(tǒng)硬件架構(gòu)圖由CCD圖像傳感器、FPGA、信號處理電路和USB接口組成。
系統(tǒng)上電后,首先完成FPGA內(nèi)各模塊參數(shù)的初始化。當FPGA接收到采集命令后,輸出CCD的驅(qū)動時序,CCD在驅(qū)動時序的控制下輸出光電轉(zhuǎn)換后的模擬電壓。其經(jīng)射極跟隨器后對AD9945芯片進行相關雙采樣和A/D轉(zhuǎn)換,轉(zhuǎn)換結(jié)果經(jīng)FPGA緩存和處理后傳輸至USB芯片內(nèi)置的FIFO中。當FIFO達到給定深度時自動向計算機發(fā)送存儲的數(shù)據(jù),上位機對接收的數(shù)據(jù)進行存儲、處理,最終實現(xiàn)圖像的實時顯示。
1.1 FPGA驅(qū)動及控制模塊
系統(tǒng)選用的是Altera公司的Cyclone Ⅱ系列的EP2C8T144C8N 芯片。其性價比高,擁有8 256個邏輯單元,144個I/O口,可滿足系統(tǒng)的要求。FPGA是整個系統(tǒng)的核心,主要負責各芯片的初始化參數(shù)配置、CCD驅(qū)動時序的產(chǎn)生、A/D采樣的控制、采樣數(shù)據(jù)的預處理以及與USB接口的通信。
1.2 CCD驅(qū)動模塊
CCD選用的是一款由Sony公司生產(chǎn)的ICX618面陣圖像傳感器,其總像素為692(V)×504(H),采取隔行掃描方式允許所有像素信號在[160] s讀出,可以通過電子快門控制芯片的曝光時間長短,其具有高分辨率、高靈敏度、低暗電流噪聲的特性[4],非常適合作為圖像傳感器件。CCD的技術應用中其驅(qū)動電路的設計是最為關鍵的技術。只有符合器件要求的驅(qū)動信號才能有效轉(zhuǎn)移CCD的光生電荷,這直接影響成像質(zhì)量。因而根據(jù)器件的驅(qū)動要求設計出規(guī)范合理的驅(qū)動電路顯得尤為重要,設計的驅(qū)動電路如圖2所示。
根據(jù)手冊要求,ICX618需提供10路驅(qū)動時序,分別為6路垂直轉(zhuǎn)移信號、2路水平轉(zhuǎn)移信號、1路復位信號、1路積分控制信號。垂直轉(zhuǎn)移信號中[V?1]和[V?4]要求為-5.5 V,0 V兩個等級,[V?2A/B]和[V?3A/B]要求為-5.5 V,0 V,15 V三個等級。由于FPGA輸出的TTL電平為0 V,3.3 V兩個等級,故引入XSG1,XSG2與垂直信號相組合,配合垂直時鐘驅(qū)動芯片CXD1267得到三個等級的輸出。水平轉(zhuǎn)移信號[H?1]和[H?2]以及復位信號[?RG]可由FPGA直接驅(qū)動,這里使用ACT04芯片將輸入信號反向,使其與垂直信號相統(tǒng)一。
1.3 信號處理模塊
信號處理模塊包括射極跟隨器和A/D轉(zhuǎn)換電路。CCD的輸出接一個射級跟隨器,起到緩沖輸出提高負載的作用,以減少與A/D轉(zhuǎn)換電路直接相連帶來的影響,增強系統(tǒng)的抗干擾能力[5]。A/D采樣選用ADI公司的AD9945芯片完成,該芯片是一款針對逐行掃描面陣型CCD而設計的信號處理器。其內(nèi)部集成了可調(diào)增益放大(VGA)、黑電平鉗位、CDS以及12位高速A/D轉(zhuǎn)換等功能[6]。上電后,F(xiàn)PGA通過三線串行接口對AD9945的內(nèi)部寄存器進行設置,主要設置鉗位電平和VGA增益等級。工作時,相關雙采樣電路在每一像素周期內(nèi)對輸入的CCD信號[7]采樣兩次,一次為復位后保持的電平,一次為有效信號的電平,兩者分別對應采樣時序信號SHP和SHD,經(jīng)過差分消除了噪聲干擾,得到了質(zhì)量較高的有效信號,同時給芯片輸入光學黑電平和空白像素的時序信號,以進一步消除暗電流噪聲的影響。通過一系列的采樣處理,最終得到12位的數(shù)字信號傳輸給FPGA,進行數(shù)據(jù)的緩存和預處理。
1.4 USB接口模塊
選用USB作為圖像系統(tǒng)的通信接口,是因為其兼容性好、支持熱插拔、成本低、傳輸速率高等優(yōu)點,理論上最高傳輸速率為480 MB/s,完全滿足實時圖像傳輸要求。本設計中選用Cypress公司生產(chǎn)的CY7C68013A芯片,其內(nèi)部集成了USB 2.0協(xié)議的處理器、增強型8051內(nèi)核, 8.5 kB的RAM和4 kB的FIFO存儲器等,用于數(shù)據(jù)傳輸?shù)闹饕袃煞N模式:GPIF和Slave FIFO[8]。由于不考慮內(nèi)部CPU處理,只利用芯片的傳輸功能,故選擇Slave FIFO模式更利于圖像數(shù)據(jù)的高速傳輸。USB接口電路如圖3所示,F(xiàn)PGA可與CY7C68013A芯片直接相連,通過固件程序配置芯片為同步Slave FIFO寫模式,即由FPGA提供芯片的時鐘信號(IFCLK),
系統(tǒng)中設置與像素采樣頻率一致為16 MHz。SLWR是數(shù)據(jù)寫入FIFO的控制信號,當其有效時,數(shù)據(jù)總線上的數(shù)據(jù)才會在時鐘信號IFCLK的上升沿被寫入FIFO,所以控制SLWR有效信號出現(xiàn)的時間作為有效圖像信號的范圍,而無需添加圖像的幀頭幀尾結(jié)構(gòu)就能準確得到一幀圖像,這樣有利于減少數(shù)據(jù)傳輸量并提高圖像幀率。ON/OFF是圖像采集開啟與關閉的控制信號。SCLK和SDAT是USB芯片與FPGA串行通信的時鐘和數(shù)據(jù)線。FULL是USB芯片內(nèi)部FIFO滿狀態(tài)標識,當FPGA向FIFO發(fā)送的數(shù)據(jù)達到滿狀態(tài)時該標識位會發(fā)出相應的指示狀態(tài)。系統(tǒng)中FIFO設置為四重緩沖,512 B的緩沖區(qū),滿標識為低電平有效。
系統(tǒng)軟件設計包括FPGA程序、USB固件程序、USB設備驅(qū)動程序和上位機程序。各程序基于不同的軟件編寫平臺和語言編寫,彼此相互配合,共同完成圖像采集工作。
2.1 FPGA程序
FPGA程序使用Quartus Ⅱ軟件以VHDL硬件描述語言編寫,采用自上而下模塊化的編程方法,主要分為ICX618驅(qū)動時序產(chǎn)生模塊、USB串行通信模塊、AD9945配置模塊、數(shù)據(jù)發(fā)送模塊、倍頻模塊。這里主要介紹ICX618驅(qū)動時序產(chǎn)生模塊:FPGA的主時鐘采用40 MHz,像素讀出時鐘由PLL分頻產(chǎn)生為16 MHz,又由于水平轉(zhuǎn)移信號H1,H2和復位信號RG是在每個像素周期內(nèi)的不同時間產(chǎn)生,因此以160 MHz的時鐘進行計數(shù),一個像素周期被放大10倍,這樣可以精確地控制水平和復位信號出現(xiàn)的位置和占空比。芯片每行分為780個像素時序,用cnt表示,共有512行,用cnt_line表示。當cnt計數(shù)滿779時自動清零,cnt_line自動加1,表示一行數(shù)據(jù)傳輸完成。當cnt_line計數(shù)滿511時自動清零,表示一幀圖像數(shù)據(jù)傳輸完成。圖像分辨率設計為640×480,因此取cnt_line>15且cnt_line<495,cnt>=140且cnt<780時為有效像素輸出。通過cnt和cnt_line兩個變量的不同取值,就可以得到各個驅(qū)動信號在不同階段的輸出情況。不同階段是指根據(jù)ICX618 CCD的工作原理而劃分的幾個狀態(tài):空閑(idle)、光積分(integration)、幀轉(zhuǎn)移(transfer)、像素讀出初始化(init_readout)、像素讀出(read_out)。狀態(tài)間的轉(zhuǎn)移也是通過cnt和cnt_line的組合變量進行的。用Modelsim進行功能仿真和時序仿真,圖4為驅(qū)動時序仿真結(jié)果。圖中劃分出了時序所對應的狀態(tài), XSG1和XSG2只有在Transfer階段產(chǎn)生50個時鐘周期的低電平,目的是控制[V?2A/B ]和[V?3A/B]產(chǎn)生15 V的脈沖,將光積分區(qū)的電荷全部轉(zhuǎn)移到垂直寄存器中;其他階段,水平信號H1,H2保持不變時,垂直轉(zhuǎn)移信號(XV1,XV2,XV3,XV4)發(fā)生改變,將電荷轉(zhuǎn)移到水平寄存器中,垂直信號保持不變時,水平信號H1,H2交替變化,將水平寄存器中的電荷逐個輸出。
2.2 USB驅(qū)動程序
USB驅(qū)動程序是計算機與外部設備通信的前提條件,如果缺失或存在缺陷,會導致外部設備無法識別或者功能無法實現(xiàn)。本設計中使用的芯片由Cypress公司提供通用的USB驅(qū)動程序,主要包含驅(qū)動程序Cyusb.sys和INF文件Cyusb.inf。驅(qū)動程序提供應用程序與外部硬件設備的接口以及協(xié)調(diào)二者之間的關系,一般無需作更改[9]。INF即設備信息文件,用來指示安裝Windows驅(qū)動程序(.sys),包含相應USB設備的詳細信息和所使用的驅(qū)動程序。只需將USB設備的VID/PID值添加到INF文件的適當位置即可,設計中PID為1002,VID為0505,這樣在USB設備接入計算機時,系統(tǒng)查找與設備ID相一致的INF文件,使用INF文件指示的驅(qū)動程序完成與計算機的通信。
2.3 USB固件程序
USB固件程序的主要功能是完成相關寄存器初始化,對各種USB請求進行響應,在響應和中斷中實現(xiàn)具體的功能。Cypress公司提供了USB固件開發(fā)的基本框架,因此只需將相關Slave FIFO模式的寄存器配置正確,并在USB請求中添加接收和發(fā)送數(shù)據(jù)以及對I/O口控制的程序即可[10]。主要步驟包括:
1) 在PERIPH.c文件的TD_Init()函數(shù)中將芯片設置為同步Slave FIFO模式,使用端點2進行數(shù)據(jù)傳輸,方向為自動寫入,相應的寄存器配置為512×4的緩存方式。
2) 在FW.c中添加自定義請求響應以及對應的處理程序,包括:開始采集、初始化寄存器、停止采集、設置積分時間、設置增益等級、設置箝位電平,對應的請求碼分別為0xb2,0xb3,0xb4,0xb5,0xb6,0xb7。
3) 調(diào)試編譯成功后生成HEX文件,使用自帶的Hex2bix.exe程序?qū)EX文件轉(zhuǎn)換為iic文件,通過CyConsole控制面板將iic文件燒寫到E2PROM中,上電后便執(zhí)行固件程序。
2.4 上位機程序
上位機應用程序主要完成對圖像系統(tǒng)參數(shù)設定、圖像采集過程控制、圖像數(shù)據(jù)的處理與顯示功能。上位機基于.NET平臺的Visual C#語言進行開發(fā),通過調(diào)用動態(tài)鏈接庫CyUSB.dll中提供的函數(shù),就能方便地對USB設備進行操作。程序界面分為功能區(qū)和圖像顯示區(qū),功能區(qū)包含5個按鍵分別是連接USB設備、開始采集、積分時間、增益、鉗位電平。連接USB設備按鍵通過USBDeviceList函數(shù)獲取USB設備列表,在列表中將USBDevices[0x0505,0x1002]設定為所用的USB設備,返回值為真時會在軟件界面顯示“已經(jīng)連接”,然后就可以調(diào)用相關函數(shù)對USB設備進行讀寫操作。開始采集按鍵控制啟動和關閉數(shù)據(jù)采集,單獨開啟線程,通過inEndpoint.XferData函數(shù)不斷接收EP2端發(fā)送來的數(shù)據(jù),當接收的數(shù)據(jù)量達到640×480時對數(shù)據(jù)進行處理與顯示。
系統(tǒng)各部分研制完成后進行功能測試。首先測試CCD驅(qū)動電路的工作情況。使用示波器,對經(jīng)過預處理后的CCD輸出信號進行測試和分析。圖5a)為無光條件下的輸出,圖5b)為強光條件下的輸出。
無光環(huán)境時峰峰值電壓為980 mV,而強光環(huán)境時峰峰值電壓為1.24 V,可以看到不同條件下,信號幅值變化程度與光照強度成正比,CCD工作正常,因而驗證了驅(qū)動電路的正確性。
其次測試系統(tǒng)的整體性能,將設備連接到Windows 32位系統(tǒng)的PC機上,按照提示安裝好驅(qū)動程序,硬件被識別后,運行上位機程序,點擊連接設備和開始采集按鈕進行圖像采集。采集的圖像實時顯示在應用程序圖像顯示區(qū),通過調(diào)節(jié)焦距使得圖像達到最佳顯示效果。圖6是經(jīng)外加光學鏡頭對焦后顯示的圖像結(jié)果。圖像的分辨率為640×480約為30萬像素,可達到40 f/s的采集速度。實驗結(jié)果表明系統(tǒng)工作正常,功能完善,可以實現(xiàn)圖像的實時采集、傳輸和顯示。
本文設計了一種以ICX618 CCD為傳感器的圖像采集系統(tǒng)。該系統(tǒng)以FPGA為控制核心,由USB接口進行數(shù)據(jù)傳輸,開發(fā)了上位機軟件用于操控系統(tǒng)和顯示圖像。系統(tǒng)成像質(zhì)量清晰,具備USB即插即拔的特性,同時有專用的驅(qū)動和上位機程序,安裝方便,使用簡單。這樣使得系統(tǒng)具有良好的可移植性,能夠廣泛滿足圖像處理前端數(shù)據(jù)采集的需求。通過試驗,初步驗證了系統(tǒng)功能可靠性,能夠為科學級CCD的應用提供一種低成本的前期驗證方案。
[1] 黃以華,黃劍峰.基于USB的高清彩色CCD圖像采集系統(tǒng)[J].電子設計工程,2012,20(4):170?173.
HUANG Yihua, HUANG Jianfeng. A high resolution color CCD image acquisition system based on USB [J]. Electronic design engineering, 2012, 20(4): 170?173.
[2] SARRAZIN P, BLAKE D, FELDMAN S, et al. Field deployment of a portable XRD/XRF instrument on Mars analog terrain [J]. Advances in x?ray analysis, 2005, 48: 194?203.
[3] 沈揚.新型X射線探測設備的探索性研究[D].上海:復旦大學,2011:15?16.
SHEN Yang. An exploratory study of the new X?ray detection device [D]. Shanghai: Fudan University, 2011: 15?16.
[4] Sony Corporation. ICX618AKA: diagonal 4.5 mm (type 1/4) progressive scan CCD image sensor with square pixel for color cameras [EB/OL]. [2011?09?10]. https://wenku.baidu.com/view/d397b40fba1aa8114431d943.html.
[5] 李亞鵬,何斌,付天驕.行間轉(zhuǎn)移型面陣CCD成像系統(tǒng)設計[J].紅外與激光工程,2014,43(8):2602?2606.
LI Yapeng, HE Bin, FU Tianjiao. Design of imaging system of interline area CCD [J]. Infrared and laser engineering, 2014, 43(8): 2602?2606.
[6] Analog Devices, Inc. AD9945: complete 12?bit 40 MHz CCD signal processor [EB/OL]. [2003?01?08]. https://wenku.baidu.com/view/a8147f452b160b4e767fcf51.html.
[7] 邵冬冬.基于FPGA的彩色CCD的熒光圖像采集和驅(qū)動模組設計[D].杭州:浙江大學,2015:16?17.
SHAO Dongdong. The fluorescence image acquisition and driving module design of color CCD based on FPGA technology [D]. Hangzhou: Zhejiang University, 2015: 16?17.
[8] 趙林,孟令軍,于磊,等.基于CY7C68013A的USB 2.0高速接口設計[J].電子技術應用,2014,40(1):131?133.
ZHAO Lin, MENG Lingjun, YU Lei, et al. USB 2.0 high?speed interface design based on CY7C68013A [J]. Application of electronic technique, 2014, 40(1): 131?133.
[9] 鄭杰.USB 3.0編程寶典[M].北京:電子工業(yè)出版社,2013:226?227.
ZHENG Jie. USB 3.0 programming treasure [M]. Beijing: Publishing House of Electronics Industry, 2013: 226?227.
[10] Cypress Semiconductor Corporation. CY7C68013A: EZ?USB? FX2LPTM USB microcontroller, high?speed USB peripheral controller [EB/OL]. (2012?02?07) [2013?05?23]. https://www.element14.com/community/docs/DOC?54523/l/cypress?datasheet?for?cy7c68013a?ez?usb?fx2lp?usb?microcontroller?high?speed?usb?peripheral?controller.