天天看點

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

實時圖像處理、高速 資料 運算處理要求其 系統具有對資料處理速度快、資料吞吐率高以及多任務處理 功能。目前大多數 方案都是采用HPI資料傳輸方式,将 ARM和 DSP進行組合完成一些圖像處理,DSP處理器隻是完成圖像采集、壓縮、編碼等簡單的處理[1]工作,不能滿足實時的 智能識别或大資料量運算的 視訊處理要求。在 應用領域方面也會因其處理速度問題受到一定的限制。

    例如, 胎兒性别屏蔽項目中,要對實時視訊進行性别部位的 檢測和屏蔽,若采用單DSP則會出現漏幀或視訊不流暢;應用于高速運動物體跟蹤時,單DSP無法實作實時運動物體跟蹤,例如 漢王科技的運動檢測和海康威視運動檢測,都不能實時檢測,即使檢測也會出現漏檢現象和視訊不流暢。當處理4CIF或者更大圖像時,單DSP的處理能力又會下降,雖然可以将圖像縮小進行處理,但是縮小圖像則會丢失一些重要的圖像資訊,使得智能識别準确率下降。

    針對上述情況, 設計一種能夠實作進行快速 信号處理和資料交換的實時圖像處理系統很有必要。

1 系統結構

1.1 結構

    系統功能:利用S3C6410進行資料整合、任務排程、人機互動;利用TMS320C6416進行算法運算;每個DSP與FPGA都是無縫連接配接。設計中利用FPGA實作的FIFO進行與DSP之間的高速資料傳輸以及ARM對多個DSP的任務排程處理等。

    系統結構如圖1所示。系統由1個ARM11處理器S3C6410(主 處理器)與4個TMS320C6416(720 Hz)(從DSP)通過FPGA(EP2C70~7)實作互聯的ARM+多DSP的 嵌入式圖像處理系統。所有的DSP都通過外部存儲器 接口(EMIF)與FPGA無縫相連,每個DSP之間的資料傳輸是通過FPGA内部互聯FIFO網絡實作。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    圖2所示是一種互聯的FIFO網絡結構和高速資料傳輸網絡結構。主處理器通過DMA資料通路模式與FPGA的雙口FIFO連接配接,進而實作與FPGA通過FIFO連接配接的所有從DSP進行通信,所有FIFO都是雙向的,FIFO及其讀寫控制邏輯都在FPGA内部實作。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    FPGA中的FIFO讀寫狀态控制、各從DSP之間通信的同步握手信号、S3C6410處理器資料請求等邏輯信号,都是由每個DSP的一部分GPIO口與EP2C70的I/O口連接配接實作。

1.2 特點

    系統結構具有可重構特性,在硬體平台不變情況下,隻需通過改變FPGA程式代碼就可以完全改變系統結構,以适應不同的算法結構。如圖2中屏蔽DSP1~DSP4之間的互相通信,即可組成主從并行的流水線結構;若需要串行的流水線結構,隻需将DSP1~DSP4的其中一個與S3C6410通信即可;若需要設計更複雜的串并混合性結構,也隻需改變FPGA的代碼就能夠很容易地實作。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

2 S3C6410的DMA與FPGA的軟FIFO

   接口實作

2.1 S3C6410簡介

    S3C6410是三星公司的産品采用ARM1176JZF-S核,包含16 KB的指令資料Cache和16 KB的指令數TCM;ARM Core電壓為1.1 V時,可以在553 MHz下運作。在1.2 V時,可以在667 MHz下運作。通過AXI、AHB和APB組成的64/32 bit内部總線與外部子產品相連。SROM Controller:6個片選,支援SRAM、ROM和NOR Flash以及支援8/16 bit,每個片選支援128 MB。JPEG Codec:支援JPEG編解碼功能,最大尺寸為4 096×4 096。2D GRAPHICS:2D加速,支援畫點/線,bitblt功能和Color Expansion。3D GRAPHICS:3D加速。

    S3C6410可支援4個DMA控制器,用于系統總線内部或與外圍總線之間的資料交換,每個控制器包含8個通道,支援8/16/32 bit傳輸。現以外部DMA請求為例簡要介紹DMA的工作過程。圖3所示為DMA基本工作時序。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    當需要進行DMA操作時,外部DMA請求引腳XnXDREQ置為低電平。此時DMA控制器向CPU發出占用總線的請求,當總線請求成功後,XnXDACK引腳變為低電平,表示CPU已經将總線使用權交給DMA控制器,可以進行資料傳輸。當資料傳輸完成後,應答信号XnXDACK置為高電平,通知CPU完成一次DMA操作。

    S3C6410提供了三種不同的DMA操作模式:單服務指令模式、單服務握手模式和全服務握手模式。在利用DMA進行資料傳輸前必須對其相關寄存器進行設定,包括源位址寄存器、目的位址寄存器和各自的控制寄存器以及配置DMA模式的控制寄存器等。

