《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統(tǒng)
基于ARM+FPGA+多DSP的嵌入式實時圖像處理系統(tǒng)
來源:電子技術應用2011年第8期
任曉波1, 趙文龍2, 唐 盛3, 陳思平1,3
1. 南昌航空大學 測試與光電技術學院, 江西 南昌 330063; 2. 南昌航空大學 信息工程學院, 江西 南昌 330063) 3. 深圳大學 醫(yī)學院生物醫(yī)學工程系, 廣東 深圳518060
摘要: 介紹了一款通用的嵌入式圖像處理系統(tǒng)的設計方法。系統(tǒng)采用FPGA設計FIFO實現(xiàn)ARM與多DSP的高速數(shù)據(jù)傳輸方法。實驗結果表明,所設計的多DSP協(xié)同工作的實時嵌入式圖像處理系統(tǒng),其工作性能穩(wěn)定、數(shù)據(jù)處理能力強,適用于高端的雷達信號處理、電子對抗、超聲圖像處理等場合。
中圖分類號:TP751.1
文獻標識碼: A
文章編號: 0258-7998(2011)08-142-05
The real-time image processing embedded system based on ARM+FPGA+multi DSP
Ren Xiaobo1, Zhao Wenlong2, Tang Sheng3, Chen Siping1,3
1. School of Measuring and Optical Engineering, Nanchang Hangkong University, Nanchang 330063, China; 2. School of Information Engineering, Nanchang Hangkong University, Nanchang 330063, China; 3. Department of Biomedical Information Engineering,Shenzhen University, Shenzhen 518060, China
Abstract: This paper introduced an design method of embedded image processing system to achieve a high data transferring speed between ARM and multiple DSP by adapting FIFO implemented by FPGA. The experiments show that the proposed system works stably and has strong data processing ability. The system is suitable for the situations requiring high speed processing, to name a few, the high-end radar signaling processing, electronic antagonizing,ultrasound image processing et al.
Key words : ARM11; TMS320C6416T; FIFO; FPGA; multi DSP embedded system


    實時圖像處理、高速數(shù)據(jù)運算處理要求其系統(tǒng)具有對數(shù)據(jù)處理速度快、數(shù)據(jù)吞吐率高以及多任務處理功能。目前大多數(shù)方案都是采用HPI數(shù)據(jù)傳輸方式,將ARM和DSP進行組合完成一些圖像處理,DSP處理器只是完成圖像采集、壓縮、編碼等簡單的處理[1]工作,不能滿足實時的智能識別或大數(shù)據(jù)量運算的視頻處理要求。在應用領域方面也會因其處理速度問題受到一定的限制。
    例如,胎兒性別屏蔽項目中,要對實時視頻進行性別部位的檢測和屏蔽,若采用單DSP則會出現(xiàn)漏幀或視頻不流暢;應用于高速運動物體跟蹤時,單DSP無法實現(xiàn)實時運動物體跟蹤,例如漢王科技的運動檢測和??低曔\動檢測,都不能實時檢測,即使檢測也會出現(xiàn)漏檢現(xiàn)象和視頻不流暢。當處理4CIF或者更大圖像時,單DSP的處理能力又會下降,雖然可以將圖像縮小進行處理,但是縮小圖像則會丟失一些重要的圖像信息,使得智能識別準確率下降。
    針對上述情況,設計一種能夠?qū)崿F(xiàn)進行快速信號處理和數(shù)據(jù)交換的實時圖像處理系統(tǒng)很有必要。
