文獻(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ù)傳輸方法一般采用中斷或者查詢方式實(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è)置類似,。
其中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è)置類似。
其中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.