王伶杰,楊世洪
(1.中國科學院光電技術(shù)研究所,四川成都 610209;2.中國科學院大學,北京 100049;3.中國科學院 空間光電精密測量技術(shù)重點實驗室,四川成都 610209)
相較于普通場合使用的相機,科學相機往往面臨更加惡劣的工作環(huán)境,并且承擔著重要的探測任務[1]。因此,人們對科學相機提出了更高的要求,包括高動態(tài)范圍、高靈敏度、低噪聲、低功耗等[2]。
早期的科學相機大都使用CCD 圖像傳感器,這是因為在當時的制造工藝下,CMOS 圖像傳感器的各項指標都沒有CCD 優(yōu)秀,無法滿足高質(zhì)量的成像系統(tǒng)需求[3-4]。近年來,隨著CMOS 傳感器技術(shù)的不斷發(fā)展,CMOS 器件的性能得到了很大的提升,尤其是科學級的CMOS 圖像傳感器,其成像質(zhì)量甚至可以媲美CCD[5],這為研制高性能的科學級CMOS 相機奠定了良好的技術(shù)基礎。
針對國內(nèi)對于科學成像系統(tǒng)的開發(fā)需求,文中選擇了國產(chǎn)科學級CMOS圖像傳感器GSENSE6060BSI,設計了相機系統(tǒng)的硬件電路和FPGA 功能模塊,并編寫了相機的控制軟件。
GSENSE6060BSI 是長光辰芯光電研制的一款國產(chǎn)背照式sCMOS 圖像傳感器。在傳統(tǒng)的前照式CMOS 器件中,光線在到達光電二極管之前,需要穿過多個介質(zhì)層和金屬布線層,造成器件量子效率和靈敏度的降低。而在背照式器件中,光線可以從沒有布線層阻檔的襯底背面直接進入光電二極管,相比于前照式的CMOS 器件,其量子效率和靈敏度都得到顯著提升[6]。該相機系統(tǒng)使用GSENSE6060BSI 芯片,其峰值量子效率可以達到95%,且動態(tài)范圍高達90 dB,是天文和科學成像應用的理想選擇。
圖1 是GSENSE6060BSI 的結(jié)構(gòu)框圖,該傳感器的有效像素是6 144×6 144,像素尺寸為10 μm×10 μm,圖像數(shù)據(jù)通過50 個LVDS 數(shù)據(jù)通道輸出。在STD 模式下,頂部和底部的數(shù)據(jù)通道分別輸出一幅圖像的奇數(shù)行和偶數(shù)行數(shù)據(jù);在HDR 模式下,頂部的25 個通道輸出一幅低增益的圖像,底部的25 個通道輸出一幅高增益的圖像。
圖1 GSENSE6060BSI結(jié)構(gòu)框圖
基于GSENSE6060BSI 設計的相機電路如圖2 所示,其中FPGA 是整個相機系統(tǒng)的控制核心,傳感器的所有輸入、輸出信號都需要由FPGA 進行控制和處理[7]。因此,該相機選擇了XILINX KINTEX-7 系列的FPGA 芯片XC7K325T-2FFG900I。該芯片具有大量的IO 引腳和豐富的邏輯資源[8],不僅可以滿足當前相機系統(tǒng)的基本成像需求,還能為后續(xù)的相機功能完善,比如非均勻性校正、圖像算法移植等提供足夠的硬件資源。
圖2 相機電路結(jié)構(gòu)
相機硬件電路包括傳感器電源、FPGA 電源、FPGA 配置、UART 接口、電平轉(zhuǎn)換、Camera Link 接口等,由于相機整體電路較為龐大,因此文中只選取了其中較為關(guān)鍵的兩點進行介紹。
整個相機系統(tǒng)的電源可以大致分為兩個部分:FPGA電源和傳感器電源。FPGA共有11種電源,按上電順序被分為3組,如表1所示。上電時,按照FPGA_SUPPLY1、FPGA_SUPPLY2、FPGA_SUPPLY3 的順序依次上電,下電時的順序與上電順序正好相反。
表1 FPGA電源
該相機選用了一款專用的電源時序控制芯片LM3880 來對FPGA 的電源進行控制,其時序波形如圖3 所示,將圖中的FLAG 信號與FPGA 電源芯片的使能信號連接就能夠控制FPGA 電源的上電和下電順序,具體電路如圖4 所示。
圖3 LM3880時序波形
圖4 FPGA電源控制電路
與FPGA 不同的是,傳感器只對其電源的上電順序有要求,表2 顯示了傳感器的15 種電源及其分組情況,在該相機系統(tǒng)中,傳感器電源的上電和下電都由FPGA 控制,不需要設置額外的控制電路。
表2 傳感器電源
傳感器共有53 對差分信號和51 個單端信號,這些信號都需要連接到FPGA 上。對于差分信號,可以使用LVDS25 電平標準直接與FPGA 的差分端口連接。而對于單端信號,由于其高電平達到了5 V 以上,F(xiàn)PGA 沒有與之匹配的電平標準,因此,需要使用電平轉(zhuǎn)換芯片將信號統(tǒng)一成LVCMOS33 的電平范圍,然后再與FPGA 的端口進行連接。
51 個單端信號包含48 個輸入信號和3 個輸出信號,其中,48 個輸入信號是由FPGA 產(chǎn)生的傳感器控制信號,因此,需要先將FPGA 的3.3 V 電平信號轉(zhuǎn)換成5 V 的電平信號,然后才能連接到傳感器引腳。該相機使用了3 片16 bit 的SN74LVC16T245芯片來實現(xiàn)這一升壓轉(zhuǎn)換,具體電路如圖5 所示。3 個輸出信號包含兩個輸出時鐘和一個SPI 信號,傳感器輸出信號的高電平為6.5 V,因此,需要先將這些信號轉(zhuǎn)換到3.3 V 的電平標準,然后才能與FPGA 的端口連接。該相機使用了一片8 bit 的SN74LVC8T245 芯片來實現(xiàn)這一降壓轉(zhuǎn)換,具體電路如圖6 所示。
圖5 升壓轉(zhuǎn)換電路
圖6 降壓轉(zhuǎn)換電路
FPGA 是整個相機系統(tǒng)的核心處理器,用于驅(qū)動相機正常工作[9]。該設計用VHDL 語言編寫了相機的控制代碼,具體的功能模塊如圖7 所示,其中控制中心模塊接收PC 機通過UART 接口發(fā)送的控制指令,對指令進行解析,然后驅(qū)動相應模塊工作,并將工作狀態(tài)回送給PC 機;時鐘管理模塊產(chǎn)生相機系統(tǒng)所需要的不同頻率的時鐘;上電配置模塊產(chǎn)生傳感器上電過程中需要的時序信號和傳感器電源芯片的使能信號;SPI 是FPGA 與sCMOS 的通信模塊[10],利用SPI 接口可以對傳感器內(nèi)部寄存器的值進行讀寫;時序控制模塊產(chǎn)生傳感器曝光和讀出的驅(qū)動信號,并控制曝光和讀出的位置;圖像接收模塊接收傳感器輸出的LVDS 串行圖像數(shù)據(jù),并將其轉(zhuǎn)換為并行的12 bit 像素數(shù)據(jù);圖像拼接模塊接收單個的像素數(shù)據(jù)并將其拼接成一幅完整的圖像,然后將圖像數(shù)據(jù)通過Camera Link 接口傳輸?shù)絇C 機進行顯示。
圖7 FPGA邏輯模塊
圖8 是傳感器的上電配置時序,其中SENSOR_SUPPLY1 和SENSOR_SUPPLY2 是傳感器的兩組電源;CLKP_IN、CLKN_IN 是傳感器的LVDS 輸入時鐘;CLK_SEQ 是FPGA 內(nèi)的邏輯時鐘,與傳感器的像素時鐘同頻;SYS_RST_N 是傳感器的系統(tǒng)復位信號;SPI config 表示對傳感器的內(nèi)部寄存器進行的配置;RST_CLK_N 是傳感器的時鐘復位信號。
圖8 傳感器上電配置
上電配置模塊接收到由控制中心發(fā)來的上電指令后,先產(chǎn)生第一組傳感器電源芯片的使能信號,給SENSOR_SUPPLY1 上電,然后遵循延遲時間依次產(chǎn)生時鐘信號、系統(tǒng)復位信號和SPI 配置信號。等待傳感器配置完成之后,產(chǎn)生第二組傳感器電源芯片的使能信號,當?shù)诙M電源穩(wěn)定后,將時鐘復位信號拉高,2 μs 后傳感器即可開始正常工作。
SPI(Serial Peripheral Interface)是一種全雙工串行通信接口[11],傳感器芯片上設置有四線SPI 接口,F(xiàn)PGA 可以通過SPI 接口對傳感器內(nèi)部寄存器的值進行配置,從而控制傳感器的工作模式,同時,傳感器內(nèi)部寄存器的值也可以通過SPI 接口讀出來。
傳感器的時序控制涉及43 個信號,其中28 個信號是傳感器的驅(qū)動信號,另外15個是decoder信號,用于控制傳感器曝光和讀出的行位置。在STD 模式下,傳感器每次曝光和讀出一行需要占用430 個像素時鐘周期,雖然每次曝光和讀出的位置不同,但28 個驅(qū)動信號的變化卻是相同的。在28 個驅(qū)動信號中,只有16 個信號是變化的,其余的12個信號維持固定的電平不變,因此,該設計在FPGA 中創(chuàng)建了一個大小為430×16 的ROM IP 核,用于存儲這16個驅(qū)動信號,每次使用時,只需按照時鐘周期計數(shù)將這些驅(qū)動信號從ROM 中讀出即可。
HDR 模式下的時序控制波形與STD 模式下有所不同,但實現(xiàn)方法與STD模式相同,此處不再贅述。
傳感器共有50 對差分數(shù)據(jù)通道,每25 對通道輸出一行圖像數(shù)據(jù),每個12 bit 像素都以高位在前、低位在后的串行數(shù)據(jù)格式輸出。根據(jù)傳感器數(shù)據(jù)輸出的特點,該相機在FPGA 內(nèi)設計了包含串并轉(zhuǎn)換和對準功能的圖像接收模塊。
串并轉(zhuǎn)換是將傳感器輸出的12 位串行數(shù)據(jù)轉(zhuǎn)換成12 位的并行數(shù)據(jù)。在FPGA 內(nèi),設置一個12 位的移位寄存器,將傳感器輸出的圖像數(shù)據(jù)依次向左移動送入移位寄存器,每移動12 位之后,就可以得到一個并行的12 位數(shù)據(jù)[12]。
串并轉(zhuǎn)換之后雖然得到了一個12 位的并行數(shù)據(jù),但是由于傳感器輸出和FPGA 數(shù)據(jù)接收之間存在延遲和差異,這個并行數(shù)據(jù)并不一定是一個正確的像素數(shù)據(jù),因此,還需要對數(shù)據(jù)進行對準。設計中的對準包括3 個部分:位對準、字對準和通道對準。
對準時,需要將傳感器置于training 模式,在該模式下,傳感器會輸出已知的訓練字,供FPGA 采樣[13]。位對準的目的是使采樣時鐘在數(shù)據(jù)穩(wěn)定的位置進行采樣[14],該設計使用XINLINX 的原語IDELAY2 對圖像數(shù)據(jù)進行延遲,延遲時鐘為200 MHz。如果在連續(xù)的8 次延遲中,串并轉(zhuǎn)換之后的12 位數(shù)據(jù)都是一致的,就以第四次延遲之后的位置作為采樣點,這樣可以避免采樣時鐘在數(shù)據(jù)邊沿采樣,保證采樣數(shù)據(jù)的準確性。字對準的目的是使所有通道數(shù)據(jù)的最高位對齊,保證串并轉(zhuǎn)換之后的12 位數(shù)據(jù)是一個正確的像素數(shù)據(jù)。該設計使用了6 MHz 的像素時鐘對圖像數(shù)據(jù)進行延遲,每次增加一個延遲時鐘,直到串并轉(zhuǎn)換之后的數(shù)據(jù)與訓練字相同。通道對準的目的是使各個通道的數(shù)據(jù)對齊,由于已經(jīng)完成了位對準和字對準,所以只需要對比各個通道輸出的第一個像素的最高位就可以確定各個通道之間的延遲[15]。
傳感器的像素時鐘為6 MHz,50個通道每秒可以輸出300 MHz 的像素數(shù)據(jù)。該設計使用Camera Link的Medium 模式進行數(shù)據(jù)傳輸,傳輸時鐘為75 MHz,每個時鐘周期內(nèi)可以傳輸4 個像素數(shù)據(jù)[16]。具體的圖像拼接通過FIFO 進行,圖像拼接完成之后,將4 路圖像數(shù)據(jù)和圖像使能信號連接至Camera Link 接口,由Camera Link 圖像采集卡采集圖像數(shù)據(jù)。
控制中心是FPGA 與PC 機之間的通信模塊,在整個相機系統(tǒng)中扮演著“指揮官”的角色。PC 機通過串口向FPGA 發(fā)送指令幀,F(xiàn)PGA 接收到這些指令后就對指令進行解析,然后驅(qū)動FPGA 內(nèi)相應的模塊工作,最后將工作狀態(tài)以指令幀的格式回送給PC 機。
指令幀的具體格式為<幀頭><命令字><數(shù)據(jù)字1><數(shù)據(jù)字2><數(shù)據(jù)字3><校驗和><信息長度><幀尾>。幀頭和幀尾都是固定的字節(jié)數(shù)據(jù),用于表示指令的開始和結(jié)尾;數(shù)據(jù)字用于傳遞特定的數(shù)值,比如傳感器的曝光時間、請求的圖像幀數(shù)等;校驗和用于驗證指令本身的正確性,將命令字和所有數(shù)據(jù)字相加取低8 位即為校驗和;信息長度表示一個指令幀中除幀頭和幀尾之外的字節(jié)數(shù)。
該相機系統(tǒng)按照指令幀的格式,定義了PC 機與FPGA 之間的通信協(xié)議,并用MFC 編寫了相機控制軟件,利用該軟件已經(jīng)成功實現(xiàn)了對相機的控制。
該相機在STD 和HDR 模式下均已順利成像,圖9是傳感器在STD模式下輸出的圖像,圖10和圖11分別是傳感器在HDR 模式下輸出的高增益圖像和低增益圖像(圖中白色虛線為圖像傳感器壞點,屬正?,F(xiàn)象)。在STD 模式下,相機的全分辨率幀頻是4.5 fps,在HDR 模式下,相機的全分辨率幀頻是2 fps。針對不同的應用需求,可選擇不同的工作模式,當需要更高幀頻時,選擇STD 模式,當需要合成高動態(tài)范圍的圖像時,選擇HDR 模式。
圖9 STD模式下的輸出圖像
圖10 HDR模式下輸出的高增益圖像
圖11 HDR模式下輸出的低增益圖像
文中根據(jù)國產(chǎn)sCMOS 圖像傳感器GSENSE 6060BSI 的特點,設計了相機的硬件電路、FPGA 控制代碼和相機的控制軟件。通過相機控制軟件發(fā)送指令給FPGA,由FPGA 產(chǎn)生傳感器的驅(qū)動信號并接收傳感器產(chǎn)生的圖像數(shù)據(jù),最后通過圖像傳輸接口將圖像數(shù)據(jù)傳輸?shù)絇C機進行顯示。經(jīng)調(diào)試,相機已經(jīng)順利輸出圖像,證明相機系統(tǒng)的各部分設計是合理的。
該相機采用Camera Link 接口輸出了圖像數(shù)據(jù),驗證了相機軟件和硬件部分的可行性,但相機的幀頻沒有達到傳感器的最大幀頻26 fps。由于該相機系統(tǒng)的應用場合對幀頻的要求較低,因此,這樣做是可行的。但是如果相機系統(tǒng)需要應用在對幀頻要求較高的場合,Camera Link 就無法滿足相機的數(shù)據(jù)傳輸要求,此時,應使用USB3.0、光纖接口等傳輸速率更高的圖像傳輸方式。