1 系統(tǒng)結構
1.1 結構

    系統(tǒng)功能:利用S3C6410進行數(shù)據(jù)整合、任務調(diào)度、人機交互;利用TMS320C6416進行算法運算;每個DSP與FPGA都是無縫連接。設計中利用FPGA實現(xiàn)的FIFO進行與DSP之間的高速數(shù)據(jù)傳輸以及ARM對多個DSP的任務調(diào)度處理等。
    系統(tǒng)結構如圖1所示。系統(tǒng)由1個ARM11處理器S3C6410(主處理器)與4個TMS320C6416(720 Hz)(從DSP)通過FPGA(EP2C70~7)實現(xiàn)互聯(lián)的ARM+多DSP的嵌入式圖像處理系統(tǒng)。所有的DSP都通過外部存儲器接口(EMIF)與FPGA無縫相連,每個DSP之間的數(shù)據(jù)傳輸是通過FPGA內(nèi)部互聯(lián)FIFO網(wǎng)絡實現(xiàn)。

    圖2所示是一種互聯(lián)的FIFO網(wǎng)絡結構和高速數(shù)據(jù)傳輸網(wǎng)絡結構。主處理器通過DMA數(shù)據(jù)訪問模式與FPGA的雙口FIFO連接,從而實現(xiàn)與FPGA通過FIFO連接的所有從DSP進行通信,所有FIFO都是雙向的,F(xiàn)IFO及其讀寫控制邏輯都在FPGA內(nèi)部實現(xiàn)。

    FPGA中的FIFO讀寫狀態(tài)控制、各從DSP之間通信的同步握手信號、S3C6410處理器數(shù)據(jù)請求等邏輯信號,都是由每個DSP的一部分GPIO口與EP2C70的I/O口連接實現(xiàn)。
1.2 特點
    系統(tǒng)結構具有可重構特性,在硬件平臺不變情況下,只需通過改變FPGA程序代碼就可以完全改變系統(tǒng)結構,以適應不同的算法結構。如圖2中屏蔽DSP1~DSP4之間的互相通信,即可組成主從并行的流水線結構;若需要串行的流水線結構,只需將DSP1~DSP4的其中一個與S3C6410通信即可;若需要設計更復雜的串并混合性結構,也只需改變FPGA的代碼就能夠很容易地實現(xiàn)。

2 S3C6410的DMA與FPGA的軟FIFO
   接口實現(xiàn)
2.1 S3C6410簡介
    S3C6410是三星公司的產(chǎn)品采用ARM1176JZF-S核,包含16 KB的指令數(shù)據(jù)Cache和16 KB的指令數(shù)TCM;ARM Core電壓為1.1 V時,可以在553 MHz下運行。在1.2 V時,可以在667 MHz下運行。通過AXI、AHB和APB組成的64/32 bit內(nèi)部總線與外部模塊相連。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控制器,用于系統(tǒng)總線內(nèi)部或與外圍總線之間的數(shù)據(jù)交換,每個控制器包含8個通道,支持8/16/32 bit傳輸?,F(xiàn)以外部DMA請求為例簡要介紹DMA的工作過程。圖3所示為DMA基本工作時序。

    當需要進行DMA操作時,外部DMA請求引腳XnXDREQ置為低電平。此時DMA控制器向CPU發(fā)出占用總線的請求,當總線請求成功后,XnXDACK引腳變?yōu)榈碗娖?,表示CPU已經(jīng)將總線使用權交給DMA控制器,可以進行數(shù)據(jù)傳輸。當數(shù)據(jù)傳輸完成后,應答信號XnXDACK置為高電平,通知CPU完成一次DMA操作。
    S3C6410提供了三種不同的DMA操作模式:單服務命令模式、單服務握手模式和全服務握手模式。在利用DMA進行數(shù)據(jù)傳輸前必須對其相關寄存器進行設置,包括源地址寄存器、目的地址寄存器和各自的控制寄存器以及配置DMA模式的控制寄存器等。
