文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)04-0025-04
數(shù)字信號(hào)處理器(DSP)廣泛應(yīng)用于圖像處理、通信與醫(yī)療等海量數(shù)據(jù)處理領(lǐng)域。在很多基于DSP的多路實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)[1]中,需要將大量的數(shù)據(jù)傳輸到DSP片內(nèi)存儲(chǔ)器進(jìn)行實(shí)時(shí)處理,因此如何實(shí)現(xiàn)多路海量數(shù)據(jù)傳輸,充分發(fā)揮DSP的數(shù)據(jù)處理能力,是實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)的關(guān)鍵技術(shù)之一。
傳統(tǒng)基于DSP的數(shù)據(jù)傳輸方法一般采用中斷或者查詢(xún)方式實(shí)現(xiàn),都是通過(guò)CPU控制程序來(lái)傳送數(shù)據(jù),降低了CPU的使用效率。TI公司C6x系列DSP具有增強(qiáng)型直接存儲(chǔ)器訪問(wèn)(EDMA)控制器[2],它在后臺(tái)控制數(shù)據(jù)讀寫(xiě),實(shí)現(xiàn)數(shù)據(jù)傳輸,不占用DSP的CPU資源,從而提高了DSP的數(shù)據(jù)處理能力。EDMA控制傳輸方法已應(yīng)用于許多基于DSP的處理系統(tǒng)[3-4]中,但是,大多系統(tǒng)沒(méi)有使用EDMA傳輸鏈方式,參考文獻(xiàn)[4]雖采用了EDMA傳輸鏈技術(shù),但它只是使用EDMA傳輸鏈實(shí)現(xiàn)其數(shù)據(jù)傳輸主通道EDMA參數(shù)的更新,是針對(duì)小量串?dāng)?shù)據(jù)傳輸設(shè)計(jì)的,不適用于多路大量數(shù)據(jù)傳輸。
本文提出一種EDMA多通道傳輸鏈乒乓結(jié)構(gòu)的數(shù)據(jù)傳輸方式,實(shí)現(xiàn)多路大量數(shù)據(jù)的高效同步傳輸,大大提高了數(shù)據(jù)傳輸效率。
1 EDMA3控制機(jī)制[5]
EDMA3是TI公司的第三代直接存儲(chǔ)器訪問(wèn)控制器,有64個(gè)通道,每個(gè)通道有一個(gè)特定的事件與之關(guān)聯(lián),每個(gè)事件相當(dāng)于一個(gè)同步信號(hào),由這些事件觸發(fā)相應(yīng)通道的數(shù)據(jù)傳輸。
1.1 EDMA3通道控制器
EDMA3通道控制器(EDMA3CC)可以捕獲多達(dá)64個(gè)事件,包括外部事件、直接寫(xiě)事件寄存器或EDMA通道鏈?zhǔn)录?。捕獲EDMA事件后,事件隊(duì)列邏輯根據(jù)對(duì)應(yīng)通道設(shè)置給該事件分配隊(duì)列,隊(duì)列中事件按先進(jìn)先出順序進(jìn)行處理。隊(duì)列中先處理的事件根據(jù)其通道參數(shù)集配置發(fā)送傳輸請(qǐng)求,EDMA3傳輸控制器(EDMA3TC)接收到傳輸請(qǐng)求后啟動(dòng)數(shù)據(jù)傳輸。
1.2 參數(shù)RAM (PaRAM參數(shù)集)
EDMA3控制器是基于RAM結(jié)構(gòu)的,在DSP片內(nèi)RAM 中采用統(tǒng)一地址空間存儲(chǔ)EDMA3通道參數(shù),共有256個(gè)參數(shù)RAM(PaRAM參數(shù)集),每個(gè)參數(shù)集長(zhǎng)度為8個(gè)32位數(shù)據(jù),具體參數(shù)包括數(shù)據(jù)源地址、目的地址、傳輸數(shù)據(jù)大小、數(shù)據(jù)索引以及通道選項(xiàng)(OPT)等。參數(shù)結(jié)構(gòu)如圖1所示。
1.3 EDMA的鏈接
當(dāng)通道選項(xiàng)OPT中參數(shù)鏈接控制位STATIC設(shè)為0時(shí),在一次傳輸申請(qǐng)后,EDMA控制器會(huì)自動(dòng)根據(jù)鏈接地址裝載下一次傳輸需要的參數(shù),這樣就可將不同的傳輸參數(shù)集鏈接起來(lái),形成一個(gè)參數(shù)鏈,為同一個(gè)通道服務(wù)。當(dāng)OPT中傳輸完成鏈接后使能位TCCHEN設(shè)為1,同時(shí)設(shè)置OPT中傳輸完成號(hào)字段TCC為需要鏈接的通道號(hào)N,在當(dāng)前通道事件觸發(fā)EDMA控制傳輸完成后,就會(huì)觸發(fā)N通道事件,啟動(dòng)該通道的EDMA控制數(shù)據(jù)傳輸,實(shí)現(xiàn)EDMA的多通道鏈傳輸。
2 基于EDMA傳輸鏈的多路數(shù)據(jù)傳輸方法
本方法實(shí)現(xiàn)的示意圖如圖2所示。在數(shù)據(jù)發(fā)送端,設(shè)計(jì)多個(gè)RAM 緩存對(duì)用于緩存多路數(shù)據(jù),并根據(jù)多路數(shù)據(jù)間的關(guān)聯(lián)生成一個(gè)同步信號(hào),鏈接到處理端DSP的EDMA通道1上,用于觸發(fā)該通道的數(shù)據(jù)傳輸。同時(shí),在數(shù)據(jù)接收端DSP內(nèi),對(duì)應(yīng)設(shè)計(jì)多個(gè)Buffer緩存對(duì)用于接收多路數(shù)據(jù),并配置多個(gè)EDMA通道,每個(gè)EDMA通道控制1路數(shù)據(jù)傳輸,將數(shù)據(jù)傳輸方式設(shè)置為多通道傳輸鏈乒乓傳輸方式,通道1鏈接到通道2,通道2鏈接到通道3,通道3再鏈接到其他通道。
首先,在數(shù)據(jù)發(fā)送端,采用乒乓方式同時(shí)緩存多路數(shù)據(jù),一個(gè)緩存用于數(shù)據(jù)接收緩存,另一個(gè)緩存用于數(shù)據(jù)發(fā)送。接收完數(shù)據(jù)后,產(chǎn)生的同步信號(hào)觸發(fā)處理端DSP的EDMA通道1控制數(shù)據(jù)傳輸。在數(shù)據(jù)處理端,同樣采用乒乓方式接收數(shù)據(jù),一個(gè)用于緩存數(shù)據(jù)接收,另一個(gè)緩存中的數(shù)據(jù)可用于處理。通道1數(shù)據(jù)傳輸完成后啟動(dòng)EDMA通道2數(shù)據(jù)傳輸,通道2數(shù)據(jù)傳輸完成后啟動(dòng)EDMA通道3數(shù)據(jù)傳輸,實(shí)現(xiàn)多路數(shù)據(jù)的同步傳輸。
相對(duì)于通常采用的多個(gè)EDMA通道單獨(dú)控制傳輸方式,本方法主要優(yōu)點(diǎn)是:(1)只需要一個(gè)同步事件,避免了多個(gè)EDMA同步事件傳輸競(jìng)爭(zhēng),使得數(shù)據(jù)傳輸有序而可靠。(2)一次同步傳輸只需一個(gè)傳輸完成中斷服務(wù)程序,節(jié)省了多個(gè)中斷服務(wù)程序所需時(shí)間。(3)數(shù)據(jù)處理端接收到的多路數(shù)據(jù)已經(jīng)按EDMA事件同步,節(jié)省了數(shù)據(jù)同步處理時(shí)間,提高了系統(tǒng)的實(shí)時(shí)性。(4)本方法在數(shù)據(jù)發(fā)送與處理端都采用乒乓方式傳輸,確保數(shù)據(jù)傳輸?shù)母咝逝c可靠性。
3 多路圖像處理系統(tǒng)的數(shù)據(jù)傳輸實(shí)現(xiàn)
3.1 系統(tǒng)工作原理
本圖像處理系統(tǒng)主要由DSP、FPGA和圖像源構(gòu)成,其中DSP采用TI公司的TMS320C6455芯片,F(xiàn)PGA使用XC4VLX60芯片。整個(gè)系統(tǒng)的工作流程為:FPGA同時(shí)采集3路數(shù)字圖像,然后進(jìn)行預(yù)處理,并產(chǎn)生同步信號(hào),觸發(fā)DSP的EDMA控制3路圖像數(shù)據(jù)傳輸?shù)紻SP,在DSP中進(jìn)行3路圖像數(shù)據(jù)的實(shí)時(shí)處理。為了提高系統(tǒng)的實(shí)時(shí)性,一次同步只連續(xù)傳輸3路圖像的16行數(shù)據(jù),傳輸完的數(shù)據(jù)即可進(jìn)行相關(guān)處理。該圖像處理系統(tǒng)工作原理如圖3所示。
3.2 系統(tǒng)數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)
在FPGA中設(shè)計(jì)3對(duì)PING/PONG緩存,分別用于存儲(chǔ)3路圖像數(shù)據(jù),每個(gè)緩存的大小設(shè)為能存儲(chǔ)16行的圖像數(shù)據(jù)量;同時(shí),設(shè)計(jì)了一個(gè)同步控制模塊,該模塊根據(jù)3路圖像的幀場(chǎng)同步與行計(jì)數(shù)產(chǎn)生一個(gè)同步信號(hào),并將該信號(hào)連接到DSP的GPIO5上,用來(lái)觸發(fā)DSP的EDMA控制數(shù)據(jù)傳輸。同樣,在DSP中設(shè)計(jì)3對(duì)PING/PONG緩存分別用于接收3路圖像數(shù)據(jù),同時(shí)設(shè)計(jì)3個(gè)通道分別控制3路數(shù)據(jù)傳輸,并將EDMA設(shè)為多通道傳輸鏈的工作模式。
FPGA以乒乓緩存方式分別接收完3路圖像16行數(shù)據(jù)后,產(chǎn)生一個(gè)同步信號(hào),該信號(hào)觸發(fā)DSP的EDMA通道1進(jìn)行圖像1數(shù)據(jù)傳輸;傳輸完該圖像16行數(shù)據(jù)后,EDMA自動(dòng)鏈接到通道2傳輸圖像2數(shù)據(jù);傳輸完圖像2數(shù)據(jù)后,EDMA又會(huì)自動(dòng)鏈接到通道3傳輸圖像3數(shù)據(jù),一次同步傳輸完成3路16行圖像數(shù)據(jù)傳輸。
3.3 EDMA多通道傳輸鏈的設(shè)計(jì)
FPGA輸出的同步信號(hào)鏈接到DSP的GPIO5、GPIO5事件對(duì)應(yīng)的EMDA通道為53,用于控制圖像1數(shù)據(jù)傳輸;控制圖像2與圖像3的傳輸通道分別設(shè)為6與7通道。其中,53通道采用64與65參數(shù)集對(duì)(對(duì)應(yīng)地址為0x02A04800和0x02A04820)配置EDMA實(shí)現(xiàn)數(shù)據(jù)乒乓傳輸。同樣,6通道采用72與73參數(shù)集對(duì),7通道采用80與81參數(shù)集對(duì)。
本文EDMA參數(shù)集配置代碼采用TI公司提供的C6455片級(jí)支持庫(kù)CSL函數(shù)[6]進(jìn)行設(shè)置。以53通道64參數(shù)集為例進(jìn)行說(shuō)明,其他通道參數(shù)設(shè)置類(lèi)似。
其中53通道64乒參數(shù)集的關(guān)聯(lián)配置代碼如下:
chAttr.chaNum = 53;
hEdma3ChannelY = CSL_edma3ChannelOpen
(&InputChObjY, CSL_EDMA3, &chAttr, &status);
hParamY_Ping = CSL_edma3GetParamHandle
(hEdma3ChannelY, 64, &status);
將OPT的STATIC設(shè)置為0,實(shí)現(xiàn)EDMA通道的乒乓傳輸,并將53通道參數(shù)集OPT的TCCHEN設(shè)置為1,TCC設(shè)置為6,將53通道鏈接到6通道。同樣,將53通道的TCCHEN設(shè)置為1,TCC設(shè)置為7,將6通道鏈接到7通道;將7通道TCCHEN設(shè)置為0,TCC設(shè)置為0,關(guān)閉通道鏈接功能。具體EDMA多通道傳輸鏈?zhǔn)疽鈭D如圖4所示。
其中53通道64參數(shù)集OPT字段的配置代碼如下:
myParamSetup.option =CSL_EDMA3_OPT_MAKE
(0,CSL_EDMA3_TCCH_ EN, 0,0,6,\
CSL_EDMA3_TCC_NORMAL, 3,\
CSL_EDMA3_STATIC_DIS,\
CSL_EDMA3_SYNC_A,0,0);
其他參數(shù)設(shè)計(jì)如下:SRC(通道源地址)設(shè)置為片外FPGA的3路緩存映射地址,乒乓緩存分別映射到DSP內(nèi)存的不同空間;DST(通道目的地址)設(shè)置為Buffer-Ping/BufferPong地址,實(shí)現(xiàn)乒乓接收數(shù)據(jù)。本設(shè)計(jì)采用一維傳輸,只需設(shè)置ACNT、BCNT與CCNT值,其他BCNT、SRCBIDX等傳輸參數(shù)采用默認(rèn)值0即可,一次傳輸16行圖像數(shù)據(jù),需將3個(gè)通道的ACNT設(shè)置為16x720。LINK設(shè)置參數(shù)的連接地址,本軟件設(shè)計(jì)通過(guò)參數(shù)集句柄關(guān)聯(lián)方式設(shè)置LINK鏈接地址,53通道參數(shù)集對(duì)的鏈接句柄分別為hParamY_Pong與hParamY_Ping,對(duì)應(yīng)的地址為0x04820和0x04800,其他通道設(shè)置類(lèi)似。
其中53通道64參數(shù)集其他主要配置代碼如下:
myParamSetup.srcAddr = (uint32_t)RAM10;
myParamSetup.dstAddr = (uint32_t)BufferPing1;
myParamSetup.linkBcntrld =
CSL_EDMA3_LINKBCNTRLD_MAKE (hParamY_Pong, 1);
myParamSetup.cCnt =1;
myParamSetup.aCntbCnt =
CSL_EDMA3_CNT_MAKE(720*16,1);
4 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)測(cè)試平臺(tái)為基于TMS320C6455的實(shí)時(shí)圖像處理系統(tǒng),系統(tǒng)時(shí)鐘為1 000 MHz,DSP與FPGA之間的傳輸速率為100 MHz,傳輸圖像大小為720×576,一次同步傳輸16×720個(gè)圖像1數(shù)據(jù)、16×720個(gè)圖像2數(shù)據(jù)以及16×720個(gè)圖像3數(shù)據(jù)。
實(shí)驗(yàn)結(jié)果如表1所示。完成一次16行3路圖像數(shù)據(jù)傳輸,采用多個(gè)通道傳輸需要3個(gè)EDMA通道事件,并需要3個(gè)傳輸完成中斷服務(wù)程序,接收后需要做同步處理。而采用多通道鏈傳輸只需要1個(gè)EDMA通道事件以及1個(gè)傳輸完成中斷服務(wù)程序,接收后不需要做同步處理。
由表1實(shí)驗(yàn)數(shù)據(jù)可知,采用EDMA多通道鏈傳輸方法,數(shù)據(jù)傳輸總體效率提高了18%。由于數(shù)據(jù)傳輸由EDMA在后臺(tái)控制完成,不占用 CPU資源, CPU資源節(jié)省率達(dá)到66%。
文中主要論述了基于DSP處理系統(tǒng)的多路數(shù)據(jù)傳輸方法與實(shí)現(xiàn)過(guò)程,創(chuàng)新地提出了一種EDMA多通道傳輸鏈乒乓傳輸方法,實(shí)現(xiàn)多路數(shù)據(jù)同步傳輸。實(shí)驗(yàn)結(jié)果表明,采用該方法實(shí)現(xiàn)多路數(shù)據(jù)傳輸,能大大提高數(shù)據(jù)傳輸效率,節(jié)省CPU資源,減少系統(tǒng)時(shí)延,并且避免了多個(gè)EDMA事件與中斷的競(jìng)爭(zhēng),提高數(shù)據(jù)傳輸?shù)目煽啃耘c系統(tǒng)穩(wěn)定性。
本文方法已成功應(yīng)用到某型號(hào)無(wú)人機(jī)項(xiàng)目中,數(shù)據(jù)傳輸穩(wěn)定可靠,可以廣泛應(yīng)用在基于DSP的多路數(shù)據(jù)處理系統(tǒng)中。
參考文獻(xiàn)
[1] 李波,孟慶磊.基于通用DSP的多路視頻編碼器的優(yōu)化實(shí)現(xiàn)[J].電子學(xué)報(bào),2006,34(11):2104-2017.
[2] Texas Instruments Inc..TMS320C6000 DSP enhanced direct memory access(EDMA) controller reference guide[Z].2005.
[3] 陸軍,高樂(lè),劉濤.基于DSP與FPGA的全景圖像處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2012,38(6):24-26.
[4] 楊俊波,趙繼敏.基于TI6000系列DSP的多路信號(hào)采集系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2008,21(1):56-59.
[5] Texas Instruments Inc..TMS320C6455 enhanced DMA(ED-MA3) controller user′s guide[Z].2007.
[6] Texas Instruments Inc..TMS320C6455 chip support library API reference guide[Z].2006.