EDMA在實(shí)時(shí)圖像處理系統中的應用

發(fā)布時(shí)間:2010-7-24 21:08    發(fā)布者:lavida
關(guān)鍵詞: eDMA , 圖像處理
增強型直接內存存取(EDMA)是數字信號處理器(DSP)中用于快速數據交換的重要技術(shù),具有獨立于CPU的后臺批量數據傳輸的能力,能夠滿(mǎn)足實(shí)時(shí)圖像處理中高速數據傳輸的要求。以TI公司的TMS320DM642型DSP為例,介紹EDMA控制器的特點(diǎn)。結合實(shí)例給出EDMA在圖像數據實(shí)時(shí)傳輸中的具體控制和實(shí)現方法。實(shí)驗結果表明,通過(guò)靈活控制EDMA不僅能夠提高圖像數據的傳輸效率,而且能夠充分發(fā)揮:DSP的高速性能。

1 引言

數字圖像處理技術(shù)在科學(xué)研究、工業(yè)生產(chǎn)和管理部門(mén)中得到越來(lái)越多的應用。在目標跟蹤、機器人導航、自動(dòng)駕駛、交通監視等領(lǐng)域中的應用也極大地促進(jìn)了實(shí)時(shí)圖像處理技術(shù)的發(fā)展。實(shí)時(shí)應用要求實(shí)時(shí)圖像處理系統必須具有強大的運算功能。DM642(TMS320DM642)型處理器是TI最新推出的面向多媒體處理領(lǐng)域的數字信號處理器(DSP).給多媒體設備的實(shí)現提供了另一種有效的手段。DM642建立在C64x DSP核基礎上.采用德州儀器公司開(kāi)發(fā)的第二代高性能的先進(jìn)的超長(cháng)指令字結構VeloeiTl.2TM,在600MHz的時(shí)鐘頻率下.DM642每秒可以進(jìn)行24億次16位的乘累加或48億次的8位的乘累加。這樣強大的運算能力使得DM642可以進(jìn)行實(shí)時(shí)多視頻圖像處理。它的增強型直接內存存取(EDMA)對DSP圖像處理系統是非常重要的,它可以在沒(méi)有CPU參與的情況下完成映射存儲空間中數據搬移。靈活使用EDMA可以大大提高數據傳輸效率。以:DM642為例,結合Sobel算法給出EDMA的一種具體控制和實(shí)現方法。   

2 DM642的EDMA控制器

DM042的EMDA能提供超過(guò)2Gb/s的外部帶寬.支持64路獨立觸發(fā)的事件傳輸,總共有85個(gè)參數對“Linking”或“Chaining”進(jìn)行配置。LINKing是在1個(gè)事件被觸發(fā)時(shí)允許1個(gè)序列進(jìn)行傳輸。Chaining是當1個(gè)通道的數據傳輸完畢時(shí)觸發(fā)另1個(gè)通道的數據傳輸。Linking和Chaining使得僅僅被CPU初始配置之后EDMA能夠連續的自動(dòng)運行。EDMA的特點(diǎn)決定了其適合圖像處理的功能。由于圖像處理的原始數據量很大.同時(shí)圖像處理中也會(huì )產(chǎn)生同等量的中間數據.對于片內存儲資源有限的高速DSP來(lái)說(shuō),一般需要借用外部存儲空間。為了提高系統的實(shí)時(shí)處理能力.可以將數據在不同存儲空間轉移的任務(wù)交給EDMA來(lái)完成,而CPU只用于數據的計算。同時(shí),EDMA對數據重排功能可以?xún)?yōu)化圖像數據在內存中的存儲,這不僅可以提高內部存儲空間的利用效率.而且可以提高數據的傳輸速率。雖然對圖像數據的傳輸也可由軟件實(shí)現,但將消耗大量的CPU時(shí)鐘周期。使DSP的高速性能難以發(fā)揮。而由EDMA來(lái)完成同樣的工作幾乎不占用CPU的時(shí)鐘周期。

在C64xDSP中.EDMA控制器負責片內L2存儲器與其他設備之間的數據傳輸。EDMA控制器和DMA在結構上有很大的不同.其增強之處包括:

提供了64個(gè)通道;
通道間的優(yōu)先級可以設置;
支持不同結構數據傳輸的鏈接。
EDMA控制器由以下幾部分組成;
事件和中斷處理寄存器;
事件編碼器;
參數RAM;
硬件地址產(chǎn)生。

