李華,朱波
(1.商洛學院電子信息與電氣工程學院,陜西商洛 726000;2.中國科學院西安光學精密機械研究所,陜西西安 710119)
相比CMOS圖像探測器,CCD圖像探測器具有較高的量子效率、較好的光信號線性響應度以及較高的靈敏度等顯著優點,因此,CCD圖像探測器廣泛應用于空間遙感、航空航天、工業、醫療等領域[1-2]。如:美國火星探測器“好奇號”就攜帶了17臺相機,全部采用Kodak公司200萬像素的CCD圖像探測器KAI-2020[3]。因此,研制高性能CCD成像系統具有重要的應用前景和經濟價值。但是,CCD成像系統普遍讀出速率較低、幀頻較慢,嚴重限制了其應用場合。針對這種情況,本文根據項目實際,研制了一臺圖像質量好、輸出幀頻高的CCD電子學系統,克服了傳統CCD成像系統的不足。
本文根據某科研任務實際,選用加拿大DALSA公司生產的一款1 M像素的幀轉移型CCD芯片FTT1010M作為圖像傳感器。FTT1010M是一款具有優良抗暈結構的高質量幀轉移型CCD圖像傳感器,具有填充因子高(100%),動態范圍大(>72 dB),像元輸出速度快(≥2×40 MHz),電荷轉移效率高(0.999999),讀出噪聲低(RMS讀出噪聲典型值25e),輸出格式靈活(H&VBinning)等特點,非常適合作為高性能成像系統的圖像傳感器[4-5]。
設計上為了提高幀頻,根據FTT1010M的結構特點,采用左右通道同時輸出的方式,將CCD輸出速率最大化。圖像采集處理部分使用TI公司的高性能圖像AD—LM98640,LM98640是TI公司一款雙通道、14位量化、采用串行LVDS輸出的高性能模擬前端圖像AD,主要用于處理CCD/CMOS的模擬圖像,被廣泛應用于高精度、高速圖像處理系統中。
本系統要求具有較高的數據更新率,幀頻滿足50 f·s-1。因此,電子學方面的指標除了圖像質量,主要體現在像元讀出頻率和探測器幀頻兩方面。幀轉移CCD時序設計中,讀出頻率的確定是關鍵[6-7],為了得到高幀頻,系統的像元讀出頻率設為33 MHz。這樣,一幀圖像的讀出時間為:

其中,Tp取33 MHz像元讀出時間,105Tp為行逆程時間,543Tp為雙路讀出一行圖像的時間(512個有效像元,24個暗像元,7個啞像元),1030表示讀出的行數(1024行圖像,6行暗行)。這樣,一幀圖像的讀出時間為20.023 ms。
讀出頻率確定后,按照讀出頻率是幀轉頻率8N倍(N為整數)的關系確定幀轉移期間的信號周期,本設計取N=1,得到幀轉移時間Tf:

即幀轉頻率為4.125 MHz時,幀轉1030行需要的時間為0.25 ms。這樣,輸出一幀圖像所需要的時間為:

因此,每秒可輸出約50幀圖像,滿足系統對圖像幀頻的需要。
此時,像元讀出頻率為33 MHz,即輸出給LM98640的像元時鐘為33 MHz,滿足LM98640對輸入像元時鐘不超過40 MHz的要求,經過模數轉換后,LM98640輸出的數字串行數據時鐘為33 MHz×8=264 MHz。
結合系統邏輯情況、數據緩存情況,系統在邏輯控制方面使用了xilinx公司330萬門的FPGA—XC2V3000,除了資源豐富,該FPGA還支持差分輸入/輸出,可以兼容LM98640的差分接口,節省了差分轉單端轉換芯片。
整個系統主要單元組成:電源電路、CCD成像單元、視頻信號處理單元以及外圍接口電路等[8-9],系統結構框圖如圖1所示。成像單元是系統核心部件,用于完成圖像的光電轉換;電源電路為CCD系統提供所需的各種偏置電壓;視頻信號處理單元為CCD提供正常工作所必需的15路驅動時序,并完成模擬輸出視頻信號的放大、采樣、數字化、圖像數據的采集、格式轉換與輸出等功能;外圍接口電路包括通訊接口和圖像輸出接口等。
系統的工作過程為:電源部分為CCD提供偏置電壓,系統上電穩定后,FPGA為CCD提供時序驅動信號,經驅動芯片后送至CCD,CCD輸出模擬圖像,經過射隨、運放等處理后進入AD進行采集并數字化處理,FPGA結合兩片SRAM對數字信號進行后續處理、格式重組等步驟后,經CameraLink接口輸出至應用單元。其間,通過RS422總線接收指令改變成像參數,并返回系統工作狀態。

