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