李 華
(商洛學(xué)院,陜西商洛726000)
近些年,隨著航天技術(shù)的發(fā)展,在航天器姿態(tài)高準(zhǔn)確度測(cè)量、天文觀測(cè)和科學(xué)成像等領(lǐng)域,性能優(yōu)越的面陣CCD越來(lái)越多地得到了應(yīng)用[1]。而在CCD的應(yīng)用技術(shù)中,CCD驅(qū)動(dòng)時(shí)序的產(chǎn)生和信號(hào)的實(shí)時(shí)輸出是兩個(gè)最關(guān)鍵的問(wèn)題,特別是隨著CCD技術(shù)的發(fā)展,頻率高、數(shù)字化的CCD新型相機(jī)不斷出現(xiàn),對(duì)于圖像數(shù)據(jù)傳輸和處理的要求也越來(lái)越高[2],基于這些原因,該設(shè)計(jì)采用了數(shù)據(jù)時(shí)分復(fù)用技術(shù),使2臺(tái)CCD相機(jī)輸出的4路圖像數(shù)據(jù)僅在1根總線上實(shí)時(shí)傳輸,同時(shí),這根總線還能在圖像的幀逆程期間向2臺(tái)相機(jī)發(fā)送控制命令,大大節(jié)約了總線資源??紤]到圖像的讀出速率,所以,讓CCD工作在雙路輸出模式:一路是1行圖像的前半部分,順序輸出;另一路是一行圖像的后半部分,逆序輸出。因此,2路數(shù)據(jù)不能直接拼接,為了達(dá)到順序輸出1行圖像的目的,設(shè)計(jì)了LiFo(Last in First out),并結(jié)合FiFo和乒乓操作,完成了所有圖像數(shù)據(jù)實(shí)時(shí)、準(zhǔn)確的輸出。系統(tǒng)的總體設(shè)計(jì)方案如圖1所示,整個(gè)設(shè)計(jì)僅使用了1片Xilinx公司的FPGA—XC2V3000,簡(jiǎn)化了系統(tǒng)的結(jié)構(gòu)。
圖1 CCD相機(jī)系統(tǒng)原理圖
CCD42-80 Back Illuminated AIMO CCD是英國(guó)e2v公司生產(chǎn)的一款采用背照、全幀結(jié)構(gòu)的低噪聲幀轉(zhuǎn)移面陣CCD,結(jié)構(gòu)如圖2所示。CCD42-80芯片正常工作需要16路驅(qū)動(dòng)信號(hào),分別是:幀轉(zhuǎn)驅(qū)動(dòng)信號(hào) IΦ1,IΦ2,IΦ3;存儲(chǔ)區(qū)驅(qū)動(dòng)信號(hào) SΦ1,SΦ2,SΦ3;寄存器讀出驅(qū)動(dòng)信號(hào) RΦ1L,RΦ2L,RΦ1R,RΦ2R,RΦ3;復(fù)位驅(qū)動(dòng)信號(hào)ΦL,ΦR;像元合并驅(qū)動(dòng)信號(hào)SWL,SWR;清除電荷用驅(qū)動(dòng)信號(hào)DG[3]。應(yīng)用FPGA產(chǎn)生這16路驅(qū)動(dòng)信號(hào),并組成具有周期性且滿足CCD手冊(cè)給定的復(fù)雜關(guān)系,即可讓CCD正常工作。但是,為了適應(yīng)相機(jī)探測(cè)環(huán)境的多變性,方案不僅要讓探測(cè)器能正常工作,還要具有曝光時(shí)間可調(diào)等功能。
圖2 CCD42-80背照式AIMO探測(cè)器結(jié)構(gòu)圖
針對(duì)CCD42-80的時(shí)序特點(diǎn),具體設(shè)計(jì)步驟為:將1幀圖像分為4個(gè)過(guò)程,分別是積分、幀轉(zhuǎn)1、讀出、幀轉(zhuǎn)2。在積分階段,CCD感光區(qū)的感光陣列接受外界光源照射產(chǎn)生電荷,并同時(shí)清除上一幀周期里在讀出階段產(chǎn)生的轉(zhuǎn)移到幀存儲(chǔ)區(qū)的電荷,這部分設(shè)計(jì)是在不改變系統(tǒng)主頻的前提下,通過(guò)改變感光階段的轉(zhuǎn)移脈沖個(gè)數(shù)來(lái)實(shí)現(xiàn)的,如果要增加積分時(shí)間,只要增加轉(zhuǎn)移脈沖的個(gè)數(shù)即可;在幀轉(zhuǎn)1階段將積分階段產(chǎn)生的電荷完全轉(zhuǎn)移到幀存儲(chǔ)區(qū);在讀出階段將幀存儲(chǔ)區(qū)的信號(hào)逐行轉(zhuǎn)移到輸出寄存器里并將信號(hào)全部輸出,感光區(qū)同時(shí)曝光;在幀轉(zhuǎn)2階段將讀出期間,感光區(qū)產(chǎn)生的信號(hào)轉(zhuǎn)移到幀存儲(chǔ)區(qū),準(zhǔn)備在下一幀周期的積分階段將其清除。因?yàn)閹D(zhuǎn)1、讀出、幀轉(zhuǎn)2的時(shí)間是固定的,所以,只要幀頻確定,曝光時(shí)間就可以在一定范圍調(diào)整了[4-5]。
當(dāng)給CCD42-80 Back Illuminated AIMO探測(cè)器提供了正確的驅(qū)動(dòng)時(shí)序信號(hào)并經(jīng)過(guò)AD轉(zhuǎn)換等處理后,它將輸出由200 kHz像元時(shí)鐘信號(hào)、16位并行圖像數(shù)據(jù)信號(hào)、行有效信號(hào)和幀有效信號(hào)組成的視頻信號(hào),其中行有效信號(hào)和幀有效信號(hào)由FPGA根據(jù)時(shí)序關(guān)系產(chǎn)生。因此,怎樣將視頻信號(hào)以最簡(jiǎn)單的方法實(shí)時(shí)、準(zhǔn)確的輸出是本文研究的一個(gè)重點(diǎn)。
時(shí)分復(fù)用即將時(shí)間分成若干時(shí)隙,每一路輸入信號(hào)占用其中1個(gè)時(shí)隙(不同的速率數(shù)據(jù)也可以占用2個(gè)或2個(gè)以上的時(shí)隙),各路信號(hào)在同一個(gè)信道上傳輸而互相不受干擾[6]。本項(xiàng)目根據(jù)需要設(shè)計(jì)了A和B兩臺(tái)相機(jī),且要同時(shí)工作,為了保證圖像的讀出速率,每臺(tái)CCD42-80相機(jī)采用的是雙路輸出圖像的方式。因此,時(shí)序上每輸出1個(gè)讀出時(shí)鐘,系統(tǒng)就會(huì)同時(shí)輸出4個(gè)像元,如果不采用總線復(fù)用技術(shù),而使用并行傳輸?shù)姆绞?,僅傳輸圖像數(shù)據(jù)就需要16位×4=64位總線,再加上16位的相機(jī)命令控制總線,這將給只使用1片XC2V3000作為控制核心的系統(tǒng)在總線資源和體積重量上帶來(lái)比較大的挑戰(zhàn)。因此,數(shù)據(jù)時(shí)分復(fù)用技術(shù)在本項(xiàng)目及其他類(lèi)似設(shè)計(jì)上的應(yīng)用是很有必要的。在闡述該技術(shù)的具體應(yīng)用前,對(duì)前端AD及其工作原理先進(jìn)行簡(jiǎn)單介紹。
在系統(tǒng)方案確定后,首先要根據(jù)項(xiàng)目要求選擇合適的AD,這是因?yàn)閺腃CD輸出的是模擬信號(hào),而要對(duì)圖像進(jìn)行采集和后續(xù)處理必須將這些模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),這就要用到AD。在本方案中,綜合考慮系統(tǒng)的分辨力、通道數(shù)、采樣率、采樣范圍和接口以及采購(gòu)難易程度等要求,最終選用了AD公司的16位快速ADC—AD976A。圖3所示為AD976A的工作時(shí)序,從圖3中可以看出,一個(gè)AD的轉(zhuǎn)換周期包括數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)獲取兩部分,有效數(shù)據(jù)出現(xiàn)在數(shù)據(jù)獲取部分,持續(xù)時(shí)間大概有800 ns左右,這對(duì)于使用64 MHz系統(tǒng)時(shí)鐘的FPGA來(lái)說(shuō)已經(jīng)夠長(zhǎng)了,所以數(shù)據(jù)時(shí)分復(fù)用將在這段時(shí)間內(nèi)完成。具體過(guò)程為:從CCD輸出的4路模擬數(shù)據(jù)Al,Ar,Bl,Br分別送給對(duì)應(yīng)的AD0,AD1,AD2,AD3進(jìn)行AD轉(zhuǎn)換,當(dāng)BUSY信號(hào)有效時(shí),表示輸出數(shù)據(jù)已經(jīng)就緒,可以進(jìn)行采集,由于是4片AD,所以,會(huì)有4個(gè) BUSY 信號(hào) BUSY0,BUSY1,BUSY2,BUSY3,由于數(shù)據(jù)輸出格式是順序輸出,所以數(shù)據(jù)的輸出順序必須是A相機(jī)左路,A相機(jī)右路,B相機(jī)左路,B相機(jī)右路,即順序的從AD0~AD3進(jìn)行采集。理論設(shè)計(jì)的BUSY0,BUSY1,BUSY2,BUSY3 信號(hào)是同時(shí)到來(lái),但是實(shí)際中可能會(huì)因器件延遲或布線等原因產(chǎn)生一定誤差,所以首先要對(duì)BUSY0,BUSY1,BUSY2,BUSY3的到來(lái)順序進(jìn)行仲裁才能開(kāi)始數(shù)據(jù)的采集。如圖4所示,為了防止毛刺等無(wú)效信號(hào)的干擾產(chǎn)生誤判斷,從而產(chǎn)生誤操作,設(shè)計(jì)上對(duì)每個(gè)BUSY信號(hào)的上升沿應(yīng)用仲裁機(jī)制,只有當(dāng)每次轉(zhuǎn)換中最后到來(lái)的BUSY信號(hào)的上升沿被捕獲時(shí),才依次開(kāi)始產(chǎn)生AD0~AD3數(shù)據(jù)采集使能信號(hào),且4個(gè)數(shù)據(jù)采集使能信號(hào)沒(méi)有重疊,而且是在AD數(shù)據(jù)有效的800 ns內(nèi),這就相當(dāng)于4個(gè)AD和數(shù)據(jù)傳輸總線間裝了開(kāi)關(guān),每次只能打開(kāi)1個(gè)開(kāi)關(guān)放數(shù)據(jù)過(guò)去,而開(kāi)關(guān)之間是獨(dú)立的。因?yàn)閿?shù)據(jù)采集使用的是16 MHz的脈沖,而采集數(shù)據(jù)是發(fā)生在采集使能期間,所以,數(shù)據(jù)采集使能信號(hào)的寬度必須大于62.5 ns。這樣,當(dāng)有效數(shù)據(jù)出現(xiàn)時(shí),只需要控制好采集使能信號(hào),分時(shí)將16位的圖像數(shù)據(jù)依次送到總線即完成了圖像數(shù)據(jù)的輸出。另外,在每一幀圖像的幀逆程期間,控制系統(tǒng)產(chǎn)生發(fā)送相機(jī)命令使能信號(hào),同時(shí),利用公共的16位總線給相機(jī)發(fā)送增益、級(jí)數(shù)等控制命令。這樣,僅需要16位總線就完成了4路16位圖像數(shù)據(jù)的輸出和16位相機(jī)控制命令的發(fā)送,大大節(jié)約了總線資源。
圖4 數(shù)據(jù)總線復(fù)用原理圖
在第3節(jié)中,得到了來(lái)自AD0~AD3的圖像數(shù)據(jù),根據(jù)CCD42-80探測(cè)器在雙路輸出模式下,圖像的輸出格式可知,每一臺(tái)相機(jī),比如A相機(jī)的圖像,即來(lái)自AD0和AD1的圖像數(shù)據(jù),AD0得到的是每一行圖像的前半行,即0~1023列的像元,而AD1得到的是另外半行像元,但是,輸出順序確是2047~1024。這樣,2個(gè)半行在拼成1行圖像時(shí),后半行就存在順序的問(wèn)題,不能直接合成1行,繼而導(dǎo)致不能準(zhǔn)確輸出圖像[7]。為了解決這個(gè)問(wèn)題,本方案設(shè)計(jì)了基于雙口RAM的LiFo(Last in First out)。如圖5所示,采用兩片深度為1024的FiFo和兩片深度為1024的LiFo,進(jìn)行乒乓操作[8]。當(dāng)?shù)?行圖像的前半行順序輸出時(shí)先存儲(chǔ)在FiFo A里,后半行逆序存儲(chǔ)在LiFoA里,當(dāng)存儲(chǔ)完半行圖像后,系統(tǒng)開(kāi)始讀FiFo A,獲取前半行數(shù)據(jù),同時(shí)讀LiFo A的數(shù)據(jù)進(jìn)入FiFo A,接在前半行數(shù)據(jù)的后面,等到將FiFo A里的數(shù)據(jù)讀完,第1行圖像就順序的輸出完畢了。在讀FiFo A和LiFo A時(shí),將第2行圖像的前半行存儲(chǔ)在FiFo B里,后半行存儲(chǔ)在LiFo B里,等第1行圖像處理完畢后,對(duì)FiFo B和LiFo B進(jìn)行類(lèi)似的拼接操作就得到了第2行圖像.同時(shí),將第3行圖像存儲(chǔ)在FiFo A和LiFo A里。這樣交替的乒乓進(jìn)行,所有的圖像就順序的實(shí)時(shí)輸出了。
圖5 圖像拼接原理圖
眾所周知,Xilinx的FPGA設(shè)計(jì)比較靈活,而且還有許多現(xiàn)成的IP core可以應(yīng)用,比如本文應(yīng)用的FiFo和Single-Port Block Memory。
為了得到想要的LiFo,可以先從它的原理入手,LiFo顧名思義就是先進(jìn)后出的意思,因此必須要有2個(gè)端口,且輸出數(shù)據(jù)是將輸入數(shù)據(jù)的順序逆序獲取的,再加上讀寫(xiě)的速率不是很高,只有幾十兆赫茲。經(jīng)分析不難發(fā)現(xiàn),雙口RAM剛好滿足這一條件。因此,Xilinx提供的Single-Port Block Memory可以用來(lái)搭建1個(gè)雙口RAM。調(diào)用該IP core,時(shí)鐘采用64 MHz,得到的LiFo部分時(shí)序如圖6所示,地址采用由低向高遞增的方式進(jìn)行寫(xiě)存儲(chǔ),當(dāng)存滿半行圖像時(shí),開(kāi)始控制we信號(hào)進(jìn)行讀操作,讀地址由寫(xiě)地址的最高開(kāi)始遞減產(chǎn)生,由圖6的時(shí)序分析,該方案完全滿足設(shè)計(jì)要求。
圖6 設(shè)計(jì)的LiFo時(shí)序圖
本設(shè)計(jì)采用了數(shù)據(jù)時(shí)分復(fù)用技術(shù)結(jié)合LiFo和乒乓操作對(duì)CCD42-80 Back Illuminated AIMO CCD的圖像數(shù)據(jù)進(jìn)行處理,并順序的進(jìn)行實(shí)時(shí)輸出,相比傳統(tǒng)的并行圖像傳輸方法,大大節(jié)約了數(shù)據(jù)總線資源。系統(tǒng)僅采用了1片Xilinx的FPGA完成了CCD時(shí)序驅(qū)動(dòng)、對(duì)ADC進(jìn)行同步控制及圖像的后續(xù)處理,并根據(jù)需要調(diào)用了FiFo和雙口RAM 2個(gè)IP core,使整體設(shè)計(jì),特別是硬件設(shè)計(jì)方面得到了簡(jiǎn)化,充分利用了FPGA在設(shè)計(jì)方面靈活可變的特點(diǎn)。從整個(gè)設(shè)計(jì)過(guò)程可以看出,該方法具有一定的通用性和可擴(kuò)展性。在系統(tǒng)時(shí)鐘為64 MHz,圖像讀出時(shí)鐘為200 kHz條件下,時(shí)序驅(qū)動(dòng)電路工作正常,可以滿足CCD工作的時(shí)序要求,數(shù)據(jù)處理模塊輸出的圖像實(shí)時(shí)、準(zhǔn)確,證明了設(shè)計(jì)的可行性。目前,該設(shè)計(jì)已經(jīng)成功應(yīng)用于某觀測(cè)項(xiàng)目上,并進(jìn)行了多次成像試驗(yàn),取得了比較好的效果。
[1] 寇玉民,盛宏,金祎,等.CCD圖像傳感器發(fā)展與應(yīng)用[J].電視技術(shù),2008,32(4):38-39.
[2] 王慶友.CCD應(yīng)用技術(shù)[M].天津:天津大學(xué)出版社,2000.
[3] E2V Corporation.CCD42-80 AIMO FT Back Illuminated data-sheet.[EB/OL].[2012-02-26].http://www.not.iac.es/instruments/detectors/CCD13/ccd42-40_pga_bi_nimo.pdf.
[4] 姬先舉,溫志渝.基于CPLD的光積分時(shí)間可調(diào)線陣CCD驅(qū)動(dòng)電路設(shè)計(jì)[J].傳感技術(shù)學(xué)報(bào),2006,19(5):1781-1784.
[5] 冉曉強(qiáng),汶德勝,鄭培云,等.基于CPLD的空間面陣CCD相機(jī)驅(qū)動(dòng)時(shí)序發(fā)生器的設(shè)計(jì)與硬件實(shí)現(xiàn)[J].光子學(xué)報(bào),2007,36(2):364-367.
[6] 金龍旭,李國(guó)寧,劉妍妍.幀轉(zhuǎn)移型面陣CCD驅(qū)動(dòng)電路的設(shè)計(jì)[J].光學(xué)精密工程,2008,16(6):1140-1145.
[7] 張貴清,朱磊,顏露新,等.基于FPGA的多路同步實(shí)時(shí)數(shù)據(jù)采集方案設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù),2005,24(12):26-29.
[8] 宋燕星,袁峰,丁振良.應(yīng)用同步FiFo的高速圖像采集系統(tǒng)[J].儀器儀表學(xué)報(bào),2006,27(6):1360-1361.