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