圖1 成像系統結構框圖
高速CCD成像系統硬件設計比較成熟,因此,本文主要研究高幀頻CCD電子學系統的時序設計和高速圖像信號處理方面的一些方法。
本文CCD時序驅動電路以FPGA為核心控制單元,其主要完成的功能包括產生CCD驅動信號在內的最基本的時序控制。
FTT1010M芯片正常工作于雙路輸出模式時總共需要15路時序驅動信號,分別是:圖像感光區驅動信號A1、A2、A3、A4;存儲區驅動信號B1、B2、B3、B4;水平寄存器讀出驅動信號 C1X、C1W、C2X、C2W、C3;復位驅動信號 RG;信號求和驅動信號SG。應用FPGA產生這15路時序驅動信號,并組成具有周期性、且滿足CCD手冊給定的復雜邏輯關系,即可讓CCD正常工作并輸出圖像。
根據探測器手冊并分析幀轉移型CCD工作原理可知,FTT1010M探測器的一個工作周期分為兩個階段:幀轉階段和讀出階段(曝光階段)。在幀轉階段,頻率為4.125 MHz,相位依次相差1/3 的幀轉移控制信號 A1、A2、A3、A4 與行轉移控制信號 B1、B2、B3、B4 相同,且一直有效,將感光區圖像轉移至存儲區,從而在讀出階段將圖像逐行輸出。在讀出階段,圖像感光區控制信號A1、A2、A3、A4保持固定電平不變,并根據曝光時間控制電子快門進行感光,同時進行像元讀出,由寬度為450 ns,相位依次相差1/3的四相行轉移控制信號B1、B2、B3、B4控制,電荷逐行轉移到讀出寄存器;每行信號中,各像元電荷受頻率為33 MHz,相位交疊1/3的輸出控制信號C1X、C1W、C2X、C2W、C3控制,結合 RG 和 SG逐次經過輸出放大器輸出[10]。
FTT1010M具有電子快門功能,可以精準控制CCD的曝光時間,電子快門在讀出階段打開,為下一幀圖像曝光,且打開的開始時機放置在幀轉期間,其寬度大于2 μs,如果電子快門寬度太窄,上一幀圖像復位不徹底,在短曝光時會導致本幀圖像質量變差,特別是圖像上下邊緣會變得非常模糊。
FTT1010M探測器輸出的是1024×1024有效圖像數據,探測器每一行左右各有24個暗像元和7個啞像元。同時,為了保證讀出信號的完整性,在時序設計時采用了讀出冗余的設計方法,即轉移的行數和輸出的行數均設定為1024+6=1030,比CCD實際工作要求的行數多出6行暗行。
本成像系統具體的驅動電路結構框圖如圖2所示。

圖2 時序驅動電路框圖
由圖2可以看出,CCD工作所需的所有時序均由FPGA產生。首先,按照設計指標產生相應的曝光、幀轉移、行轉移和讀出時序信號,這些時序信號通過垂直、水平驅動電路送給CCD,驅動其工作;FTT1010M需要三電平時序,因此,FPGA需要提供相應的時序,控制相應電路工作。期間,FPGA需要根據指令信號,實時改變CCD的曝光時間、增益等工作參數,滿足不同成像條件下的圖像質量。
整個時序框圖中,CCD時序的設計最為復雜,為了提高設計可靠性,本系統采用了一個主狀態機來控制,如圖3所示。然后再對不同的子功能設計下一級狀態機來實現,最終完成所有功能。

