文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)06-0024-03
全景圖像實(shí)時(shí)處理系統(tǒng)可以獲取周?chē)较蛏系膱?chǎng)景圖像,可廣泛應(yīng)用于軍事偵察、視頻監(jiān)控、機(jī)器人視覺(jué)等領(lǐng)域[1]。
對(duì)于高分辨率折反射全景圖像處理系統(tǒng),如果按照分辨率為2 048×2 048、幀率為15 f/s、每個(gè)像素為8 bit的灰度來(lái)計(jì)算,相機(jī)的數(shù)據(jù)吞吐量為480 Mb/s。在圖像采集、緩存、解算以及顯示輸出過(guò)程中,需要選擇合適的算法進(jìn)行大量的計(jì)算,一般單獨(dú)的處理器組成的嵌入式系統(tǒng)很難完成高分辨、實(shí)時(shí)性的圖像快速采集[2],因此需采取多個(gè)并行嵌入式處理器結(jié)構(gòu)完成折反射全景成像處理[3-4]。
本文利用并行嵌入式處理結(jié)構(gòu),設(shè)計(jì)了基于FPGA和DSP的雙核全景圖像處理系統(tǒng)。主要包括基于FPGA的SDRAM控制器設(shè)計(jì)以及采用雙SDRAM在乒乓模式下輪流存儲(chǔ)采集圖像的策略,實(shí)現(xiàn)了高速全景圖像的存儲(chǔ)。在FPGA與DSP之間建立合理的握手機(jī)制,避免在同一時(shí)刻對(duì)同一個(gè)SDRAM進(jìn)行讀和寫(xiě);設(shè)計(jì)了DSP與FPGA通信接口,實(shí)現(xiàn)了二者之間的高速數(shù)據(jù)通信。本系統(tǒng)為后續(xù)算法處理提供了更加充足的時(shí)間裕度,為高速實(shí)時(shí)圖像處理提供了堅(jiān)實(shí)的基礎(chǔ)。
1 全景圖像處理系統(tǒng)結(jié)構(gòu)
DSP+FPGA構(gòu)成的高分辨率折反射全景圖像處理系統(tǒng)的結(jié)構(gòu)如圖1所示。由Camera Link 接口的CCD相機(jī)采集的灰度圖像數(shù)據(jù)經(jīng)過(guò)LVDS串并轉(zhuǎn)換芯片轉(zhuǎn)換,在FPGA的控制下,完成圖像的采集,通過(guò)FPGA進(jìn)行乒乓緩存操作,64 bit SDRAM控制器完成對(duì)緩存器的突發(fā)式讀寫(xiě)控制,為整個(gè)系統(tǒng)提供高速緩存器;FPGA利用DSP的EMIF接口將已經(jīng)存儲(chǔ)的圖像數(shù)據(jù)以DMA方式傳送給DSP,DSP接收數(shù)據(jù)后完成全景圖像柱面展開(kāi)、分割識(shí)別等算法;DSP再通過(guò)EMIF接口把數(shù)據(jù)以DMA方式傳送回FPGA;利用FPGA把數(shù)據(jù)寫(xiě)入到緩存器中,最后發(fā)送到顯示器進(jìn)行顯示。
2 乒乓緩存模式下SDRAM控制器的設(shè)計(jì)及實(shí)現(xiàn)
2.1 SDRAM控制器的結(jié)構(gòu)設(shè)計(jì)
SDRAM控制器的結(jié)構(gòu)組成包括:系統(tǒng)控制接口模塊、命令接口與解析模塊、刷新模塊、操作信號(hào)生成模塊、數(shù)據(jù)通路模塊。其中,系統(tǒng)控制接口模塊用以接收系統(tǒng)的控制信號(hào)從而產(chǎn)生相應(yīng)的CMD命令組合;命令接口與解析模塊用以接收CMD命令解碼并生成相應(yīng)操作指令;操作信號(hào)生成模塊用以接收操作指令,并根據(jù)相關(guān)時(shí)序生成對(duì)SDRAM的操作信號(hào);數(shù)據(jù)通路模塊用以控制數(shù)據(jù)流的方向以及產(chǎn)生有效的數(shù)據(jù)輸入輸出;刷新模塊包含在命令接口與解析模塊中用以產(chǎn)生刷新以及自動(dòng)刷新邏輯。
2.1.1 系統(tǒng)控制接口模塊
該模塊包含初始化進(jìn)程以及系統(tǒng)指令分析機(jī)制。初始化進(jìn)程要完成對(duì)SDRAM器件和SDRAM控制器的初始化,以保持SDRAM控制器與外部SDRAM器件的工作模式匹配[5]。初始化完成后,系統(tǒng)的指令分析機(jī)制就可以接收并且分析外部數(shù)據(jù)、地址、控制信號(hào)以及從命令接口與解析模塊返回的命令響應(yīng)信號(hào)(CMDACK),從而以此產(chǎn)生對(duì)應(yīng)的CMD命令和SADDR地址信息給命令接口與解析模塊。此外,SADDR是分時(shí)復(fù)用的,在初始化階段SADDR用來(lái)傳輸用戶(hù)設(shè)定的工作模式控制字,而正常讀寫(xiě)操作中,SADDR又可作為分時(shí)復(fù)用的地址線(xiàn)傳輸SDRAM所需要的row、column以及Bank地址。
2.1.2 命令接口與解析模塊
此模塊對(duì)由系統(tǒng)控制接口模塊接收到的CMD命令進(jìn)行判斷并解碼,其輸出就是發(fā)送給下一級(jí)即操作信號(hào)生成模塊的操作指令。同一時(shí)刻只允許輸出一個(gè)有效操作指令。該模塊中含有模式寄存器用來(lái)預(yù)設(shè)控制器的模式參數(shù),為控制提供具體的依據(jù)。
2.1.3 操作信號(hào)生成模塊
此模塊根據(jù)命令接口和解析模塊發(fā)送過(guò)來(lái)的操作指令,按照SDRAM讀寫(xiě)時(shí)序規(guī)范產(chǎn)生操作動(dòng)作以及相應(yīng)的操作信號(hào)。程序中,CMD命令WRITEA和READA是實(shí)際上隱含了ACTIVE命令的WRITE和READ,它的實(shí)際工作過(guò)程是:當(dāng)該模塊收到do_write或do_read指令后,其反饋給命令接口及解析模塊的CMDACK置為1,表示響應(yīng)命令標(biāo)志,同時(shí)發(fā)出ACTIVE激活操作;緊接著產(chǎn)生一個(gè)延時(shí)動(dòng)作,經(jīng)過(guò)初始化時(shí)配置規(guī)定的CAS Latency延時(shí)時(shí)間后再進(jìn)行寫(xiě)或讀操作。
2.1.4 數(shù)據(jù)通路模塊
此模塊在OE信號(hào)控制下,保持?jǐn)?shù)據(jù)的輸入輸出和相應(yīng)的操作指令在時(shí)序上同步,并且根據(jù)SDRAM器件的時(shí)序參數(shù)加入一定的延時(shí)以滿(mǎn)足宏觀的時(shí)序符合數(shù)據(jù)手冊(cè)的要求。當(dāng)OE=1時(shí),數(shù)據(jù)由控制器經(jīng)過(guò)DQ引腳寫(xiě)入SDRAM器件;當(dāng)OE=0時(shí),數(shù)據(jù)由SDRAM器件的DQ引腳讀入到控制器。
2.2 乒乓緩存模式
將輸入數(shù)據(jù)流通過(guò)輸入數(shù)據(jù)選擇單元實(shí)時(shí)地分配到兩個(gè)數(shù)據(jù)緩存區(qū)。分別利用兩組SDRAM作為乒緩存器和乓緩存器,使用“空間換取時(shí)間”的方法,使兩組緩存器在同一時(shí)間分別作為讀和寫(xiě)的緩存,達(dá)到并行的目的。
在乒?fàn)顟B(tài)時(shí),乒乓操作控制器向SDRAM B中寫(xiě)入數(shù)據(jù),與此同時(shí)從SDRAM A中讀取狀態(tài)交換之前已經(jīng)存入的數(shù)據(jù);在乓狀態(tài)時(shí),乒乓操作控制器向SDRAM A中寫(xiě)入數(shù)據(jù),同時(shí)從SDRAM B中讀取狀態(tài)交換之前已經(jīng)存入的數(shù)據(jù),同時(shí)乒乓操作控制與其他的采集、算法和顯示模塊進(jìn)行數(shù)據(jù)交換。乒乓緩存結(jié)構(gòu)如圖2所示。
2.3 SDRAM控制器實(shí)現(xiàn)及時(shí)序仿真
SDRAM控制器實(shí)現(xiàn):SDRAM控制模塊與FPGA端的SDRAM存儲(chǔ)器相連,以FullPage模式從FPGA端的SDRAM存儲(chǔ)器中高速讀寫(xiě)數(shù)據(jù);觸發(fā)FullPage的REFRESH的命令,既保證數(shù)據(jù)不丟失,也能保證刷新的完成。在發(fā)出FullPage命令以后,必須給出一段空操作的延時(shí)或讀操作。時(shí)序仿真分別如圖3、圖4、圖5所示。
3 DSP與FPGA的數(shù)據(jù)通信
為了提高數(shù)據(jù)傳輸?shù)耐掏铝?,DSP與FPGA之間使用DMA方式進(jìn)行數(shù)據(jù)傳輸[6],每次突發(fā)傳輸一行圖像數(shù)據(jù),使傳輸速率最大化。DSP采用EMIF接口,EMIF數(shù)據(jù)接口可以配置為多種傳輸方式并且可以DMA傳輸,而且是無(wú)縫接口。由于DSP與FPGA是跨時(shí)鐘域系統(tǒng),所以必須利用FPGA做好跨時(shí)鐘域處理,使用FIFO作為接口進(jìn)行數(shù)據(jù)緩存。
FPGA將采集到的數(shù)據(jù)經(jīng)過(guò)預(yù)處理之后以64 bit的數(shù)據(jù)寬度開(kāi)始向DSP傳送,同時(shí)FPGA通過(guò)發(fā)出脈沖沿觸發(fā)DSP外部中斷管腳來(lái)觸發(fā)DSP的全局中斷。全局中斷觸發(fā)EDMA把外部數(shù)據(jù)傳送給DSP內(nèi)部的RAM,當(dāng)EDMA(接收)傳輸完成后,DSP的EDMA傳輸事件管理器會(huì)觸發(fā)“EDMA傳輸完成中斷”,此時(shí)DSP可以進(jìn)行相應(yīng)的算法處理并且將處理后的目標(biāo)數(shù)據(jù)存放到內(nèi)部RAM中;然后再觸發(fā)EDMA(發(fā)送)數(shù)據(jù)傳輸,通過(guò)EMIF數(shù)據(jù)接口將處理后的數(shù)據(jù)傳回給FPGA。數(shù)據(jù)流向示意圖如圖6所示。
DSP與FPGA之間傳輸數(shù)據(jù)通信速率為100 MHz,傳輸一行圖像數(shù)據(jù)時(shí)間為2.56 ?滋s(傳回仍然為2.56 ?滋s)。由于前端每一行數(shù)據(jù)的采集時(shí)間為30.85 ?滋s,留給處理每行數(shù)據(jù)的算法時(shí)間為25.73 ?滋s,因此,在DSP的算法程序必須使用效率更高的線(xiàn)性匯編,才能滿(mǎn)足時(shí)間冗余度。
4 系統(tǒng)實(shí)現(xiàn)及結(jié)果
實(shí)驗(yàn)采用ALTERA公司的CycloneII系列的EP2C35-F672-8 FPGA以及2片Hynix公司的32 bit SDRAM HY57V283220LTP-7,其中電路板由直流穩(wěn)壓源供電。由2 048×2 048的4百萬(wàn)像素,每秒15幀的Camera Link 接口的CCD相機(jī)采集得到的灰度圖像數(shù)據(jù)經(jīng)過(guò)LVDS差分串行信號(hào)轉(zhuǎn)并行芯片DS90CR288A進(jìn)行轉(zhuǎn)換,F(xiàn)PGA通過(guò)該控制器進(jìn)行整頁(yè)突發(fā)寫(xiě)操作將圖像數(shù)據(jù)寫(xiě)入到SDRAM A器件中。在乒乓緩存作用下,控制器將進(jìn)行突發(fā)讀操作,將SDRAM B中的圖像數(shù)據(jù)通過(guò)DMA方式與DSP進(jìn)行數(shù)據(jù)交換。DSP接收數(shù)據(jù)后完成全景圖像解算,然后將數(shù)據(jù)通過(guò)DMA方式傳送回FPGA,最后再將數(shù)據(jù)經(jīng)過(guò)LVDS并行轉(zhuǎn)串行轉(zhuǎn)換芯片DS90C385A轉(zhuǎn)換為Camera Link信號(hào),輸出到Camera Link接口的液晶顯示器上,以1 024×768的分辨率進(jìn)行實(shí)時(shí)顯示。實(shí)驗(yàn)采集的全景圖如圖7所示。
本文設(shè)計(jì)了一種基于DSP+FPGA的全景圖像處理系統(tǒng),該系統(tǒng)設(shè)計(jì)的高效的64 bit SDRAM控制器完成了對(duì)緩存器的突發(fā)式讀寫(xiě)控制,以解決由于高分辨率和高幀率導(dǎo)致的數(shù)據(jù)傳輸速率高,以及必須給算法的解算預(yù)留足夠時(shí)間的問(wèn)題;通過(guò)FPGA進(jìn)行乒乓緩存操作,系統(tǒng)提供了高速緩存器,保證了DSP與FPGA協(xié)調(diào)地并行工作,解決了某些要求連續(xù)不間斷的時(shí)序要求;設(shè)計(jì)了用于DSP與FPGA通信的FPGA端接口模塊和DSP端接口程序。調(diào)試結(jié)果表明,系統(tǒng)可以穩(wěn)定可靠地完成高分辨率全景圖像的采集、緩存、處理和顯示。
參考文獻(xiàn)
[1] NAYAR S K.Catadioptric omnidirectional camera[C]. Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition.San Juan.PR:IEEE Press,1997.
[2] 陳立棟,張茂軍,王煒,等.異構(gòu)雙核的高分辨率折反射全景高速處理系統(tǒng)[J].電子與信息學(xué)報(bào),2009,31(4):822-826.
[3] 譚志剛.全景環(huán)形成像的嵌入式DSP處理研究[D].杭州:浙江大學(xué),2005.
[4] Yan Luxin,Zhang Tianxu,Zhong Sheng.A DSP+FPGA-based parallel architecture for real-time image processing[C].Proceedings of the 6th World Congress on Intelligent Control and Automation,Dalian,China,Jun.21-23,2006:10022-10025.
[5] 曹華,鄧彬.使用Verilog實(shí)現(xiàn)基于FPGA的SDRAM控制器[J].今日電子,2005(1):53-55.
[6] 李樂(lè),熊志輝,王斌,等.DSP+FPGA折反射全景視頻處理系統(tǒng)中雙核高速數(shù)據(jù)通信[J].電子與信息學(xué)報(bào),2010,32(3):649-654.