2.2 FPGA及其實現(xiàn)FIFO[2]
    采用FPGA 實現(xiàn)多時鐘電路系統(tǒng)時,需要處理不同的時鐘域之間速率匹配問題,可利用FPGA內(nèi)部生成的異步FIFO來處理。異步FIFO主要由雙端口RAM、寫地址產(chǎn)生模塊、讀地址產(chǎn)生模塊、滿空標志產(chǎn)生模塊組成。雙端口RAM由FPGA的Block RAM塊構成,FPGA采用Atera公司的EP2C70-896C7,其Block RAM讀寫時鐘頻率可以達到216.73 MHz,因此選用Block RAM作為存儲體,不僅速度快,而且設計簡單。設計時,一個端口配置成寫端口,另一端口配置成讀端口,然后把Block RAM 的管腳與相對應的控制信號相接即可。讀寫地址通過FPGA芯片內(nèi)部的二進制進位邏輯產(chǎn)生,以對應Read_En/Write_En作為使能信號在讀/寫時鐘的控制下進行計數(shù)??栈驖M標志可以由讀或?qū)懙刂返南鄬ξ恢脕慝@得。本系統(tǒng)采用2個FIFO組成一路數(shù)據(jù)傳輸通道,雙向FIFO的設計圖如圖4所示。

2.3 S3C6410的DMA與軟FIFO接口實現(xiàn)
    根據(jù)DMA接口原理,設計S3C6410與FPGA之間的接口簡圖如圖5所示。

    讀時鐘由ARM的時鐘輸出引腳CLKOUT0提供。CLKOUT0根據(jù)S3C6410內(nèi)部寄存器的設置可以輸出不同的時鐘頻率。FIFO輸出數(shù)據(jù)經(jīng)過以nGCS4為選通信號的緩沖器(Buffer)后接到S3C6410的數(shù)據(jù)總線上。nGCS4是S3C6410存儲空間中BNAK4的片選信號,當S3C6410對該信號對應存儲空間進行讀寫操作時,BANK4為低電平,其余時間均為高電平。
  FIFO的寫請求信號由S3C6410與FIFO的滿狀態(tài)共同控制。當S3C6410發(fā)出START信號并且FIFO未滿時,寫請求信號為高電平,FIFO在寫時鐘的控制下寫入數(shù)據(jù);當START信號撤銷或者FIFO滿時,寫請求信號變?yōu)榈碗娖?,停止寫操作?br/>      FIFO的讀操作與S3C6410的DMA操作配合進行。系統(tǒng)采用單服務命令模式的DMA操作,每次傳輸一個字節(jié)的數(shù)據(jù)。當DREQ0信號變?yōu)榈碗娖綍r,DMA操作開始,每次傳輸一個字節(jié)后產(chǎn)生一個DACK0應答信號,而且只要DREQ0為低電平DMA操作就繼續(xù)進行,直到DMA控制寄存器中的計數(shù)器為0,產(chǎn)生DMA中斷。根據(jù)上述時序特點,將FIFO的空信號作為DMA的請求信號DREQ0。當CCD輸出的數(shù)據(jù)寫入FIFO中時,空信號跳變?yōu)榈碗娖絾覦MA操作,同時以DACK0信號作為FIFO的讀請求。每次DMA傳輸完成后應答信號使FIFO的讀指針移動一位,以實現(xiàn)數(shù)據(jù)的快速準確采集。
3 圖像采集模塊
    用可編程視頻輸入處理器SAA7113H進行視頻信號處理。SAA7113H內(nèi)部集成了強大圖像色度、亮度處理功能以及多種輸出模式[3];有32個工作寄存器,在系統(tǒng)復位時,必須通過I2C總線對其進行初始化。本系統(tǒng)使用灰度圖像,沒有使用色度信號,所以數(shù)據(jù)線為8 bit。SAA7113H與FPGA的接口如圖6所示。

    在本系統(tǒng)中,F(xiàn)PGA內(nèi)部需要設計一邏輯時序完成圖像數(shù)據(jù)的采集,數(shù)據(jù)的傳輸采用異步FIFO完成。采用此方案可以解決CCD輸出數(shù)據(jù)頻率與從DSP和ARM不匹配的問題。
