文獻標(biāo)識碼: A
文章編號: 0258-7998(2012)01-0034-04
在航空攝影測量領(lǐng)域,,常采用高分辨率CCD相機在高空對物體進行拍攝,。目前的CCD數(shù)據(jù)處理系統(tǒng)首先在CCD相機的控制下,輸出海量連續(xù)的CCD數(shù)據(jù)流,。然后通過構(gòu)造緩存單元結(jié)構(gòu),,緩存接收的CCD圖像數(shù)據(jù)。由于圖像信息量太大,,無法實時處理,,需要在飛行過程中將所有圖像實時記錄在高速硬盤上,最終把緩存的數(shù)據(jù)流輸入至實時記錄系統(tǒng)實現(xiàn)高分辨率CCD數(shù)據(jù)的記錄,。
針對飛行過程中的一些特殊情況,,需根據(jù)接收的GPS信息(飛行高度、速度等)實時調(diào)整CCD幀頻[1],。要實現(xiàn)可變幀率的CCD數(shù)據(jù)處理,,對整個CCD數(shù)據(jù)實時處理能力提出了更高的要求。同時,,隨著CCD像元數(shù)的激增,,每幀CCD圖像的像素分辨率超大,如何實現(xiàn)基于高分辨率CCD圖像感興趣區(qū)域的智能實時觀測是目前航測領(lǐng)域的研究重點,。針對可變幀率和智能觀測需求,,提出了一種基于感興趣區(qū)域的可變頻CCD實時處理系統(tǒng)。
系統(tǒng)根據(jù)可變頻要求,,一方面通過在FPGA內(nèi)部設(shè)計UART控制器,,觸發(fā)CCD相機外同步觸發(fā)信號,實時計算出隨GPS信息不斷變化的CCD幀頻信息,;另一方面,,提出了一種數(shù)據(jù)提取算法,該算法通過對乒乓緩存的CCD圖像數(shù)據(jù)進行可變窗口定位,,實現(xiàn)了感興趣區(qū)域的智能觀察和存儲,;最后,通過視頻編碼實現(xiàn)感興趣區(qū)域的高清晰視頻實時顯示,。整個系統(tǒng)已在FPGA內(nèi)實現(xiàn)并通過驗證,,可廣泛適用于任何分辨率大小CCD的智能實時處理。
1 系統(tǒng)設(shè)計方案
該可變頻CCD智能實時處理系統(tǒng)由CCD控制模塊,、數(shù)據(jù)實時處理模塊和實時顯示模塊組成。CCD控制模塊:在相機外同步工作模式下,,通過在FPGA內(nèi)設(shè)計UART控制器,,接收外部發(fā)來的GPS信息,實現(xiàn)CCD相機幀頻的實時調(diào)整。針對數(shù)據(jù)實時處理模塊,,提出了一種數(shù)據(jù)提取算法:首先提取出原始CCD圖像數(shù)據(jù)的感興趣區(qū)域,,該區(qū)域符合SMPTE(1080i)有效的高清晰視頻數(shù)據(jù)分辨率大小,并通過可變窗口定位實現(xiàn)區(qū)域的智能實時調(diào)整,;然后通過乒乓緩存結(jié)構(gòu)的設(shè)計,,實現(xiàn)感興趣區(qū)域的實時存儲;最后由實時顯示模塊,,將緩存的感興趣區(qū)域數(shù)據(jù)打包為高清晰視頻格式,,通過視頻編碼實現(xiàn)感興趣區(qū)域的高清晰視頻實時顯示。圖1給出了整個系統(tǒng)的實現(xiàn)方案,。
2 CCD控制模塊的設(shè)計
2.1 可變頻幀率的設(shè)計與實現(xiàn)
在飛行過程中,,首先需接收GPS導(dǎo)航信息[3](主要包括飛行器經(jīng)緯度位置、時間(時/分/秒)以及海拔高度,、地速等飛行參數(shù),,數(shù)據(jù)刷新率為10 Hz/s),根據(jù)信息計算得到當(dāng)前相機幀頻,。由于數(shù)據(jù)刷新率較高,,接收數(shù)據(jù)的準(zhǔn)確性是保證后續(xù)工作精度穩(wěn)定的前提條件。
傳統(tǒng)的處理方式是[4]:通過串口配合相關(guān)電路,,接收GPS信息,,并計算得到隨飛行高度和速度實時改變的相機幀頻。UART(Universal Asynchronous Receiver Transmitter)作為計算機或外圍設(shè)備的串行通信接口,,通常在單片機中使用,。本設(shè)計中改用FPGA完成所有數(shù)據(jù)處理,并設(shè)計了基于PFGA的UART控制器,。
UART控制器包含以下組件:時鐘發(fā)生器,、輸入和輸出移位寄存器、發(fā)送/接收控制單元和FIFO緩沖存儲器,。時鐘發(fā)生器通常是比特率允許在一個位周期中采樣的倍數(shù),。輸入和輸出移位寄存器是串行和并行之間形式轉(zhuǎn)換的基本方法。發(fā)送或接收控制單元完成數(shù)據(jù)的傳輸和接收器下控制讀或?qū)懣刂七壿?。FIFO緩沖存儲器實現(xiàn)對發(fā)送/接收數(shù)據(jù)的高速緩存,。圖2給出了基于FPGA的UART控制器設(shè)計,可見,,整個UART設(shè)計充分利用FPGA的內(nèi)部存儲和時序邏輯資源,,減小了系統(tǒng)的面積, 改變了傳統(tǒng)通過單片機處理器的控制,大大降低了系統(tǒng)功耗,,提高了設(shè)計的穩(wěn)定性,。
通過基于FPGA的UART控制器設(shè)計,,GPS信息可從UART正確接收,根據(jù)GPS相應(yīng)的飛行參數(shù),,可計算得到可變幀率,,并輸入至FPGA。本系統(tǒng)每幀CCD的拍攝時間間隔表達式如下:
式中,,v是飛行速度(km/h),,H是飛行高度,a是拍攝視角,, qx是相鄰的圖片重疊比例,。可見,,通過接收GPS的飛行速度和飛行高度信息和實際拍攝要求,,即可計算出拍攝時間間隔。根據(jù)時間和頻率之間的關(guān)系,,得到CCD當(dāng)前幀速率,。
FPGA在內(nèi)部時鐘的控制下,針對可變幀頻率,,通過FPGA的時序邏輯控制,,產(chǎn)生外同步控制脈沖信號。這樣,,在外同步脈沖的觸發(fā)下,,相機開始積分,積分完畢后,,在行,、場、消隱同步信號的控制下,,讀出CCD相機數(shù)據(jù),。
2.2 基于高速Cameralink接口的CCD數(shù)據(jù)傳輸
為提高海量CCD連續(xù)數(shù)據(jù)流的傳輸速率,采用基于Cameralink接口技術(shù)實現(xiàn)高速CCD數(shù)據(jù)傳輸,。Cameralink接口技術(shù)是基于Channel Link技術(shù)發(fā)展而來的,。Channel Link是基于LVDS技術(shù)發(fā)展而來的,它是一種用來傳輸視頻數(shù)據(jù)的新技術(shù),。Channel Link使用一個并轉(zhuǎn)串驅(qū)動器和一個串轉(zhuǎn)并接收器傳輸數(shù)據(jù),,其最高速率可達2.38 GHz/s,非常適合高分辨率CCD數(shù)據(jù)實時處理以及其他高速控制信號的傳輸[5],。
高分辨率CCD數(shù)字相機通過Camera Link接口的連接,,實現(xiàn)多位高速并行的數(shù)據(jù)線轉(zhuǎn)換為串行數(shù)據(jù)線輸出。同時,,通過接收芯片DS90CR288A實現(xiàn)對CCD相機輸出的串行數(shù)據(jù)還原為原始的并行數(shù)據(jù)輸出,并提供了相應(yīng)的CCD相機通信信號和有效控制信號。對DS90CR288A解碼輸出的CCD相機數(shù)據(jù)輸入至FPGA,,實現(xiàn)實時處理,。
3 實時數(shù)據(jù)處理模塊
3.1 感興趣區(qū)域提取算法
實時處理模塊主要對輸入至FPGA的CCD圖像數(shù)據(jù)進行處理。CCD相機數(shù)據(jù)的時鐘輸出速率為2 MHz×40 MHz,,以兩路并行格式輸出,,兩路數(shù)據(jù)像元分辨率大小為2 048×1 024,數(shù)據(jù)分辨率為10 bit,。為有利于數(shù)據(jù)進一步處理,,在FPGA內(nèi)構(gòu)造FIFO實現(xiàn)對兩路并行數(shù)據(jù)的實時合成。合成后的數(shù)據(jù)分辨率為10 bit,,頻率為80 MHz,,像元分辨率大小為2 048×2 048。
在實際觀測中,,需要實時提取感興趣區(qū)域,。設(shè)原始圖像分辨率大小為M×N,感興趣區(qū)域分辨率大小為m×n,。由于CCD原始數(shù)據(jù)分辨率遠大于感興趣區(qū)域數(shù)據(jù)分辨率,,提出了一種感興趣區(qū)域提取算法。算法設(shè)計思路如下:
(1)通過UART接收當(dāng)前波門位置信息(Rstart,,Rwidth,,Cstart,Cwidth),,同時波門位置信息實時寫入FPGA,。其中,Rstart,、Rwidth分別表示在像素時鐘的作用下,,原始圖像對應(yīng)的行起始地址和行寬;Cstart,、Cwidth分別表示在像素時鐘的作用下,,列起始地址和列寬。
(2)在FPGA中構(gòu)造4個專用寄存器分別用來動態(tài)存儲上述波門位置信息(Rstart,,Rwidth,,Cstart,Cwidth),。
(3)在像素時鐘的控制下,,在FPGA內(nèi)構(gòu)造兩個計數(shù)器分別對每行、每列像素個數(shù)進行計數(shù),。Pi,、Qj分別表示當(dāng)前行,、列計數(shù)值。
(4)構(gòu)造波門判別函數(shù)模型,,如判別函數(shù)為真,,即當(dāng)前計數(shù)值在波門信息范圍內(nèi)時,對于圖像數(shù)據(jù)予以保留,,否則予以舍棄,。判別函數(shù)如式(2)所示。
當(dāng)一幀圖像數(shù)據(jù)接收完畢時,,即完成了對當(dāng)前幀圖像的感興趣區(qū)域數(shù)據(jù)提取,。當(dāng)下一幀數(shù)據(jù)輸入且波門位置改變時,則返回(1),,重復(fù)上述過程即可,。
3.2 高速緩存的設(shè)計
在實時抽取后,保留下的數(shù)據(jù)分辨率大小與高清晰模擬視頻有效數(shù)據(jù)分辨率相同,。但兩者在速率和幀頻上都不相等(相機數(shù)據(jù)速率為80 MHz,,幀頻為變量,高清晰視頻數(shù)據(jù)格式選擇速率為74.25 MHz,,幀頻為30幀/s,,每幀分為奇場和偶場的格式),因此需要為變頻的CCD圖像感興趣區(qū)域和恒速的視頻編碼之間構(gòu)造一個適應(yīng)通道——高速緩存結(jié)構(gòu),。常用的緩存結(jié)構(gòu)主要有以下三種形式[6]:
(1)FIFO結(jié)構(gòu):能夠達到很高的傳輸速度和效率,且由于省去了地址線而有利于PCB 板布線,。缺點是只能順序讀寫數(shù)據(jù),因而顯得比較呆板。
(2)雙口RAM結(jié)構(gòu): 具有兩套獨立的數(shù)據(jù),、地址和控制總線,能達到很高的傳輸速度,并且具有隨機存取的優(yōu)點,。缺點是大容量的高速雙口RAM 硬件復(fù)雜度高,價格昂貴。
(3)SRAM乒乓緩存結(jié)構(gòu):可隨機存取,,同時較大容量的高速SRAM容易得到且價格適中,。缺點是切換控制電路比較復(fù)雜。
綜合考慮以上三種高速緩存方案,,在本設(shè)計單元中,選用SRAM乒乓緩存方案,。具體設(shè)計流程如下:在第一個緩沖周期,將輸入數(shù)據(jù)流緩存到第一片SRAM中;在第二個緩沖周期,通過控制信號的切換,,將輸入的數(shù)據(jù)流緩存到第二片SRAM中,,并將第一片SRAM緩存的第一個周期的數(shù)據(jù)通過控制送入下一處理單元(視頻編碼單元);在第三個緩沖周期,通過控制權(quán)的再次切換,,將輸入的數(shù)據(jù)流緩存到第一片SRAM,,并將第二片SRAM緩存的第二個周期的數(shù)據(jù)通過控制權(quán)的切換,送到下一處理單元,。如此循環(huán),,周而復(fù)始,,很好地完成對數(shù)據(jù)流的無縫緩沖和處理。
4 實時顯示模塊
4.1 基于FPGA的高清晰視頻數(shù)據(jù)打包
由于從數(shù)據(jù)實時處理單元SRAM 讀出的是純粹圖像數(shù)據(jù), 因此首先要將讀出數(shù)據(jù)打包為符合SMPTE274 標(biāo)準(zhǔn)的1080i 高清晰視頻格式,,最終實現(xiàn)高清晰的模擬視頻顯示,。
首先簡單介紹符合SMPTE274標(biāo)準(zhǔn)的1080i高清晰模擬視頻格式[7]。圖3給出了高清晰視頻數(shù)據(jù)包格式,。其中,,每個EAV 和SAV 定時基準(zhǔn)信號由4 個字的序列組成,,格式如下:FF,、00、FF,、XY(數(shù)值以16進制表示,,F(xiàn)F、00留供定時基準(zhǔn)信號用) ,。頭三個是固定前綴,,第四個字包含定義第二場標(biāo)識、場消隱狀態(tài)和行消隱狀態(tài)的信息,。每行有效數(shù)據(jù)像素為1 920個像素,,行消隱期為272個像素。
對數(shù)據(jù)進行打包實際就是用FPGA產(chǎn)生包頭信息,、消隱期的填充數(shù)據(jù)以及Y分量的數(shù)據(jù)和Cb,、Cr分量的數(shù)據(jù)復(fù)合,再進一步將視頻數(shù)據(jù)和包頭信息,、填充數(shù)據(jù)合并,最終產(chǎn)生符合上述定義格式標(biāo)準(zhǔn)的數(shù)據(jù)包,。在具體實現(xiàn)過程中,F(xiàn)PGA要設(shè)計兩個計數(shù)器,,一個用來進行行計數(shù),,另一個用來對每行的像素進行計數(shù)。根據(jù)兩個計數(shù)器的值,,在相應(yīng)的地方寫上包頭信息,,在消隱期填上填充數(shù)據(jù),而在有效行的有效像素期,F(xiàn)PGA 的輸出來自SRAM 輸出的原始相機數(shù)據(jù),。這樣,,在FPGA 里的視頻數(shù)據(jù)復(fù)合成模塊,用74.25 MHz 的時鐘將Y分量和Cb,、Cr分量按格式要求的4:2:2格式復(fù)合成高清晰視頻數(shù)據(jù)流,,如圖3所示。
4.2 基于FPGA的視頻編碼芯片控制和實現(xiàn)
在完成對數(shù)據(jù)的打包后,需要對視頻芯片內(nèi)部寄存器進行配置并最終轉(zhuǎn)換為模擬視頻顯示,。ADV7300A支持I2C總線通信協(xié)議,。傳統(tǒng)的工作方式通常使用單片機實現(xiàn)對I2C總線接口的控制,。然而,為減少設(shè)計資源并提高FPGA的使用效率,,設(shè)計了基于FPGA的I2C總線控制器,。
I2C總線控制器主要包括以下幾個單元:數(shù)據(jù)緩存單元、移位寄存器單元,、I2C總線傳輸控制單元和分頻單元,。其中,數(shù)據(jù)緩存單元實現(xiàn)對如初始化ADV7300的數(shù)據(jù)進行緩存,,這里緩存單元即通過FPGA內(nèi)部的RAM存儲即可,。
移位寄存器單元實現(xiàn)數(shù)據(jù)的并-串轉(zhuǎn)換。由于FPGA內(nèi)部的緩存單元的數(shù)據(jù)位寬為8 bit,,而I2C總線上傳輸?shù)奈粚挒? bit,,所以要進行并串轉(zhuǎn)換,且需滿足數(shù)據(jù)高位在前,,低位在后,。通過構(gòu)造移位寄存器,可在時序控制邏輯模塊的控制下根據(jù)讀寫使能信號對數(shù)據(jù)進行正確處理,。
I2C總線傳輸控制單元是設(shè)計的核心,,根據(jù)I2C總線傳輸協(xié)議,整個傳輸過程可以分為空閑,、開始,、發(fā)送數(shù)據(jù)、接收數(shù)據(jù),、停止5個狀態(tài),。當(dāng)I2C總線處于空閑狀態(tài)且驅(qū)動信號為高電平時開始運作I2C模塊, 并根據(jù)讀/寫判斷進入下一狀態(tài),即進行傳輸數(shù)據(jù)或接收數(shù)據(jù),。當(dāng)數(shù)據(jù)傳輸完畢, 跳入停止?fàn)顟B(tài),。因此,在FPGA內(nèi)設(shè)計有限狀態(tài)機的結(jié)構(gòu)實現(xiàn)對I2C總線的傳輸時序控制,,其狀態(tài)轉(zhuǎn)移如圖4所示,。
分頻單元則根據(jù)I2C總線傳輸速率,通過對FPGA的全局時鐘進行分頻,,以滿足I2C總線的傳輸速率要求,。
通過在FPGA內(nèi)實現(xiàn)基于I2C總線控制器的設(shè)計,很好地完成了FPGA對視頻編碼芯片ADV7300內(nèi)部寄存器的配置和讀寫,,最終實現(xiàn)高清晰模擬視頻顯示,。目前,該設(shè)計已通過驗證,并成功應(yīng)用于某航空攝影測量工程,,具有很高的工程應(yīng)用價值,。
參考文獻
[1] 陳蘇婷,吳欽章,,楊世洪.航空攝影測量用高清晰視頻編碼顯示系統(tǒng)設(shè)計[J].半導(dǎo)體光電,,2007,28(4):596-600.
[2] 陳蘇婷,,楊世洪.基于IB-IWT實時圖像壓縮的FPGA設(shè)計與實現(xiàn)[J].信息與控制,,2009,38(1):145-149.
[3] 高文武,,賀賽先.基于GPS的CCD相機同步控制器[J]. 武漢大學(xué)學(xué)報,,2004,29(8):744-746.
[4] 宋杰,,何友,,唐小明.雷達視頻回波信號的實時采集、顯示與存儲系統(tǒng)[J].數(shù)據(jù)采集與處理,,2006,21(1):90294.
[5] 王明富,,楊世洪,,吳欽章.大面陣CCD圖像實時顯示系統(tǒng)的設(shè)計[J].光學(xué)精密工程,2010,,18(9):2053-2059.
[6] 李武森,,遲澤英,陳文建.高速DSP圖像處理系統(tǒng)中的乒乓緩存結(jié)構(gòu)研究[J].光電子技術(shù)與信息,,2005,,18(3):76279.
[7] Analog Devices,Inc.ADV7300A datasheet[EB/OL].http//www.analog.com.2005.
[8] 何立民.I2C總線應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,,1995.