其中,事件寄存器控制對EDMA事件進(jìn)行捕獲。1個(gè)事件相當于1個(gè)同步信號,由它觸發(fā)1個(gè)EDMA通道開(kāi)始數據傳輸。如果有多個(gè)事件同時(shí)發(fā)生.則由事件編碼器對它進(jìn)行分辨。EDMA的參數RAM中存放了有關(guān)的傳輸參數,這些參數會(huì )被送入地址發(fā)生器硬件.進(jìn)而產(chǎn)生讀寫(xiě)操作所需要的地址。

EDMA支持8bit、16bit和32bit數據的存儲。在EDMA中定義了下列概念:

(1)數據單元(element)的傳輸。單個(gè)數據單元從源地址向目的地址傳輸.如果需要,每1個(gè)數據單元都可以由同步事件觸發(fā)傳輸;
(2)幀(frame)。l組數據單元組成1幀,l幀中的數據單元可以是相鄰連續存放的,也可以是間隔存放的.幀傳輸可以選擇是否受同步事件控制,“幀”一般在1維傳輸中提及;
(3)陣列(array)。1組連續的數據單元組成1個(gè)陣列.在1個(gè)陣列中的數據單元不允許間隔存放。1個(gè)陣列的傳輸可以選擇是否受同步事件控制!瓣嚵小币话阍2維傳輸中提及;
(4)塊(block)。多個(gè)幀或者多個(gè)陣列的數據組成1個(gè)數據塊;
(5)1維(1一D)傳輸。多個(gè)數據幀組成1個(gè)1維的數據傳輸。Block中幀的個(gè)數可以是l~65536。
(6)2維(2一D)傳輸。多個(gè)數據陣列組成1個(gè)2維的數據傳輸。第1維是陣列中的數據單元,第2維是陣列的個(gè)數。   

3 EDMA的控制機制

3.1 事件與事件控制寄存器

EDMA有64個(gè)通道.每1個(gè)通道都有1個(gè)事件與之關(guān)聯(lián).由這些事件觸發(fā)相應通道的傳輸。

3.2 傳輸參數與參數RAM

EDMA控制器與DMA控制器在結構上有所區別。C64x的.EDMA控制器是基于RAM結構。參數.RAM(Parameter RAM。PaRAM)的容量是2KB,總共可以存放85組EDMA傳輸控制參數。多組參數還可以彼此連接起來(lái),從而實(shí)現某些負責數據流的傳輸.例如循環(huán)緩存和數據排序等。參數RAM中保存的內容包括:

64個(gè)EDMA通道對應的入口傳輸參數.每組參數包括6個(gè)字;
用于重加載,鏈接的傳輸參數組。每組參數包括24字節;
8字節空余的RAM可以作為“草稿區”(scratchpad area)。

一旦捕獲到某個(gè)事件.控制器將從PaRAM頂部的64組入口參數中讀取數據對應的控制參數送往地址發(fā)生器硬件。

表l給出1組EDMA傳輸參數的內部結構,總共6個(gè)字.192bit?梢酝ㄟ^(guò)32bit的外設總線(xiàn)對EDMA的參數.RAM進(jìn)行訪(fǎng)問(wèn)。   


   
可選參數(Option Parameter),32bit,用戶(hù)可以根據情況選擇設置該參數。

SRC/DST地址.32bit,用于存放EDMA訪(fǎng)問(wèn)起始的源地址和目的地址,可以通過(guò)可選參數中的SUM/DUM位設定對SRC/DST地址的修改方式。

數據單元計數(Element Count),16bit無(wú)符號數.存放l幀(1一D傳輸)或1個(gè)陣列(2一D傳輸)中的數據單元數。

幀/陣列計數(Frame/Array Count),16bit無(wú)符號數.存放的是1-D數據傳輸中的幀計數,或是2一D數據傳輸中的陣列計數。

數據單元,幀,陣列索引(Element/Frame/ArrayIndex).16bit無(wú)符號數,作為地址修改的索引值。數據單元索引只應用于1-D傳輸,為下一數據單元的地址偏移值(2一D傳輸不允許數據單元間隔存放)。幀,陣列索引用于控制下一幀,陣列的地址索引。

數據計數的重加載(Element Count Reload),16bit無(wú)符號數。用于在每幀最后一個(gè)數據元素傳輸之后.重新加載傳輸計數值。這個(gè)參數只能用于1一D傳輸中。

鏈接地址(Link Address),16bit。當設定可選參數中的LINK=1時(shí),可以由鏈接地址確定下1個(gè)EDMA事件采用參數的裝載,重裝載地址,從而使多組EDMA傳輸參數形成EDMA傳輸鏈。   

4 EDMA的傳輸操作

EDMA進(jìn)行數據傳輸時(shí)有2種啟動(dòng)方式,1種是CPU啟動(dòng).另1種是由同步事件觸發(fā)。每1個(gè)通道的啟動(dòng)是相互獨立的。