4 DSP的EMIFA與FPGA實現(xiàn)的軟FIFO接口
4.1 DSP的EMIFA接口[4-5]

    DSP(TMS320DM6416T)之間的通信都是通過外部存儲器接口(EMIFA)訪問片外存儲器進行的。EMIFA由64 bit數(shù)據(jù)線D[63:0]、20 bit地址線A [22:03]、 8 bit字節(jié)使能線BE[7:0]、4 bit地址區(qū)域片選線/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接口實現(xiàn)
    DSP之間通過EMIF口與FPGA實現(xiàn)的異步FIFO進行通信。EMIF異步接口的每個讀/寫周期分為三個階段:建立時間(SETUP)、觸發(fā)時間(STROBE)、保持時間(HOLD),且每個階段時間可編程設置,以適應不同的讀寫速度。DSP讀寫異步FIFO的時序圖分別如圖7、圖8所示[6]。DSP讀寫FIFO控制信號由FPGA產(chǎn)生,其邏輯關系如下:
    寫FIFO信號:writ_clk= AECLKOUT
               writ_req=! (/CE+/AWE)
    讀FIFO信號:read_clk = AECLKOUT
               read_req = ! (/CE+/ARE)


    另外,寫FIFO的DSP要相應為滿狀態(tài)標志,讀FIFO的DSP則相應為半滿狀態(tài)標志。
5 DSP之間數(shù)據(jù)通信[7]
    為了設計一款通用性比較強的圖像處理平臺,各處理器間的數(shù)據(jù)傳輸必需達到通用性,這樣可以針對不同系統(tǒng)的應用,只須修改圖像處理算法代碼,而不須要修改各處理器之間的通信。具體設計分為如下兩部分:
 (1) 數(shù)據(jù)通信協(xié)議說明(x=0,1,2,3)
 Se/Re (Send/Receive)[0]:ARM通過FPGA請求DSPx接收(該數(shù)據(jù)位為1)或發(fā)送。
 ARM[1:3]:該段數(shù)據(jù)為DSPx向FPGA發(fā)出請求數(shù)的DSP編號。
    DSPx[4:6]:ARM處理器向FPGA提出要求響應的DSP的編號。
    Da_Le(Data_Leng)[7:18]:ARM請求DSPx接收或發(fā)送的數(shù)據(jù)長度。
 Da_Un (Data_Unit)[19]:該標志位表示是否按照Data_leng*K(1K=1 024 bit)的數(shù)據(jù)長度傳輸數(shù)據(jù),若為1,表示接收或發(fā)送數(shù)據(jù)長度為Data_leng*K(1K=1024 bit);若為0,表示接收或發(fā)送數(shù)據(jù)長度為Data_leng。
 Da_Bl (Data_Block)[20:27]:該數(shù)據(jù)表示ARM請求DSPx接收或發(fā)送Data_Block個Data_leng K或Data_leng數(shù)據(jù)塊。
 Da_Ch(Data _Result)[7:18]:ARM請求DSPx接收或發(fā)送的算法代碼中間運行結果或最終結果,此數(shù)據(jù)段與Data_Leng共用。
    In_Pr (Interrupt _Priority) [27:30]:設置DSP的中斷優(yōu)先權。
    Ot_Use (DSP_State) [31:34]:DSP狀態(tài)標志信息。
 
    Ot_Use (Other_Use) [36:47]:用戶自定義數(shù)據(jù)段。
 (2) 數(shù)據(jù)通信主要流程
 首先,F(xiàn)PGA接收到ARM[1:3]處理器的請求信號,然后根據(jù)Data[0:34]計算出校驗數(shù)據(jù)SUM與Parity_Check[35]比較,若不等,則FPGA向ARM處理器重新發(fā)請求信號;若相等、且DSPx為空閑狀態(tài)時,則FPGA由Send/Receive向DSPx發(fā)送接收或發(fā)送數(shù)據(jù)請求,并將采集到的圖像數(shù)據(jù)傳輸給DSPx,同時使能對應的FIFO數(shù)據(jù)通道;DSPx根據(jù)收到的數(shù)據(jù)信息,同樣計算出校驗數(shù)據(jù),若與Parity_Check相等,則根據(jù)Send/Receive標志位,采用EDMA方式向EMIF口接收或發(fā)送Data_Block* Data_leng(或Data_Block* Data_leng K)數(shù)據(jù)。如果FPGA同時接收到2個或2個以上的DSPx數(shù)據(jù)傳輸請求信號,則FPGA根據(jù)Interrupt _Priority端口數(shù)據(jù)判其執(zhí)行的先后順序。
