網站首頁 文學常識 簡歷 公文文書 文學名著 實用文 人生哲理 作文 熱點話題作文
當前位置:文萃咖 > 實用範文 > 論文

基於DSP+FPGA的嵌入式圖像處理系統的發展的論文

欄目: 論文 / 發佈於: / 人氣:8.12K

引 言

基於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 系統方框圖

設計

本文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可見,本系統既可以使算法在超過一個圖像幀週期的時間內運行,又可以使連續一段時間內平均的執行時間近似為圖像幀週期。本系統滿足了數據量大,算法複雜度高的系統需求,相比乒乓緩衝,本文所提出的三重緩衝具有更快的響應速度。