余福榮 ,羅海波 ,胡 宇 ,張志芳
(1.中國空間技術研究院503所,北京10086;2.中國科學院沈陽自動化研究所,遼寧 沈陽110016)
數字信號處理器(DSP)廣泛應用于圖像處理、通信與醫療等海量數據處理領域。在很多基于DSP的多路實時數據處理系統[1]中,需要將大量的數據傳輸到DSP片內存儲器進行實時處理,因此如何實現多路海量數據傳輸,充分發揮DSP的數據處理能力,是實時數據處理系統的關鍵技術之一。
傳統基于DSP的數據傳輸方法一般采用中斷或者查詢方式實現,都是通過CPU控制程序來傳送數據,降低了CPU的使用效率。TI公司C6x系列DSP具有增強型直接存儲器訪問(EDMA)控制器[2],它在后臺控制數據讀寫,實現數據傳輸,不占用 DSP的CPU資源,從而提高了DSP的數據處理能力。EDMA控制傳輸方法已應用于許多基于DSP的處理系統[3-4]中,但是,大多系統沒有使用EDMA傳輸鏈方式,參考文獻[4]雖采用了EDMA傳輸鏈技術,但它只是使用EDMA傳輸鏈實現其數據傳輸主通道EDMA參數的更新,是針對小量串數據傳輸設計的,不適用于多路大量數據傳輸。
本文提出一種EDMA多通道傳輸鏈乒乓結構的數據傳輸方式,實現多路大量數據的高效同步傳輸,大大提高了數據傳輸效率。
EDMA3是TI公司的第三代直接存儲器訪問控制器,有64個通道,每個通道有一個特定的事件與之關聯,每個事件相當于一個同步信號,由這些事件觸發相應通道的數據傳輸。
EDMA3通道控制器(EDMA3CC)可以捕獲多達64個事件,包括外部事件、直接寫事件寄存器或EDMA通道鏈事件。捕獲EDMA事件后,事件隊列邏輯根據對應通道設置給該事件分配隊列,隊列中事件按先進先出順序進行處理。隊列中先處理的事件根據其通道參數集配置發送傳輸請求,EDMA3傳輸控制器(EDMA3TC)接收到傳輸請求后啟動數據傳輸。
EDMA3控制器是基于RAM結構的,在DSP片內RAM中采用統一地址空間存儲EDMA3通道參數,共有256個參數RAM(PaRAM參數集),每個參數集長度為8個32位數據,具體參數包括數據源地址、目的地址、傳輸數據大小、數據索引以及通道選項(OPT)等。參數結構如圖1所示。

圖1 PaRAM參數結構
當通道選項OPT中參數鏈接控制位STATIC設為0時,在一次傳輸申請后,EDMA控制器會自動根據鏈接地址裝載下一次傳輸需要的參數,這樣就可將不同的傳輸參數集鏈接起來,形成一個參數鏈,為同一個通道服務。當OPT中傳輸完成鏈接后使能位TCCHEN設為1,同時設置OPT中傳輸完成號字段TCC為需要鏈接的通道號N,在當前通道事件觸發EDMA控制傳輸完成后,就會觸發N通道事件,啟動該通道的EDMA控制數據傳輸,實現EDMA的多通道鏈傳輸。

圖2 基于EDMA傳輸鏈的多路數據傳輸方法
本方法實現的示意圖如圖2所示。在數據發送端,設計多個RAM緩存對用于緩存多路數據,并根據多路數據間的關聯生成一個同步信號,鏈接到處理端DSP的EDMA通道1上,用于觸發該通道的數據傳輸。同時,在數據接收端DSP內,對應設計多個Buffer緩存對用于接收多路數據,并配置多個EDMA通道,每個EDMA通道控制1路數據傳輸,將數據傳輸方式設置為多通道傳輸鏈乒乓傳輸方式,通道1鏈接到通道 2,通道2鏈接到通道3,通道3再鏈接到其他通道。
首先,在數據發送端,采用乒乓方式同時緩存多路數據,一個緩存用于數據接收緩存,另一個緩存用于數據發送。接收完數據后,產生的同步信號觸發處理端DSP的EDMA通道1控制數據傳輸。在數據處理端,同樣采用乒乓方式接收數據,一個用于緩存數據接收,另一個緩存中的數據可用于處理。通道1數據傳輸完成后啟動EDMA通道2數據傳輸,通道2數據傳輸完成后啟動EDMA通道3數據傳輸,實現多路數據的同步傳輸。
相對于通常采用的多個EDMA通道單獨控制傳輸方式,本方法主要優點是:(1)只需要一個同步事件,避免了多個EDMA同步事件傳輸競爭,使得數據傳輸有序而可靠。(2)一次同步傳輸只需一個傳輸完成中斷服務程序,節省了多個中斷服務程序所需時間。(3)數據處理端接收到的多路數據已經按EDMA事件同步,節省了數據同步處理時間,提高了系統的實時性。(4)本方法在數據發送與處理端都采用乒乓方式傳輸,確保數據傳輸的高效率與可靠性。
本圖像處理系統主要由DSP、FPGA和圖像源構成,其中DSP采用 TI公司的 TMS320C6455芯片,FPGA使用XC4VLX60芯片。整個系統的工作流程為:FPGA同時采集3路數字圖像,然后進行預處理,并產生同步信號,觸發DSP的EDMA控制3路圖像數據傳輸到DSP,在DSP中進行3路圖像數據的實時處理。為了提高系統的實時性,一次同步只連續傳輸3路圖像的16行數據,傳輸完的數據即可進行相關處理。該圖像處理系統工作原理如圖3所示。

