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