任曉波,趙文龍,唐 盛,陳思平,
(1.南昌航空大學 測試與光電技術學院,江西 南昌 330063;2.南昌航空大學 信息工程學院,江西 南昌 330063)3.深圳大學 醫學院生物醫學工程系,廣東 深圳518060;
實時圖像處理、高速數據運算處理要求其系統具有對數據處理速度快、數據吞吐率高以及多任務處理功能。目前大多數方案都是采用HPI數據傳輸方式,將ARM和DSP進行組合完成一些圖像處理,DSP處理器只是完成圖像采集、壓縮、編碼等簡單的處理[1]工作,不能滿足實時的智能識別或大數據量運算的視頻處理要求。在應用領域方面也會因其處理速度問題受到一定的限制。
例如,胎兒性別屏蔽項目中,要對實時視頻進行性別部位的檢測和屏蔽,若采用單DSP則會出現漏幀或視頻不流暢;應用于高速運動物體跟蹤時,單DSP無法實現實時運動物體跟蹤,例如漢王科技的運動檢測和海康威視運動檢測,都不能實時檢測,即使檢測也會出現漏檢現象和視頻不流暢。當處理4CIF或者更大圖像時,單DSP的處理能力又會下降,雖然可以將圖像縮小進行處理,但是縮小圖像則會丟失一些重要的圖像信息,使得智能識別準確率下降。
針對上述情況,設計一種能夠實現進行快速信號處理和數據交換的實時圖像處理系統很有必要。
系統功能:利用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網絡實現。

圖1 系統結構
圖2所示是一種互聯的FIFO網絡結構和高速數據傳輸網絡結構。主處理器通過DMA數據訪問模式與FPGA的雙口FIFO連接,從而實現與FPGA通過FIFO連接的所有從DSP進行通信,所有FIFO都是雙向的,FIFO及其讀寫控制邏輯都在FPGA內部實現。
FPGA中的FIFO讀寫狀態控制、各從DSP之間通信的同步握手信號、S3C6410處理器數據請求等邏輯信號,都是由每個DSP的一部分GPIO口與EP2C70的I/O口連接實現。

圖2 一種高速數據傳輸網絡互聯結構
系統結構具有可重構特性,在硬件平臺不變情況下,只需通過改變FPGA程序代碼就可以完全改變系統結構,以適應不同的算法結構。如圖2中屏蔽DSP1~DSP4之間的互相通信,即可組成主從并行的流水線結構;若需要串行的流水線結構,只需將DSP1~DSP4的其中一個與S3C6410通信即可;若需要設計更復雜的串并混合性結構,也只需改變FPGA的代碼就能夠很容易地實現。
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基本工作時序。

圖3 DMA基本工作時序圖
當需要進行DMA操作時,外部DMA請求引腳XnXDREQ置為低電平。此時DMA控制器向CPU發出占用總線的請求,當總線請求成功后,XnXDACK引腳變為低電平,表示CPU已經將總線使用權交給DMA控制器,可以進行數據傳輸。當數據傳輸完成后,應答信號XnXDACK置為高電平,通知CPU完成一次DMA操作。
S3C6410提供了三種不同的DMA操作模式:單服務命令模式、單服務握手模式和全服務握手模式。在利用DMA進行數據傳輸前必須對其相關寄存器進行設置,包括源地址寄存器、目的地址寄存器和各自的控制寄存器以及配置DMA模式的控制寄存器等。
采用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所示。
根據DMA接口原理,設計S3C6410與FPGA之間的接口簡圖如圖5所示。
讀時鐘由ARM的時鐘輸出引腳CLKOUT0提供。CLKOUT0根據S3C6410內部寄存器的設置可以輸出不同的時鐘頻率。FIFO輸出數據經過以nGCS4為選通信號的緩沖器 (Buffer)后接到S3C6410的數據總線上。nGCS4是S3C6410存儲空間中BNAK4的片選信號,當S3C6410對該信號對應存儲空間進行讀寫操作時,BANK4為低電平,其余時間均為高電平。
FIFO的寫請求信號由S3C6410與FIFO的滿狀態共同控制。當S3C6410發出START信號并且FIFO未滿時,寫請求信號為高電平,FIFO在寫時鐘的控制下寫入數據;當START信號撤銷或者FIFO滿時,寫請求信號變為低電平,停止寫操作。