6 系統(tǒng)的性能分析[7]
 影響系統(tǒng)性能的主要因素有:ARM處理器協(xié)調(diào)工作的響應速度、DSP處理數(shù)據(jù)的速度、數(shù)據(jù)在多處理器之間的傳輸速度。前兩個因素主要由處理的主頻和處理能力決定,因此不做測試。數(shù)據(jù)在處理器之間的傳輸速度則是本設計的主要部分之一,而數(shù)據(jù)傳輸帶寬和數(shù)據(jù)傳輸延遲是衡量數(shù)據(jù)傳輸速度的重要指標。
 若系統(tǒng)中DSP讀寫FIFO的帶寬為B(單位時間內(nèi)DSP間的數(shù)據(jù)傳輸量),則:
  
    表1是ARM處理器分別與DSP1~DSP4傳輸不同大小數(shù)據(jù)時測得的平均延遲時間,圖9是根據(jù)測試數(shù)據(jù)繪出的實際帶寬Bf曲線。可以看出,隨著傳輸?shù)臄?shù)據(jù)增大,Bf逐漸逼近B的266 MB/s的理論值。

     本文基于ARM、FPGA、多DSP設計的實時圖像信號處理系統(tǒng),使用FPGA芯片設計的一種高速數(shù)據(jù)傳輸網(wǎng)絡互聯(lián)結構,使得該系統(tǒng)的數(shù)據(jù)通信能力和DSP的運算能力能很好地匹配;通過數(shù)據(jù)傳輸控制總線,使得數(shù)據(jù)傳輸十分靈活;利用S3C6410對圖像數(shù)據(jù)傳輸?shù)恼{(diào)度,圖像數(shù)據(jù)處理任務的分配,圖像保存、顯示、網(wǎng)絡傳輸;利用4個TMS320C6416T對圖像做算法處理。經(jīng)測試,算法代碼在單DSP(TMS320C6416T 1 GHz)平臺下其處理時間小于0.2 s,而在本文平臺下其處理時間小于40 ms,可以滿足實時要求。另外,該系統(tǒng)可廣泛適用于其他圖像處理、電子對抗、雷達信號處理等各個領域。
參考文獻
[1] 曹理發(fā).尹勇.劉恒輝,等.基于ARM和DSP的視頻監(jiān)控系統(tǒng)設計與實現(xiàn)[J].電子器件,2009,32(1).
[2] Cyclonce Inc. Cyclone II device handbook. 2005.
[3] 龍再川,趙凱生,洪明堅,等. ARM系統(tǒng)中DMA方式在數(shù)據(jù)采集中的應用[J].國外電子元器件,2007(2).
[4] Texas Instruments Incorporated.TMS320C6414,TMS320C6415, TMS320C6416FIXED-Point digital signal processor,2007.
[5] 李方慧,王飛,何佩琨. TMS320C6000系列DSPs原理與應用(第二版)[M].北京:電子工業(yè)出版社,2005.
[6] Texas Instruments Incorporated. TMS320C6000 EMIF to external FIFO interface.1999.
[7] 周委,陳思平,趙文龍,等. 基于DSP EMIF口、FPGA設計并實現(xiàn)的多DSP 嵌入式系統(tǒng)[J]. 電子技術應用, 2008,34(12):6-8.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。