《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于ARM+FPGA+多DSP的嵌入式實(shí)時(shí)圖像處理系統(tǒng)
基于ARM+FPGA+多DSP的嵌入式實(shí)時(shí)圖像處理系統(tǒng)
來源:電子技術(shù)應(yīng)用2011年第8期
任曉波1, 趙文龍2, 唐 盛3, 陳思平1,3
1. 南昌航空大學(xué) 測(cè)試與光電技術(shù)學(xué)院, 江西 南昌 330063; 2. 南昌航空大學(xué) 信息工程學(xué)院, 江西 南昌 330063) 3. 深圳大學(xué) 醫(yī)學(xué)院生物醫(yī)學(xué)工程系, 廣東 深圳518060
摘要: 介紹了一款通用的嵌入式圖像處理系統(tǒng)的設(shè)計(jì)方法。系統(tǒng)采用FPGA設(shè)計(jì)FIFO實(shí)現(xiàn)ARM與多DSP的高速數(shù)據(jù)傳輸方法。實(shí)驗(yàn)結(jié)果表明,所設(shè)計(jì)的多DSP協(xié)同工作的實(shí)時(shí)嵌入式圖像處理系統(tǒng),其工作性能穩(wěn)定、數(shù)據(jù)處理能力強(qiáng),適用于高端的雷達(dá)信號(hào)處理、電子對(duì)抗、超聲圖像處理等場(chǎng)合。
關(guān)鍵詞: FPGA ARM11 TMS320C6416T FIFO 多DSP
中圖分類號(hào):TP751.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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í)時(shí)圖像處理、高速數(shù)據(jù)運(yùn)算處理要求其系統(tǒng)具有對(duì)數(shù)據(jù)處理速度快、數(shù)據(jù)吞吐率高以及多任務(wù)處理功能。目前大多數(shù)方案都是采用HPI數(shù)據(jù)傳輸方式,將ARM和DSP進(jìn)行組合完成一些圖像處理,DSP處理器只是完成圖像采集、壓縮、編碼等簡(jiǎn)單的處理[1]工作,不能滿足實(shí)時(shí)的智能識(shí)別或大數(shù)據(jù)量運(yùn)算的視頻處理要求。在應(yīng)用領(lǐng)域方面也會(huì)因其處理速度問題受到一定的限制。
    例如,胎兒性別屏蔽項(xiàng)目中,要對(duì)實(shí)時(shí)視頻進(jìn)行性別部位的檢測(cè)和屏蔽,若采用單DSP則會(huì)出現(xiàn)漏幀或視頻不流暢;應(yīng)用于高速運(yùn)動(dòng)物體跟蹤時(shí),單DSP無法實(shí)現(xiàn)實(shí)時(shí)運(yùn)動(dòng)物體跟蹤,例如漢王科技的運(yùn)動(dòng)檢測(cè)和??低曔\(yùn)動(dòng)檢測(cè),都不能實(shí)時(shí)檢測(cè),即使檢測(cè)也會(huì)出現(xiàn)漏檢現(xiàn)象和視頻不流暢。當(dāng)處理4CIF或者更大圖像時(shí),單DSP的處理能力又會(huì)下降,雖然可以將圖像縮小進(jìn)行處理,但是縮小圖像則會(huì)丟失一些重要的圖像信息,使得智能識(shí)別準(zhǔn)確率下降。
    針對(duì)上述情況,設(shè)計(jì)一種能夠?qū)崿F(xiàn)進(jìn)行快速信號(hào)處理和數(shù)據(jù)交換的實(shí)時(shí)圖像處理系統(tǒng)很有必要。
1 系統(tǒng)結(jié)構(gòu)
1.1 結(jié)構(gòu)

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

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

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

2 S3C6410的DMA與FPGA的軟FIFO
   接口實(shí)現(xiàn)
2.1 S3C6410簡(jiǎn)介
    S3C6410是三星公司的產(chǎn)品采用ARM1176JZF-S核,包含16 KB的指令數(shù)據(jù)Cache和16 KB的指令數(shù)TCM;ARM Core電壓為1.1 V時(shí),可以在553 MHz下運(yùn)行。在1.2 V時(shí),可以在667 MHz下運(yùn)行。通過AXI、AHB和APB組成的64/32 bit內(nèi)部總線與外部模塊相連。SROM Controller:6個(gè)片選,支持SRAM、ROM和NOR Flash以及支持8/16 bit,每個(gè)片選支持128 MB。JPEG Codec:支持JPEG編解碼功能,最大尺寸為4 096×4 096。2D GRAPHICS:2D加速,支持畫點(diǎn)/線,bitblt功能和Color Expansion。3D GRAPHICS:3D加速。
    S3C6410可支持4個(gè)DMA控制器,用于系統(tǒng)總線內(nèi)部或與外圍總線之間的數(shù)據(jù)交換,每個(gè)控制器包含8個(gè)通道,支持8/16/32 bit傳輸?,F(xiàn)以外部DMA請(qǐng)求為例簡(jiǎn)要介紹DMA的工作過程。圖3所示為DMA基本工作時(shí)序。

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

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

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

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

    DSP(TMS320DM6416T)之間的通信都是通過外部存儲(chǔ)器接口(EMIFA)訪問片外存儲(chǔ)器進(jìn)行的。EMIFA由64 bit數(shù)據(jù)線D[63:0]、20 bit地址線A [22:03]、 8 bit字節(jié)使能線BE[7:0]、4 bit地址區(qū)域片選線/CE3~/CE0和各類存儲(chǔ)器的讀/寫控制信號(hào)組成。TMS320DM6416T 的每個(gè)
/CEx空間都有256 MB尋址空間,并且可配置為與SRAM、SDRAM、ZBTSRAM、Flash、FIFO等各類存儲(chǔ)器接口。EMIFA讀/寫各類存儲(chǔ)器的時(shí)鐘可由軟件配置為EMIF的AECLKIN、CPU/4或CPU/6。本設(shè)計(jì)配置為EMIF的AECLKIN,且為133 MHz。
4.2 EMIF與軟FIFO接口實(shí)現(xiàn)
    DSP之間通過EMIF口與FPGA實(shí)現(xiàn)的異步FIFO進(jìn)行通信。EMIF異步接口的每個(gè)讀/寫周期分為三個(gè)階段:建立時(shí)間(SETUP)、觸發(fā)時(shí)間(STROBE)、保持時(shí)間(HOLD),且每個(gè)階段時(shí)間可編程設(shè)置,以適應(yīng)不同的讀寫速度。DSP讀寫異步FIFO的時(shí)序圖分別如圖7、圖8所示[6]。DSP讀寫FIFO控制信號(hào)由FPGA產(chǎn)生,其邏輯關(guān)系如下:
    寫FIFO信號(hào):writ_clk= AECLKOUT
               writ_req=! (/CE+/AWE)
    讀FIFO信號(hào):read_clk = AECLKOUT
               read_req = ! (/CE+/ARE)


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

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

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