圖3 CCD時序流圖
具體的時序設計如下:當FPGA上電200 μs穩定后,系統復位信號Reset觸發主狀態機處于空閑狀態(IDLE)。接著觸發曝光(Integration)和行轉(Line Transfer),分別開始曝光和行轉操作。為了精準控制各過程,系統內分別定義了曝光計數器Inter_cnt、幀轉計數器F_cnt、行轉計數器L_cnt和像元讀出計數器P_cnt。曝光時Inter_cnt開始計數,當Inter_cnt的值等于設定的曝光時間時,表明曝光完成,狀態機會產生一個曝光結束標識信號,用于觸發幀轉控制狀態,同時曝光控制狀態會繼續等待下一曝光時間的到來,再按照新的曝光時間重復以上過程。
幀轉控制狀態收到觸發信號后開始進行幀轉操作,F_cnt開始計數,每轉移一行F_cnt數值加1,當F_cnt等于1030時,表示將圖像區的所有圖像轉移完畢,這時狀態機會產生一個幀轉完成標識來觸發像元讀出控制狀態,同時,幀轉控制狀態會空閑,直到下一次幀轉觸發的到來。
為了盡可能減少干擾信號對本幀圖像的影響,幀轉完成后,設計時沒有直接去行轉,而是先空讀2行,消除幀轉過程中積累的電荷對圖像信號的影響。當像元讀出狀態收到觸發信號后,P_cnt開始計數,每讀一個像元,P_cnt數值加1,因為本系統工作在雙路輸出模式,當P_cnt等于543時說明像元已經讀干凈,這時如果空讀完成則觸發行轉狀態,否則進入IDLE狀態。
行轉狀態收到觸發后,L_cnt開始計數,數值累加直到其值等于105Tp時,表明行轉結束,觸發像元讀出狀態去讀取像元。
重復以上過程,CCD就源源不斷輸出模擬圖像數據,期間可以根據成像需要通過RS422改變系統的曝光時間,以適應多變的成像環境。
CCD輸出的是模擬圖像,為了方便傳輸和顯示,需要將其進行數字化處理。高速圖像數據處理包含兩部分內容,首先介紹基于高速圖像AD的數據處理方法,其次介紹基于FPGA結合外部存儲器的數據格式處理策略。
AD轉換是成像系統的重要組成部分,直接決定了采樣的精度和速度,從而決定了系統的性能。為了適應高速、高精度的需要,本系統采用了TI公司的一款高性能AD—LM98640作為圖像模數轉換芯片,該芯片具有14bit轉換精度,最高轉換速率40MSPS,同時支持S/H和CDS工作模式,而且有高等級產品以適應苛刻的工作環境。LM98640要正常工作需要在上電穩定后進行相關寄存器配置,然后才能輸出差分圖像數據,本系統將配置管腳與FPGA直接連接,用于配置AD工作;由于XC2V3000支持差分輸入、輸出,因此,設計上將AD的數據輸出管腳和像元時鐘管腳與FPGA直接相連,不再需要額外的電平轉換芯片,方便了硬件設計。
AD配置采用SPI接口進行數據寫入和讀出,寫入信號分別為:時鐘信號(SCLK),寫使能信號(SEN)和寫數據(SDI),讀出信號為讀出數據(SDO)。寫數據時SCLK、SEN和SDI組成一定時序的序列,完成數據寫入;數據讀出時SCLK、SEN配合即可完成。其中,SCLK的頻率應控制在20 MHz以內,以保證配置參數的順利寫入。
為了提高圖像質量,本設計AD工作于CDS模式,工作頻率為33 MHz,輸出采用4路數據同時輸出的形式,因此,通過設置Main Configuration、ADC power Trimming等 41 個寄存器完成AD的初始化,特別是Clamp和Sample的位置要結合實際的CCD信號進行微細調整以保證采樣在模擬圖像最穩定的地方,從而保證圖像的質量。配置完成后,LM98640就會按照設置進行模數轉換,輸出6路差分圖像數據,分別是:數據時鐘(Clk)、數據同步標識(Frame)和4路圖像數據(Data)。為了適應后續圖像處理的需要,需要在FPGA內完成相應的轉換。
本系統CCD輸出的像元時鐘為33 MHz,相應的AD差分時鐘的速率為264 MHz,為了平穩的處理如此高速的信號,本系統采用了如圖4所示的數據處理策略。

圖4 高速數據處理邏輯
由于FPGA具有差分數據處理能力,因此,首先將差分時鐘、數據同步和4路差分圖像數據分別接入FPGA,通過原語IBUFDS將差分信號轉成單端信號,時鐘域為264 MHz,其中時鐘信號送入全局時鐘總線,并通過DCM進行時鐘相位的微調以保證時鐘上升沿采在數據和使能的中心位置,此時,時鐘會將數據和使能平穩過度到FPGA內的264 MHz時鐘域,接著就可以進行數據的串并轉換,將4路串行圖像數據分別轉換成7位的并行數據,相應的時鐘速率也會降到33 MHz,從而完成高速數據向低速數據的順利轉換,便于FPGA后續的圖像處理。
為了提高幀頻,FTT1010M工作于左右雙路輸出的模式,左路數據順序輸出,但是右路數據逆序輸出,這樣就會給后續圖像處理帶來不利影響,特別是實時性要求較高的場合,因為左右路圖像不能直接進行拼接,同時圖像數據速率又比較高(33 MHz),也不能進行片內圖像順序的調整和拼接。為此,本系統設計了基于兩片片外存儲器結合片內BlockRAM資源的數據處理機制,取得了較好的結果。本系統數據處理的原理框圖如圖5所示。

