基于DSP+FPGA的嵌入式圖像處理系統的發(fā)展的論文
引 言
伴隨著(zhù)圖像處理技術(shù)的快速發(fā)展,圖像處理系統的性能需求也在不斷提高,特別是在實(shí)時(shí)性上的要求;赑C或者工作站的圖像處理系統,常常不是一個(gè)可行的選擇,原因如下:應用對處理時(shí)間要求苛刻;CCD攝像機數據量太大。另外,這類(lèi)系統的資源有效利用率較低,體積大而笨重,功耗高,不適合便攜式應用場(chǎng)合。
DSP是一種基于指令和代碼的流水線(xiàn)處理器,具有強大的數據處理能力和較高的運行速度,采用C/C++或者線(xiàn)性匯編語(yǔ)言編程,可以支持復雜的算法處理,而FPGA則屬于真正的并行架構,不同的處理操作無(wú)需競爭相同的資源,每個(gè)處理任務(wù)都可以不受其他邏輯塊的影響自主運行,因此FPGA具有強大的并行處理能力,其現場(chǎng)可編程的屬性也帶來(lái)了更大的`靈活性,但是,FPGA不擅長(cháng)復雜的算法處理和邏輯控制。本文基于DSP+FPGA架構構建了一個(gè)嵌入式圖像處理系統,使得DSP和FPGA可以發(fā)揮各自的特長(cháng),協(xié)同處理,與單獨采用DSP或FPGA的系統相比,本系統具有更強大的數據處理能力,且更靈活、更通用。
1.系統架構
本系統采用DSP+FPGA架構,原理方框圖如圖1所示,其中DSP芯片采用TI公司單核最高性能的TMS320C6455(簡(jiǎn)稱(chēng)C6455)芯片作為核心處理器,負責完成視頻圖像的復雜算法處理,FPGA芯片采用Altera公司的Cyclone Ⅲ系列芯片EP3C55,FPGA作為DSP的協(xié)處理器,負責完成圖像的采集、顯示和傳輸等輔助功能,使得DSP可以專(zhuān)注于算法處理。
DSP和FPGA之間通過(guò)32位EMIF接口實(shí)現了高速同步無(wú)縫互聯(lián), 由圖1可知,本系統的動(dòng)態(tài)存儲器均采用DDR2 SDRAM,其中C6455所帶2片DDR2存儲器用來(lái)存儲圖像和算法數據,為C6455處理大數據量、復雜算法提供了保證。FPGA所帶2片DDR2存儲器用來(lái)存儲捕捉的Camera圖像數據,以便VGA顯示和DSP讀取。FPGA采集的圖像數據可通過(guò)EMIF和EDMA從FPGA所帶的DDR2存儲器搬運到DSP所帶的DDR2存儲器。
圖1 系統方框圖
2.FPGA設計
本文FPGA的主要功能?chē)@著(zhù)DDR2存儲器的讀寫(xiě),如圖2所示。
圖2 FPGA的主要功能模塊圖
相機負責向緩沖區寫(xiě)數據,VGA顯示和DSP負責從緩沖區讀數據。本文中的DDR2控制器工作于Full?rate模式下,需要向DDR2 driver提供2倍數據寬度,即64 b數據。本文對每個(gè)讀寫(xiě)數據通道,使用獨立的FIFO進(jìn)行不同時(shí)鐘域之間的數據傳輸。從CameraLink相機的LVDS接收器解碼得到8 b圖像數據,在向Write FIFO寫(xiě)之前,需要按8 B進(jìn)行打包處理,合并為64 b數據;而發(fā)向VGA顯示的數據在從Read FIFO中讀出后,需要先經(jīng)過(guò)拆包處理,得到8 b圖像數據后才能送給VGA Controller;從Capture FIFO讀出的數據發(fā)送給DSP之前也要經(jīng)過(guò)拆包處理,將64 b數據拆為2個(gè)32 b數據后,才能發(fā)送給EMIFA,進(jìn)行傳輸。為方便可視化驗證算法處理結果,DSP算法處理結果可以通過(guò)McBSP發(fā)送給FPGA,FPGA接收到數據,將其轉換為可視的屏幕位置送給VGA Controller,在屏幕上進(jìn)行疊加顯示。
本系統應用于近紅外圖像處理領(lǐng)域,采用的CameraLink相機輸出分辨率為1 024×768,幀率為30 f/s,而一般的液晶顯示器刷新頻率為60 Hz,為了將捕捉到的相機數據顯示出來(lái),需要將30幀圖像插幀為60幀,但是顯示時(shí)鐘與相機時(shí)鐘并不是同源時(shí)鐘,其幀率并不是嚴格的兩倍關(guān)系,這種相機和顯示之間的異步時(shí)序關(guān)系如圖3所示,所以不能簡(jiǎn)單地將一幀圖像顯示2次;同時(shí),本系統的近紅外圖像算法處理時(shí)間根據圖像的不同而具有不確定性,并非每幀圖像都能在一個(gè)幀周期內處理完成;谶@兩個(gè)因素,本系統沒(méi)有采用常規的乒乓緩沖處理方式,而是采用了三重緩沖解決了這兩個(gè)問(wèn)題。
圖3 相機和顯示的異步時(shí)序關(guān)系
所謂三重緩沖,也即在DDR2存儲器內開(kāi)辟了三個(gè)緩沖:BufferA,BufferB和BufferC。其中,讀寫(xiě)操作各占一個(gè)緩沖區,第三個(gè)存儲區作為中轉,先不考慮DSP從緩沖區讀數據。
三重緩沖的示意圖如圖4所示,假設當前緩沖區BufferA正在進(jìn)行寫(xiě)操作,緩沖區BufferB正在進(jìn)行讀操作,緩沖區BufferC則有2種可能:已寫(xiě)滿(mǎn)(FULL)和已讀完(EMPTY)兩個(gè)狀態(tài)。此時(shí),如果需要進(jìn)行讀寫(xiě)翻頁(yè)操作,即讀復位信號或寫(xiě)復位
信號有效時(shí),DDR2驅動(dòng)程序可按不同情況給出不同的操作,如表1所示。
例如,當讀復位信號有效,寫(xiě)復位信號無(wú)效時(shí),說(shuō)明緩沖區BufferA尚未寫(xiě)滿(mǎn),而緩沖區BufferB已經(jīng)讀完,此時(shí),需要查詢(xún)緩沖區BufferC的狀態(tài),如果緩沖區BufferC處于“FULL”狀態(tài),則讀緩沖區將由當前的緩沖區BufferB改為緩沖區BufferC,并將緩沖區BufferB設置為“EMPTY”狀態(tài);如果緩沖區BufferC處于“EMPTY”狀態(tài),則將重新讀取緩沖區BufferB。
圖4 三重緩沖的示意圖
表1 三重緩沖的決策表
再考慮DSP從緩沖區讀數據的情況,為保證DSP任意時(shí)刻開(kāi)始讀數據,總能讀到最新的數據,本文使用圖像的場(chǎng)信號FVAL下降沿作為觸發(fā),定位DSP讀數據的緩沖區地址,如果在下一個(gè)FVAL下降沿之前DSP始終未開(kāi)始讀數據,則在新的FVAL下降沿時(shí)刻重新定位緩沖區地址,反之,如果DSP開(kāi)始讀數據了,即使在FVAL下降沿未能讀完,也會(huì )繼續讀,直到DSP讀完數據,再重新定位緩沖區地址,按本文設計的方案,DSP會(huì )在很短的時(shí)間內完成讀數據任務(wù),而如果在兩個(gè)FVAL內,DSP一直未完成讀任務(wù),則認為發(fā)生了錯誤,讀控制器會(huì )進(jìn)行復位矯正。
DDR2驅動(dòng)的讀寫(xiě)控制以顯示的行信號HD為周期,周期性查詢(xún)是否需要進(jìn)行讀寫(xiě)操作。其狀態(tài)轉移示意圖如圖5所示。
圖5 DDR2讀寫(xiě)控制的狀態(tài)機
SignalTap Ⅱ Logic Analyzer是Quartus Ⅱ自帶的嵌入式邏輯分析儀,與ModelSim軟件仿真有所不同,是在線(xiàn)式仿真,可以實(shí)時(shí)捕捉和顯示信號變化。圖6所示是本文用SignalTap Ⅱ捕捉到的數據波形。
圖6 SignalTap Ⅱ波形圖
3.C6455軟件設計
本文C6455的軟件基于TI提供的搶占式多線(xiàn)程實(shí)時(shí)內核DSP/BIOS進(jìn)行開(kāi)發(fā),網(wǎng)絡(luò )部分使用了NDK開(kāi)發(fā)套件,為了實(shí)現通過(guò)網(wǎng)絡(luò )發(fā)送圖像數據給計算機和接收來(lái)自計算機的圖像數據,使用了面向無(wú)連接的UDP協(xié)議,相比TCP協(xié)議,UDP速度更快,更適合應用。C6455軟件主要包含三個(gè)部分:實(shí)時(shí)性最高的硬件中斷線(xiàn)程(HWI);采集線(xiàn)程和兩個(gè)任務(wù)線(xiàn)程(TSK);處理線(xiàn)程和通信線(xiàn)程,流程圖如圖7所示。
圖7 C6455程序流程圖
4.實(shí)驗結果
本文提出的基于DSP+FPGA的圖像處理系統,已經(jīng)通過(guò)實(shí)驗驗證。圖8展示了本系統圖像處理算法連續運行500個(gè)周期的統計結果,圖中實(shí)線(xiàn)為連續10個(gè)相鄰離散點(diǎn)的平均值。由圖8可見(jiàn),本系統既可以使算法在超過(guò)一個(gè)圖像幀周期的時(shí)間內運行,又可以使連續一段時(shí)間內平均的執行時(shí)間近似為圖像幀周期。本系統滿(mǎn)足了數據量大,算法復雜度高的系統需求,相比乒乓緩沖,本文所提出的三重緩沖具有更快的響應速度。
【基于DSP+FPGA的嵌入式圖像處理系統的發(fā)展的論文】相關(guān)文章:
嵌入式圖像處理系統的軟件設計論文04-20
基于知識本體的職業(yè)教學(xué)軟件發(fā)展論文01-26
數字圖像處理技術(shù)的方法及發(fā)展方向論文05-21
圖像加密論文報告07-14
嵌入式系統應用現狀及發(fā)展趨勢論文07-06