圖3 多路圖像處理系統工作原理
在FPGA中設計3對PING/PONG緩存,分別用于存儲3路圖像數據,每個緩存的大小設為能存儲16行的圖像數據量;同時,設計了一個同步控制模塊,該模塊根據3路圖像的幀場同步與行計數產生一個同步信號,并將該信號連接到DSP的GPIO5上,用來觸發DSP的EDMA控制數據傳輸。同樣,在DSP中設計3對PING/PONG緩存分別用于接收3路圖像數據,同時設計3個通道分別控制3路數據傳輸,并將EDMA設為多通道傳輸鏈的工作模式。
根據自身實際情況和《國民營養計劃(2017—2030年)》的內容和要求,定期開展營養和食品安全監測與評估。
FPGA以乒乓緩存方式分別接收完3路圖像16行數據后,產生一個同步信號,該信號觸發DSP的EDMA通道1進行圖像1數據傳輸;傳輸完該圖像16行數據后,EDMA自動鏈接到通道2傳輸圖像2數據;傳輸完圖像2數據后,EDMA又會自動鏈接到通道3傳輸圖像3數據,一次同步傳輸完成3路16行圖像數據傳輸。
FPGA輸出的同步信號鏈接到 DSP的GPIO5、GPIO5事件對應的EMDA通道為53,用于控制圖像1數據傳輸;控制圖像2與圖像3的傳輸通道分別設為6與7通道。其中,53通道采用64與65參數集對(對應地址為0x02A04800和0x02A04820)配置EDMA實現數據乒乓傳輸。同樣,6通道采用72與73參數集對,7通道采用80與81參數集對。
本文EDMA參數集配置代碼采用TI公司提供的C6455片級支持庫CSL函數[6]進行設置。以53通道 64參數集為例進行說明,其他通道參數設置類似。
其中53通道64乒參數集的關聯配置代碼如下:

將OPT的STATIC設置為0,實現EDMA通道的乒乓傳輸,并將53通道參數集OPT的TCCHEN設置為1,TCC設置為6,將53通道鏈接到6通道。同樣,將53通道的TCCHEN設置為1,TCC設置為7,將6通道鏈接到7通道;將7通道TCCHEN設置為0,TCC設置為0,關閉通道鏈接功能。具體EDMA多通道傳輸鏈示意圖如圖4所示。
其中53通道64參數集OPT字段的配置代碼如下:

其他參數設計如下:SRC(通道源地址)設置為片外FPGA的3路緩存映射地址,乒乓緩存分別映射到DSP內存的不同空間;DST(通道目的地址)設置為 Buffer-Ping/BufferPong地址,實現乒乓接收數據。本設計采用一維傳輸,只需設置 ACNT、BCNT與 CCNT值,其他 BCNT、SRCBIDX等傳輸參數采用默認值0即可,一次傳輸16行圖像數據,需將3個通道的ACNT設置為16x720。LINK設置參數的連接地址,本軟件設計通過參數集句柄關聯方式設置LINK鏈接地址,53通道參數集對的鏈接句柄分別為hParamY_Pong與hParamY_Ping,對應的地址為0x04820和0x04800,其他通道設置類似。
其中53通道64參數集其他主要配置代碼如下:

圖4 EDMA多通道傳輸鏈

表1 一次傳輸時間與效率統計表
實驗測試平臺為基于TMS320C6455的實時圖像處理系統,系統時鐘為1 000 MHz,DSP與 FPGA之間的傳輸速率為 100 MHz,傳輸圖像大小為 720×576,一次同步傳輸 16×720個圖像 1數據、16×720個圖像 2數據以及16×720個圖像 3數據。
實驗結果如表1所示。完成一次16行3路圖像數據傳輸,采用多個通道傳輸需要3個EDMA通道事件,并需要3個傳輸完成中斷服務程序,接收后需要做同步處理。而采用多通道鏈傳輸只需要1個EDMA通道事件以及1個傳輸完成中斷服務程序,接收后不需要做同步處理。
由表1實驗數據可知,采用EDMA多通道鏈傳輸方法,數據傳輸總體效率提高了18%。由于數據傳輸由EDMA在后臺控制完成,不占用 CPU資源,CPU資源節省率達到66%。
文中主要論述了基于DSP處理系統的多路數據傳輸方法與實現過程,創新地提出了一種EDMA多通道傳輸鏈乒乓傳輸方法,實現多路數據同步傳輸。實驗結果表明,采用該方法實現多路數據傳輸,能大大提高數據傳輸效率,節省CPU資源,減少系統時延,并且避免了多個EDMA事件與中斷的競爭,提高數據傳輸的可靠性與系統穩定性。
本文方法已成功應用到某型號無人機項目中,數據傳輸穩定可靠,可以廣泛應用在基于DSP的多路數據處理系統中。
[1]李波,孟慶磊.基于通用DSP的多路視頻編碼器的優化實現[J].電子學報,2006,34(11):2104-2017.
[2]Texas Instruments Inc..TMS320C6000 DSP enhanced direct memory access(EDMA)controller reference guide[Z].2005.
[3]陸軍,高樂,劉濤.基于 DSP與 FPGA的全景圖像處理系統設計與實現[J].電子技術應用,2012,38(6):24-26.
[4]楊俊波,趙繼敏.基于 TI6000系列DSP的多路信號采集系統[J].工業控制計算機,2008,21(1):56-59.
[5]Texas Instruments Inc..TMS320C6455 enhanced DMA(EDMA3)controller user′s guide[Z].2007.
[6]Texas Instruments Inc..TMS320C6455 chip support library API reference guide[Z].2006.