圖5 數據整形單元
AD輸出的數據經過FPGA串并轉換后,左右路數據并行(28bit)輸出,奇數幀存儲在SRAM1內,偶數幀存儲在SRAM2內,兩片SRAM構成乒乓操作關系,當寫SRAM1時,FPGA讀取SRAM2內的數據,讀SRAM1內的數據時,FPGA向SRAM2寫數據,讀寫速率均為33 MHz。這樣,保證了進入FPGA內的數據不沖突。
FPGA內例化了4個1030×14bit的BlockRAM,其中,兩片設計為FIFO(First In First Out),另外兩片設計成 LIFO(Last In First Out),一片FIFO和一片LIFO結合定義為一個存儲單元,分別存儲奇數行圖像和偶數行圖像,二者構成乒乓操作關系,當SRAM內的數據進入FPGA后,第一行圖像順序部分(14bit)存入奇數行的FIFO內,逆序部分(14bit)存入奇數行的LIFO內,當第二行圖像從SRAM讀出時,將順序部分(14bit)存入偶數行的 FIFO 內,逆序部分(14bit)存入偶數行的LIFO內,在往偶數行寫數據的同時,從奇數行讀取數據,FIFO中的數據順序讀出,LIFO中的數據逆序讀出,并拼接在FIFO數據的后面,這樣就構成一行完整的圖像(14bit),這時相當于對順序和逆序圖像進行了串并轉換,因此像元頻率由33 MHz升為66 MHz。同樣,在讀第二行圖像的時候,將第三行圖像數據寫入奇數行。
經過兩片片外SRAM乒乓操作結合4片片內存儲單元乒乓操作,順利完成圖像數據的整形,最終將66 MHz像元速率、14bit量化的正常圖像數據實時輸出給應用單元。
本系統的數據處理部分實物如圖6(a)所示,一片FPGA控制LM98640(FPGA左上角位置)進行模擬圖像采集,同時,控制兩片3D-PLUS公司的SRAM(FPGA左右兩邊位置)進行后續數據處理。

圖6 系統實物及成像效果
系統結合光學部分,以 50 f·s-1的幀頻可實現對5等星的探測,圖6(b)所示為外場觀星得到的4.6等星星點圖像,圖像信噪比優于25,具有較好的性能。
本文介紹了高幀頻CCD成像系統電子學部分的組成結構,分析了FTT1010M圖像探測器的特點以及驅動時序設計方法,重點闡述了高速圖像AD的控制及其數據的處理方法,并結合片外SRAM完成數據的整形。以xilinx公司FPGA—XC2V3000為控制單元完成了整個設計,外場觀星試驗數據表明,系統的各項指標滿足任務要求。同時,也可以看出,本文高速設計思路適用于基于xilinx公司FPGA的高速系統,具有非常好的通用性。
參考文獻:
[1]林勝釗.科學級CCD成像系統關鍵技術研究[D].合肥:中國科學技術大學,2016:3-7.
[2]李華.基于FPGA的圖像發生器的設計[J].商洛學院學報,2015,29(4):15-19.
[3]牛磊星.“好奇”號火星鉆探概況[M]//中國地質學會探礦工程專業委員會.第十八屆全國探礦工程(巖土鉆掘工程)技術學術交流年會論文集.中國地質學會探礦工程專業委員會,2015:6.
[4]陳劍武,曹開欽,孫德新,等.高幀頻低拖尾幀轉移CCD驅動技術[J].紅外與激光工程,2016,45(1):110-115.
[5]馬天翔.面陣探測器KAI-04022成像系統設計[J].儀器儀表學報,2014,35(6):117-122.
[6]邸麗霞.基于FPGA的高速圖像數據采集存儲系統設計[J].電視技術,2013,37(13):49-52.
[7]郭宇琨,王衍,王建宇.“高分四號”衛星凝視相機視頻電路設計與實現[J].航天返回與遙感,2016,37(4):49-57.
[8]陶淑蘋,鄭曉云,樸永杰.高分辨率大面陣微型相機設計[J].液晶與顯示,2015,30(3):514-518.
[9]馬天翔.面陣探測器KAI-04022成像系統設計[J].儀器儀表學報,2014,35(8):117-120.
[10]任航.高分辨率大面陣CCD相機高幀頻設計及其非均勻性的校正[J].紅外與激光工程,2013,42(6):1491-1495.