2.2 FPGA及其實作FIFO[2]

    采用FPGA 實作多時鐘電路系統時,需要處理不同的時鐘域之間速率比對問題,可利用FPGA内部生成的異步FIFO來處理。異步FIFO主要由雙端口RAM、寫位址産生子產品、讀位址産生子產品、滿空标志産生子產品組成。雙端口RAM由FPGA的Block RAM塊構成,FPGA采用Atera公司的EP2C70-896C7,其Block RAM讀寫時鐘頻率可以達到216.73 MHz,是以選用Block RAM作為存儲體,不僅速度快,而且設計簡單。設計時,一個端口配置成寫端口,另一端口配置成讀端口,然後把Block RAM 的管腳與相對應的控制信号相接即可。讀寫位址通過FPGA晶片内部的二進制進位邏輯産生,以對應Read_En/Write_En作為使能信号在讀/寫時鐘的控制下進行計數。空或滿标志可以由讀或寫位址的相對位置來獲得。本系統采用2個FIFO組成一路資料傳輸通道,雙向FIFO的設計圖如圖4所示。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

2.3 S3C6410的DMA與軟FIFO接口實作

    根據DMA接口原理,設計S3C6410與FPGA之間的接口簡圖如圖5所示。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    讀時鐘由ARM的時鐘輸出引腳CLKOUT0提供。CLKOUT0根據S3C6410内部寄存器的設定可以輸出不同的時鐘頻率。FIFO輸出資料經過以nGCS4為選通信号的緩沖器(Buffer)後接到S3C6410的資料總線上。nGCS4是S3C6410存儲空間中BNAK4的片選信号,當S3C6410對該信号對應存儲空間進行讀寫操作時,BANK4為低電平,其餘時間均為高電平。

  FIFO的寫請求信号由S3C6410與FIFO的滿狀态共同控制。當S3C6410發出START信号并且FIFO未滿時,寫請求信号為高電平,FIFO在寫時鐘的控制下寫入資料;當START信号撤銷或者FIFO滿時,寫請求信号變為低電平,停止寫操作。

     FIFO的讀操作與S3C6410的DMA操作配合進行。系統采用單服務指令模式的DMA操作,每次傳輸一個位元組的資料。當DREQ0信号變為低電平時,DMA操作開始,每次傳輸一個位元組後産生一個DACK0應答信号,而且隻要DREQ0為低電平DMA操作就繼續進行,直到DMA控制寄存器中的計數器為0,産生DMA中斷。根據上述時序特點,将FIFO的空信号作為DMA的請求信号DREQ0。當CCD輸出的資料寫入FIFO中時,空信号跳變為低電平啟動DMA操作,同時以DACK0信号作為FIFO的讀請求。每次DMA傳輸完成後應答信号使FIFO的讀指針移動一位,以實作資料的快速準确采集。

3 圖像采集子產品

    用可程式設計視訊輸入處理器SAA7113H進行視訊信号處理。SAA7113H内部內建了強大圖像色度、亮度處理功能以及多種輸出模式[3];有32個工作寄存器,在系統複位時,必須通過I2C總線對其進行初始化。本系統使用灰階圖像,沒有使用色度信号,是以資料線為8 bit。SAA7113H與FPGA的接口如圖6所示。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    在本系統中,FPGA内部需要設計一邏輯時序完成圖像資料的采集,資料的傳輸采用異步FIFO完成。采用此方案可以解決CCD輸出資料頻率與從DSP和ARM不比對的問題。

4 DSP的EMIFA與FPGA實作的軟FIFO接口

4.1 DSP的EMIFA接口[4-5]

    DSP(TMS320DM6416T)之間的通信都是通過外部存儲器接口(EMIFA)通路片外存儲器進行的。EMIFA由64 bit資料線D[63:0]、20 bit位址線A [22:03]、 8 bit位元組使能線BE[7:0]、4 bit位址區域片選線/CE3~/CE0和各類存儲器的讀/寫控制信号組成。TMS320DM6416T 的每個

/CEx空間都有256 MB尋址空間,并且可配置為與SRAM、SDRAM、ZBTSRAM、Flash、FIFO等各類存儲器接口。EMIFA讀/寫各類存儲器的時鐘可由軟體配置為EMIF的AECLKIN、CPU/4或CPU/6。本設計配置為EMIF的AECLKIN,且為133 MHz。

4.2 EMIF與軟FIFO接口實作

    DSP之間通過EMIF口與FPGA實作的異步FIFO進行通信。EMIF異步接口的每個讀/寫周期分為三個階段:建立時間(SETUP)、觸發時間(STROBE)、保持時間(HOLD),且每個階段時間可程式設計設定,以适應不同的讀寫速度。DSP讀寫異步FIFO的時序圖分别如圖7、圖8所示[6]。DSP讀寫FIFO控制信号由FPGA産生,其邏輯關系如下:

    寫FIFO信号:writ_clk= AECLKOUT

               writ_req=! (/CE+/AWE)

    讀FIFO信号:read_clk = AECLKOUT

               read_req = ! (/CE+/ARE)

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    另外,寫FIFO的DSP要相應為滿狀态标志,讀FIFO的DSP則相應為半滿狀态标志。

