文獻(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ū)懣刂七壿嫛IFO緩沖存儲(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ù)線(xiàn)轉(zhuǎn)換為串行數(shù)據(jù)線(xiàn)輸出。同時(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á)到很高的傳輸速度和效率,且由于省去了地址線(xiàn)而有利于PCB 板布線(xiàn)。缺點(diǎn)是只能順序讀寫(xiě)數(shù)據(jù),因而顯得比較呆板。
(2)雙口RAM結(jié)構(gòu): 具有兩套獨(dú)立的數(shù)據(jù)、地址和控制總線(xiàn),能達(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àn)通信協(xié)議。傳統(tǒng)的工作方式通常使用單片機(jī)實(shí)現(xiàn)對(duì)I2C總線(xiàn)接口的控制。然而,為減少設(shè)計(jì)資源并提高FPGA的使用效率,設(shè)計(jì)了基于FPGA的I2C總線(xiàn)控制器。
I2C總線(xiàn)控制器主要包括以下幾個(gè)單元:數(shù)據(jù)緩存單元、移位寄存器單元、I2C總線(xiàn)傳輸控制單元和分頻單元。其中,數(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總線(xiàn)上傳輸?shù)奈粚挒? bit,所以要進(jìn)行并串轉(zhuǎn)換,且需滿(mǎn)足數(shù)據(jù)高位在前,低位在后。通過(guò)構(gòu)造移位寄存器,可在時(shí)序控制邏輯模塊的控制下根據(jù)讀寫(xiě)使能信號(hào)對(duì)數(shù)據(jù)進(jìn)行正確處理。
I2C總線(xiàn)傳輸控制單元是設(shè)計(jì)的核心,根據(jù)I2C總線(xiàn)傳輸協(xié)議,整個(gè)傳輸過(guò)程可以分為空閑、開(kāi)始、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、停止5個(gè)狀態(tài)。當(dāng)I2C總線(xiàn)處于空閑狀態(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總線(xiàn)的傳輸時(shí)序控制,其狀態(tài)轉(zhuǎn)移如圖4所示。
分頻單元?jiǎng)t根據(jù)I2C總線(xiàn)傳輸速率,通過(guò)對(duì)FPGA的全局時(shí)鐘進(jìn)行分頻,以滿(mǎn)足I2C總線(xiàn)的傳輸速率要求。
通過(guò)在FPGA內(nèi)實(shí)現(xiàn)基于I2C總線(xiàn)控制器的設(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總線(xiàn)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1995.