4.1 CPU啟動(dòng)EDMA/非同步的EDMA

CPU可以通過(guò)寫(xiě)事件置位寄存器(ESR)啟動(dòng)1個(gè)EDMA通道。向ESR中某1位寫(xiě)1時(shí),將強行觸發(fā)對應的事件。此時(shí),與正常的事件響應過(guò)程類(lèi)似,EDMA的PaRAM中的傳輸參數被送入地址發(fā)生器.完成對EMIF、L2存儲器或外設的存取訪(fǎng)問(wèn)。由CPU啟動(dòng)的EDMA屬于非同步的數據傳輸。EER中的事件使能與否不會(huì )影響這種EDMA傳輸的啟動(dòng)。

4.2 由事件觸發(fā)EDMA

一旦事件編碼器捕獲到1個(gè)觸發(fā)事件并鎖存在ER寄存器中,將導致PaRAM中對應的參數被送入地址發(fā)生器.進(jìn)而執行有關(guān)的傳輸操作。盡管是由事件啟動(dòng)傳輸操作,但是事件本身必須首先被CPU使能。EER寄存器負責控制事件的使能。觸發(fā)EDMA傳輸的同步事件可以源于外設,外部器件的中斷或某個(gè)EDMA通道結束。與DMA的情況不同,與EDMA的每1個(gè)通道相關(guān)聯(lián)的觸發(fā)事件是固定的。因此,如果假設EER中的EVT4=1,那么EXT_INT4引腳的外部中斷信號就會(huì )啟動(dòng)EDMA通道4的傳輸。所以,每個(gè)事件也就指定了1個(gè)特定的EDMA通道。

5 在實(shí)時(shí)圖像處理系統中的應用

在實(shí)時(shí)圖形處理系統中,經(jīng)常是把數據塊轉移,例如從視頻通道采集數據傳送到SDRAM中作為后續處理的緩存,或是把數據傳送到片內RAM中。EDMA使數據的傳送簡(jiǎn)單易行。下面以把數據從視頻通道傳送到片內RAM中并作Sobel邊緣提取算法和把數據從視頻通道傳送到SDRAM中并作So—bel邊緣提取算法為例。

(1)把數據從視頻通道通過(guò)1維方式傳送到片內RAM中并作Sobel邊緣提取算法

只對攝像頭采集的I塊數據進(jìn)行Sobel邊緣提取。采用一維EDMA傳送方式,每1次傳送采集1行中的部分數據(DAT_copy()函數)。在PAL制式下.先把1行數據放到nMemTemp數組中,然后對從144行到432行、從180列到435列的圖像進(jìn)行Sobel邊緣提。詈蟀炎儞Q后的數據輸出到顯示緩沖區.如圖1所示。   


   



因為Sobel算法需要3行數據,所以可以開(kāi)辟1個(gè)可以存放3行數據的緩沖區,通過(guò)指針的交換把從視頻通道過(guò)來(lái)的數據分別放到緩沖區中。保存的3行圖像使用翻卷的緩沖區管理,3個(gè)變量分別指示當前使用的y行、y—l行和y一2行在緩沖區中的起始偏移量?梢赃@樣:輪流往3塊緩存區拷貝數據.只要改變拷貝的指針就可以。在拷貝當前這1塊的時(shí)候.已經(jīng)拷貝的另外2塊數據依然沒(méi)有變化,所以就可以實(shí)現3塊數據保存采集圖像中的相鄰3行數據.如表2所示。   


   



   

   
(2)把數據從視頻通道通過(guò)2維方式傳送到SDRAM中并作Sobel邊緣提取算法可以通過(guò)DAT_copy2d 0函數直接把采集的l幅圖像亮度分量存放到SDRAM中,如下:   


其中.m_dbFrameBufferTemp是指向SDRAM中緩沖區的指針,numPixels是1行的像素數,num-Lines是行數。當把數據存放到SDRAM的1個(gè)數組中后.Sobel算法的實(shí)現就非常簡(jiǎn)單了。當然也可以參照1維的方法來(lái)實(shí)現。   

6 結束語(yǔ)

大批量的圖像數據傳輸和復雜算法的處理一直是高速數字圖像處理器的速度瓶頸,利用DSP的EDMA功能可以在不中斷信號處理器算法處理工作的同時(shí)完成圖像數據的搬移,在有效地解決了大批量圖像數據傳輸速度瓶頸的同時(shí),又能讓DSP的處理器核專(zhuān)門(mén)從事算法處理工作,極大地提高了系統的并行性能。
本文地址:http://selenalain.com/thread-16712-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页