圖4 雙向FIFO設計圖

圖5 S3C6410與FPGA接口
FIFO的讀操作與S3C6410的DMA操作配合進行。系統采用單服務命令模式的DMA操作,每次傳輸一個字節的數據。當DREQ0信號變為低電平時,DMA操作開始,每次傳輸一個字節后產生一個DACK0應答信號,而且只要DREQ0為低電平DMA操作就繼續進行,直到DMA控制寄存器中的計數器為0,產生DMA中斷。根據上述時序特點,將FIFO的空信號作為DMA的請求信號DREQ0。當CCD輸出的數據寫入FIFO中時,空信號跳變為低電平啟動DMA操作,同時以DACK0信號作為FIFO的讀請求。每次DMA傳輸完成后應答信號使FIFO的讀指針移動一位,以實現數據的快速準確采集。
用可編程視頻輸入處理器SAA7113H進行視頻信號處理。SAA7113H內部集成了強大圖像色度、亮度處理功能以及多種輸出模式[3];有32個工作寄存器,在系統復位時,必須通過I2C總線對其進行初始化。本系統使用灰度圖像,沒有使用色度信號,所以數據線為8 bit。SAA7113H與FPGA的接口如圖6所示。
在本系統中,FPGA內部需要設計一邏輯時序完成圖像數據的采集,數據的傳輸采用異步FIFO完成。采用此方案可以解決CCD輸出數據頻率與從DSP和ARM不匹配的問題。
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。

圖6 SAA7113H與FPGA的接口
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)

另外,寫 FIFO的DSP要相應為滿狀態標志,讀FIFO的DSP則相應為半滿狀態標志。
為了設計一款通用性比較強的圖像處理平臺,各處理器間的數據傳輸必需達到通用性,這樣可以針對不同系統的應用,只須修改圖像處理算法代碼,而不須要修改各處理器之間的通信。具體設計分為如下兩部分:
(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狀態標志信息。
Pa_Ch(Parity_Check)[35]:奇偶校驗位。 設 SUM,若為奇數,則 Parity_Check=1;否則為 0。
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端口數據判其執行的先后順序。
影響系統性能的主要因素有:ARM處理器協調工作的響應速度、DSP處理數據的速度、數據在多處理器之間的傳輸速度。前兩個因素主要由處理的主頻和處理能力決定,因此不做測試。數據在處理器之間的傳輸速度則是本設計的主要部分之一,而數據傳輸帶寬和數據傳輸延遲是衡量數據傳輸速度的重要指標。

表1 傳輸不同大小數據時測得的平均延遲時間值
若系統中DSP讀寫FIFO的帶寬為B(單位時間內DSP間的數據傳輸量),則:

其中,f=133 MHz是 FPGA內部軟FIFO的讀寫時鐘;w=32 bit是軟FIFO數據總線寬度。本設計配置Nsetup=Nstrobe=1,Nhold=0,因此 B的理論值為 266 Mb/s。 但 DSP間數據傳輸的實際帶寬主要受握手時間τhandshake、寫FIFO到半滿時間 τfifo_hf、響應中斷啟動讀寫操作時間 τgpio_interr、接收數據時間 τdata_receive四個延遲時間影響。其中,τhandshake、τgpio_interr由系統時鐘決定,因此本文假設該值為固定的,而τfifo_hf是由于使用FIFO緩存數據引入的額外時間。FIFO的深度越長,τfifo_hf越大,則實際帶寬 Bf就越小;反之則越大。
為了保證DSP間正確地數據通信,則要求DSPx開始從FIFO讀取數據時,ARM還沒有寫滿FIFO,即 τfifo_hf>τfgpio_interr。表示 FIFO 深度,可得
表1是ARM處理器分別與DSP1~DSP4傳輸不同大小數據時測得的平均延遲時間,圖9是根據測試數據繪出的實際帶寬Bf曲線。可以看出,隨著傳輸的數據增大,Bf逐漸逼近B的266 MB/s的理論值。

圖9 根據表2繪出的實際帶寬曲線
本文基于 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.