吳崢,佟首峰,宋延嵩
(1.長春理工大學(xué) 光電工程學(xué)院,長春 130022;2.長春理工大學(xué) 空間光電技術(shù)研究所,長春 130022)
隨著科學(xué)技術(shù)的發(fā)展,科學(xué)級(jí)相機(jī)在國內(nèi)外科研工作以及工業(yè)生產(chǎn)中被廣泛使用。近年來CMOS器件制造工藝不斷進(jìn)步,CMOS相機(jī)由于自身低成本、低功耗高集成度和高靈敏度等優(yōu)勢(shì)被輕小型、低能耗的圖像處理系統(tǒng)所應(yīng)用。由于進(jìn)口相機(jī)價(jià)格昂貴,且有時(shí)很難滿足一些特定要求,航空等部門產(chǎn)品國產(chǎn)化的需求日益緊迫[1-2],因此需要研發(fā)一款具有高分辨率可開窗口的科學(xué)級(jí)相機(jī)。
本文以Gpixel公司的GMAX0505光電傳感器為基礎(chǔ),F(xiàn)PGA為核心器件[3-6],設(shè)計(jì)了相機(jī)系統(tǒng)的電路硬件,并編寫FPGA程序,實(shí)現(xiàn)了整體相機(jī)系統(tǒng)的運(yùn)行。
本文設(shè)計(jì)的可開窗口大面陣的CMOS相機(jī),使用的CMOS圖像傳感器為Gpixel公司生產(chǎn)的GMAX0505。此圖像傳感器光學(xué)尺寸為1.1英寸,具有5 376×5 184個(gè)可讀取像素,有效像素為5 120×5 120個(gè),像素尺寸為2.5 μm×2.5 μm。GMAX 0505是一款電荷域全局快門高速圖像傳感器,快門效率可達(dá)80 dB,時(shí)域噪聲小于1.6 e-,其峰值量子效率高達(dá)70%。GMAX0505使用差分信號(hào)技術(shù)來輸出讀取的圖像數(shù)據(jù),有48個(gè)差分信號(hào)數(shù)據(jù)通道,一個(gè)控制通道和一個(gè)時(shí)鐘通道??梢赃x擇2~48個(gè)通道用于數(shù)據(jù)的傳輸,它支持以減少輸出通道的數(shù)量讀出完整圖像,幀頻會(huì)按照比例減少,每秒最高可以輸出150幀圖像。相機(jī)主要系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)主要工作流程為:上位機(jī)通過異步串口向FPGA發(fā)送所要進(jìn)行的控制信息。FPGA在接收到上位機(jī)傳來的信息后通過配置SPI使CMOS圖像傳感器按照配置參數(shù)進(jìn)行光電轉(zhuǎn)換和AD轉(zhuǎn)換,轉(zhuǎn)換結(jié)果為10 bit或者12 bit的圖像數(shù)據(jù),轉(zhuǎn)換后的數(shù)字信號(hào)通過LVDS接口傳遞給FPGA。GMAX0505可使用48通道進(jìn)行數(shù)據(jù)傳輸,在一行數(shù)據(jù)傳輸過程中每條通道傳輸112個(gè)像素信息,通過FPGA中的處理,將其轉(zhuǎn)換成標(biāo)準(zhǔn)的Cameralink格式,通過接口輸出給帶有采集卡的計(jì)算機(jī),計(jì)算機(jī)再對(duì)所接收到的圖像數(shù)據(jù)進(jìn)行儲(chǔ)存和處理。
整體硬件電路系統(tǒng)由三塊PCB板構(gòu)成,第一塊是圖像傳感器板。圖像傳感器板主要由CMOS芯片、其他所需電阻、電容和接口等組成,其中,CMOS芯片為核心。GMAX0505圖像傳感器主要使用SPI進(jìn)行配置,可以通過把寄存器配置寫入SPI接口來控制相機(jī)時(shí)序,從而實(shí)現(xiàn)相機(jī)的多種功能。當(dāng)相機(jī)上電或重新設(shè)置后必須對(duì)圖像傳感器重新編程。
第二塊是FPGA控制板,電路原理如圖2所示。FPGA電路是控制整體相機(jī)的核心器件,集中央控制和運(yùn)算為一體,不僅需要對(duì)CMOS圖像傳感器提供驅(qū)動(dòng)信號(hào),同時(shí)還會(huì)從上位機(jī)接受控制信號(hào),對(duì)傳感器進(jìn)行開窗口等操作,最后還要把圖像數(shù)據(jù)上傳給上位機(jī)。本相機(jī)所使用的FPGA為Xilinx公司的Artix-7系列的XC7A50T,使用28 nm工藝,內(nèi)部擁有52 160個(gè)邏輯單元,收發(fā)速度高達(dá)6.6 Gb/s。
圖2 FPGA配置電路原理圖
第三塊為Cameralink以及電源接口板,主要是兩個(gè)MDR-26接口和一個(gè)電源口以及電源芯片。為將圖像傳感器中輸出的圖像數(shù)據(jù)信號(hào)上傳給上位機(jī),在FPGA中編寫了相應(yīng)程序,將圖像數(shù)據(jù)在FPGA中轉(zhuǎn)換為Cameralink格式,通過接口輸出給上位機(jī)。電源供電電路為FPGA芯片XC7A50T、外部晶振SiT8008B、EEPROM芯片M25Q128FW以及圖像傳感器GMAX0505等。選用芯片TPS6215作為電源芯片,TPS6215x系列屬于易用型同步降壓DC-DC轉(zhuǎn)換器,針對(duì)高功率密度的應(yīng)用進(jìn)行了優(yōu)化。該系列器件具有3~17 V的寬運(yùn)行輸入電壓范圍,其輸出電壓為0.9~6 V,支持高達(dá)1 A的持續(xù)輸出電流,可以很好地滿足本相機(jī)的供電設(shè)計(jì)需求。同時(shí),為使GMAX0505順利工作,選用了多個(gè)運(yùn)算放大器為傳感器芯片提供參考電壓。
硬件設(shè)計(jì)完成后,下一步要通過FPGA來實(shí)現(xiàn)GMAX0505的各項(xiàng)功能,在FPGA上編寫Verilog語言,使相機(jī)順利工作,GMAX0505的工作方式主要通過配置SPI寄存器來實(shí)現(xiàn)。在GMAX0505中總共有256字節(jié)的寄存器,當(dāng)傳感器通電后,所有寄存器將重置為默認(rèn)狀態(tài),在傳感器正確操作之前,一些寄存器需要重新配置,這些寄存器的讀寫是通過SPI接口進(jìn)行的。在傳感器工作時(shí)SPI需要的17個(gè)數(shù)據(jù)位都是由FPGA所提供,其中包括:一個(gè)控制位,發(fā)送的第一位指示操作說明是寫入(1)還是讀出(0);8位地址位,定義需要的寄存器地址,MSB為第一發(fā)送位;8位數(shù)據(jù)位,定義要寫在選定寄存器的數(shù)據(jù),MSB為第一發(fā)送位。也可以在一次操作中進(jìn)行連續(xù)編寫,在此情況下,只有第一個(gè)寄存器需要地址位,當(dāng)?shù)谝粋€(gè)8位數(shù)據(jù)位編程到地址為N的寄存器后,以下的8位數(shù)據(jù)位將會(huì)被自動(dòng)編程到地址為N+1的寄存器下。SPL_CLK的最大頻率為10 MHz,當(dāng)SPI_CLK上升沿時(shí)對(duì)GMAX0505的數(shù)據(jù)位進(jìn)行采樣。在第一個(gè)數(shù)據(jù)位被采樣之前,SPI_EN信號(hào)在半鐘周期內(nèi)必須是高的,SPI_EN必須在最后一個(gè)數(shù)據(jù)位被采樣后的1個(gè)時(shí)鐘周期內(nèi)保持高。采樣的數(shù)據(jù)將在最后一個(gè)下降的時(shí)鐘邊緣寫入序列器中,因此SPI_CLK必須在寫入操作成功的最后再次降低。圖3為時(shí)序仿真圖像。
圖3 SPI時(shí)序仿真圖像
為了提升幀頻[7],GMAX0505圖像傳感器可以在水平方向上進(jìn)行開窗口。圖像傳感器的像素?cái)?shù)據(jù)組最多可以分為16個(gè)區(qū)域,對(duì)于這16個(gè)可開窗口區(qū)域,每個(gè)區(qū)域需要配置兩個(gè)規(guī)定的寄存器來表示開窗口區(qū)域起始行數(shù),要求在0~5 147之間,另外還需要兩個(gè)寄存器來確定此開窗口區(qū)域所持續(xù)的行數(shù)。以窗口1為例,若想在圖像傳感器上進(jìn)行開窗口1操作,需對(duì)地址為20和19的寄存器進(jìn)行配置,將兩個(gè)寄存器合二為一,以寄存器20為高8位,寄存器19為低8位,共16位二進(jìn)制數(shù)據(jù)來表示開窗口區(qū)域的起始行數(shù)。同理,需配置地址為22和21的寄存器來控制此開窗口區(qū)域持續(xù)的行數(shù),通過FPGA對(duì)SPI的配置來完成開窗口的位置以及大小。此相機(jī)允許開窗口區(qū)域重疊,但重疊行的第二次讀取將輸出暗圖像數(shù)據(jù)。
GMAX0505使用LVDS輸出圖像數(shù)據(jù),共有48個(gè)LVDS數(shù)據(jù)通道。首先將所有輸出的LVDS串行信號(hào)轉(zhuǎn)換為并行信號(hào)。時(shí)鐘信號(hào)輸出雙倍數(shù)據(jù)速率的時(shí)鐘,用來在接收端進(jìn)行采樣,它與數(shù)據(jù)通道和控制通道同步,偏移最小,控制信道輸出用于正確接收?qǐng)D像數(shù)據(jù)和監(jiān)測(cè)傳感器狀態(tài)的必要信息。為了使接收數(shù)據(jù)準(zhǔn)確,一般在圖像采集前對(duì)輸出端口進(jìn)行訓(xùn)練,使用DDR時(shí)鐘直接對(duì)數(shù)據(jù)進(jìn)行采樣以及控制輸出是可以的。在這個(gè)訓(xùn)練中,通常只需要字詞的對(duì)齊。訓(xùn)練模式(TP)將在STREAM_EN轉(zhuǎn)變?yōu)椤?”后在所有數(shù)據(jù)通道上連續(xù)輸出,寄存器CTR_TRAIN_EN需要設(shè)置為狀態(tài)“1”才能在控制通道上啟用TP,可以實(shí)現(xiàn)字對(duì)齊。當(dāng)訓(xùn)練過程結(jié)束后,將寄存器CTR_TRAIN_EN設(shè)置到狀態(tài)“0”。
GMAX0505陣列數(shù)據(jù)輸出被分割成24個(gè)區(qū)域,每個(gè)區(qū)域包含一個(gè)頂部輸出(OUTT)和一個(gè)底部輸出(OUTB),每個(gè)通道輸出此區(qū)域像素?cái)?shù)據(jù)的一半。在本相機(jī)中,共使用48個(gè)通道輸出10 bit圖像數(shù)據(jù),通過OUTT輸出像素?cái)?shù)據(jù)的奇數(shù)列,通過OUTB輸出像素?cái)?shù)據(jù)的偶數(shù)列。每個(gè)通道輸出112個(gè)像素信息,行輸出包括訓(xùn)練模式以及輸出數(shù)據(jù),當(dāng)出現(xiàn)起始同步碼后,開始輸出第一行的像素。如圖4所示,以通道OUTB<0>為例,當(dāng)通道輸出同步碼 SOL1,SOL2,SOL3,SOL4后,開始輸出10位像素信息,從第0列開始一直到第222列共112個(gè)偶數(shù)列的像素信息,每個(gè)像素從最低位數(shù)據(jù)為起始輸出,輸出10位數(shù)據(jù)后,接著輸出下一個(gè)像素的數(shù)據(jù),當(dāng)112個(gè)像素?cái)?shù)據(jù)輸出完畢,以 EOL1,EOL2,EOL3,EOL4同步碼作為結(jié)束的標(biāo)志。與此同時(shí),其余47個(gè)通道也完成各自分配的112個(gè)像素的輸出,一行結(jié)束后行輸出繼續(xù)下一行的像素?cái)?shù)據(jù)的輸出,直至一幀圖像全部輸出完畢。一幀輸出后,行輸出進(jìn)入訓(xùn)練模式,等待下一幀起始的同步碼,再次重復(fù)以上過程,接收新一幀圖像數(shù)據(jù)。傳感器輸出仿真如圖5所示。
圖4 像素映射
圖5 傳感器輸出仿真
本相機(jī)使用的連接接口為Cameralink,通過Cameralink接口把相機(jī)產(chǎn)生的實(shí)時(shí)圖像高速傳輸?shù)讲杉ㄟM(jìn)行數(shù)據(jù)的實(shí)時(shí)處理,并通過PCIe接口實(shí)現(xiàn)采集卡和電腦的通信[8-9]。Cameralink是專門為數(shù)字相機(jī)的圖像數(shù)據(jù)控制信號(hào)及相機(jī)數(shù)據(jù)傳輸提出的接口標(biāo)準(zhǔn),通過將28位數(shù)據(jù)信號(hào)和一個(gè)時(shí)鐘信號(hào)以7∶1的比例轉(zhuǎn)換為5對(duì)差分信號(hào)來傳遞信息??紤]到本相機(jī)為5 120×5 120大面陣相機(jī),所輸出的數(shù)據(jù)量比較多,故使用Full模式。Full模式一般使用3個(gè)Cameralink芯片和兩條電纜來進(jìn)行數(shù)據(jù)傳輸,以便加快傳輸速率。
FPGA通過48個(gè)通道接收?qǐng)D像傳感器輸出的圖像數(shù)據(jù),將數(shù)據(jù)以O(shè)UTB<0>與OUTT<0>這種對(duì)應(yīng)數(shù)據(jù)組組成一組,48組數(shù)據(jù)變?yōu)?4組數(shù)據(jù),每個(gè)像素點(diǎn)包含10位數(shù)據(jù),以兩組數(shù)據(jù)從低到高位的形式捏合為20位的數(shù)據(jù)寫入FIFO[10],當(dāng)一行圖像數(shù)據(jù)輸出后,以80位為一組通過FIFO讀取出來。由于Cameralink每個(gè)端口只有8位,故取每個(gè)像素點(diǎn)的高8位,將80位的數(shù)據(jù)變?yōu)?4位,以并行的形式輸出出來,從而轉(zhuǎn)換為Cameralink標(biāo)準(zhǔn)通過MDR-26輸出各計(jì)算機(jī)的采集卡上,完成相機(jī)的輸出工作。Cameralink輸出仿真如圖6所示。
圖6 Camera Link輸出仿真圖像
通過對(duì)相機(jī)整體系統(tǒng)的設(shè)計(jì),在硬件上自主設(shè)計(jì)出了整個(gè)系統(tǒng)的原理圖,并完成了PCB設(shè)計(jì)以及焊接,制造出了相機(jī)的主體實(shí)物,如圖7所示。軟件上使用Verilog HDL語言對(duì)相機(jī)進(jìn)行了編程,實(shí)現(xiàn)了SPI配置、開窗口、Cameralink輸出以及串口通信等功能。成功驅(qū)動(dòng)了GMAX0505圖像傳感器,完成了圖像的采集、開窗口和輸出圖像等功能[11]。
圖7 相機(jī)實(shí)物圖
為了驗(yàn)證成像系統(tǒng)的成像效果,給相機(jī)配備了光學(xué)系統(tǒng)并進(jìn)行了室內(nèi)成像實(shí)驗(yàn),圖像通過Cameralink接口傳輸至帶有圖像采集卡的上位機(jī),使用CamExpert軟件可以采集到清晰的圖像,且顯示成像分辨率為5 120×5 120,采集到的圖像如圖8所示。通過對(duì)相機(jī)進(jìn)行開窗口操作,可以采集到圖9所示的圖像,使用減小視場(chǎng)大小的方法能夠提升相機(jī)的幀頻,CamExpert顯示輸出給計(jì)算機(jī)的速率可達(dá)到100 f/s。
圖9 開窗后圖像
本文主要以Gpixel公司的GMAX0505圖像傳感器為基礎(chǔ),使用Cameralink為傳輸標(biāo)準(zhǔn),設(shè)計(jì)并研制出基于FPGA的大面陣可開窗口的CMOS國產(chǎn)化相機(jī)。相機(jī)成像系統(tǒng)的分辨率可達(dá)到5 120×5 120,并且可以完成開窗口操作。通過使用結(jié)果可以看出,該相機(jī)成像穩(wěn)定,運(yùn)行可靠,集成度高,具有高分辨率、可開窗口提升幀頻等特點(diǎn),十分適合于科學(xué)應(yīng)用的研究。