5 DSP之間資料通信[7]

    為了設計一款通用性比較強的圖像處理平台,各處理器間的資料傳輸必需達到通用性,這樣可以針對不同系統的應用,隻須修改圖像處理算法代碼,而不須要修改各處理器之間的通信。具體設計分為如下兩部分:

 (1) 資料通信協定說明(x=0,1,2,3)

 Se/Re (Send/Receive)[0]:ARM通過FPGA請求DSPx接收(該資料位為1)或發送。

 ARM[1:3]:該段資料為DSPx向FPGA送出請求數的DSP編号。

    DSPx[4:6]:ARM處理器向FPGA提出要求響應的DSP的編号。

    Da_Le(Data_Leng)[7:18]:ARM請求DSPx接收或發送的資料長度。

 Da_Un (Data_Unit)[19]:該标志位表示是否按照Data_leng*K(1K=1 024 bit)的資料長度傳輸資料,若為1,表示接收或發送資料長度為Data_leng*K(1K=1024 bit);若為0,表示接收或發送資料長度為Data_leng。

 Da_Bl (Data_Block)[20:27]:該資料表示ARM請求DSPx接收或發送Data_Block個Data_leng K或Data_leng資料塊。

 Da_Ch(Data _Result)[7:18]:ARM請求DSPx接收或發送的算法代碼中間運作結果或最終結果,此資料段與Data_Leng共用。

    In_Pr (Interrupt _Priority) [27:30]:設定DSP的中斷優先權。

    Ot_Use (DSP_State) [31:34]:DSP狀态标志資訊。

 

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    Ot_Use (Other_Use) [36:47]:使用者自定義資料段。

 (2) 資料通信主要流程

 首先,FPGA接收到ARM[1:3]處理器的請求信号,然後根據Data[0:34]計算出校驗資料SUM與Parity_Check[35]比較,若不等,則FPGA向ARM處理器重新發請求信号;若相等、且DSPx為空閑狀态時,則FPGA由Send/Receive向DSPx發送接收或發送資料請求,并将采集到的圖像資料傳輸給DSPx,同時使能對應的FIFO資料通道;DSPx根據收到的資料資訊,同樣計算出校驗資料,若與Parity_Check相等,則根據Send/Receive标志位,采用EDMA方式向EMIF口接收或發送Data_Block* Data_leng(或Data_Block* Data_leng K)資料。如果FPGA同時接收到2個或2個以上的DSPx資料傳輸請求信号,則FPGA根據Interrupt _Priority端口資料判其執行的先後順序。

6 系統的性能分析[7]

 影響系統性能的主要因素有:ARM處理器協調工作的響應速度、DSP處理資料的速度、資料在多處理器之間的傳輸速度。前兩個因素主要由處理的主頻和處理能力決定,是以不做測試。資料在處理器之間的傳輸速度則是本設計的主要部分之一,而資料傳輸帶寬和資料傳輸延遲是衡量資料傳輸速度的重要名額。

 若系統中DSP讀寫FIFO的帶寬為B(機關時間内DSP間的資料傳輸量),則:

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

    表1是ARM處理器分别與DSP1~DSP4傳輸不同大小資料時測得的平均延遲時間,圖9是根據測試資料繪出的實際帶寬Bf曲線。可以看出,随着傳輸的資料增大,Bf逐漸逼近B的266 MB/s的理論值。

基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統
基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統

     本文基于ARM、FPGA、多DSP設計的實時圖像信号處理系統,使用FPGA晶片設計的一種高速資料傳輸網絡互聯結構,使得該系統的資料通信能力和DSP的運算能力能很好地比對;通過資料傳輸控制總線,使得資料傳輸十分靈活;利用S3C6410對圖像資料傳輸的排程,圖像資料處理任務的配置設定,圖像儲存、顯示、網絡傳輸;利用4個TMS320C6416T對圖像做算法處理。經測試,算法代碼在單DSP(TMS320C6416T 1 GHz)平台下其處理時間小于0.2 s,而在本文平台下其處理時間小于40 ms,可以滿足實時要求。另外,該系統可廣泛适用于其他圖像處理、電子對抗、雷達信号處理等各個領域。

參考文獻

[1] 曹理發.尹勇.劉恒輝,等.基于ARM和DSP的視訊監控系統設計與實作[J].電子器件,2009,32(1).

[2] Cyclonce Inc. Cyclone II device handbook. 2005.

[3] 龍再川,趙凱生,洪明堅,等. ARM系統中DMA方式在資料采集中的應用[J].國外電子元器件,2007(2).

[4] Texas Instruments Incorporated.TMS320C6414,TMS320C6415, TMS320C6416FIXED-Point digital signal processor,2007.

[5] 李方慧,王飛,何佩琨. TMS320C6000系列DSPs原理與應用(第二版)[M].北京:電子工業出版社,2005.

[6] Texas Instruments Incorporated. TMS320C6000 EMIF to external FIFO interface.1999.

[7] 周委,陳思平,趙文龍,等. 基于DSP EMIF口、FPGA設計并實作的多DSP 嵌入式系統[J]. 電子技術應用, 2008,34(12):6-8.

繼續閱讀