<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Blackfin533的DMA技術(shù)及其在圖像處理中的應用

Blackfin533的DMA技術(shù)及其在圖像處理中的應用

作者: 時(shí)間:2005-06-13 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:介紹了的類(lèi)型及特點(diǎn),描述了在實(shí)時(shí)領(lǐng)域數據傳輸中的重要,給出了兩個(gè)具體的實(shí)例,最后指出了使用時(shí)應注意的事項。

關(guān)鍵詞:;DMA;實(shí)時(shí);數據傳輸

直接存儲器存?。ǎ模椋颍澹悖?Memory Access,簡(jiǎn)稱(chēng)DMA?對計算機系統是非常重要的。它可以使CPU在運行指令的同時(shí)從外部存儲器或設備中存取數據,也可以在CPU不參與的情況下,由專(zhuān)用的DMA控制器存取數據。

1?。拢欤幔悖耄妫椋睿担常持械模模停?/B>

Blackfin系列DSP產(chǎn)品包括ADSP-BF535和ADSP-BF533/2/1兩類(lèi),都是AD公司最新的基于微信號體系結構的DSP,這些器件含有兩個(gè)MAC,并集成了大量的外圍設備和存儲器接口,每秒運算速度最高可達1200MMAC,因而比較適用于各種視頻、音頻、通信領(lǐng)域。

BF533處理器有多個(gè)獨立的DMA控制器,它能以最小的處理器內核消耗支持數據的自動(dòng)傳輸。DMA傳輸可以發(fā)生在BF533處理器的內存與支持DMA的任一外設之間。此外,DMA還可以完成有DMA功能的外設與連接在外部存儲器接口上的外部設備(包括SDRAM控制器和異步存儲控制器)之間數據傳輸。BF533處理器可利用DMA在存儲器空間內部,以及在一個(gè)存儲器空間和外圍設備之間傳輸數據,并可以指定傳輸操作,以便完全集成化的DMA控制器獨立于處理器完成數據傳輸時(shí)返回到正常的處理。

BF533處理器的DMA控制器同時(shí)支持1D和2D DMA傳輸,其DMA傳輸初始化可以通過(guò)寄存器狀態(tài)描述符塊中的一組參數來(lái)實(shí)現。2D DMA行和列最大可支持64k64k個(gè)元素任意數。而且列的步長(cháng)可小于行的步長(cháng),并可執行交叉存取的數據流。這一個(gè)特點(diǎn)在某些視頻場(chǎng)合特別有用。

Blackfin533有12個(gè)通道DMA控制器。有DMA功能的外設包括SPORTs、SPI、UART和PPI。每個(gè)支持DMA的外設至少有一個(gè)專(zhuān)用的DMA通道。DMA控制器可以完成的幾種數據傳輸類(lèi)型如下:

(1)存儲器和存儲器之間(MDMA);

(2)存儲器和串行外設接口(SPI)之間;

(3)存儲器和串行接口 (SPORT)之間;

(4)存儲器和通用異步收發(fā)器UART接口之間;

(5)存儲器和并行外設接口(PPI)之間;

BF533處理器上的DMA傳輸可以基于描述符,也可以基于寄存器?;诿枋龇模模停羵鬏斝枰么娣旁诖鎯ζ鲀鹊囊唤M參數來(lái)初始化一個(gè)DMA序列。這種傳輸允許多個(gè)DMA序列鏈接在一起。在基于描述符的DMA操作中,一個(gè)DMA通道可以通過(guò)編程自動(dòng)建立起來(lái),并可在當前序列完成后開(kāi)始另一個(gè)DMA傳輸?;诩拇嫫鞯模模停猎试S處理器直接對控制寄存器編程來(lái)啟動(dòng)一個(gè)DMA傳輸。傳輸完成后,為了連續傳輸數據,也可以用它們原來(lái)設置的值自動(dòng)更新控制寄存器。

2?。模停猎跀底?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/圖像處理">圖像處理中的應用

DMA是數字信號處理器(DSP)中用于快速數據交換的重要,它具有獨立于CPU的后臺批量數據傳輸能力,能夠滿(mǎn)足實(shí)時(shí)圖像處理中的高速數據傳輸要求。由于圖像處理的原始數據量很大,同時(shí)圖像處理中也會(huì )產(chǎn)生等量的中間數據,對于片內存儲資源有限的高速DSP芯片來(lái)說(shuō),一般需要借用外部存儲空間。為了提高系統的實(shí)時(shí)處理能力,可以將數據在不同存儲空間的轉移任務(wù)交給DMA來(lái)完成,從而使CPU只專(zhuān)注于數據的計算。同時(shí)DMA對數據的重排功能可以?xún)?yōu)化圖像數據在內存中的存儲,這不僅可以提高內部存儲空間的利用效率,也可以提高數據的傳輸效率。雖然圖像數據的傳輸也可由軟件實(shí)現,但會(huì )消耗大量的CPU時(shí)鐘周期,從而使DSP的高速性能難以發(fā)揮。而由DMA來(lái)進(jìn)行同樣的工作卻不占用CPU的時(shí)鐘周期。

BF533內部專(zhuān)門(mén)為適應視頻數據處理而增加的二維DMA及相關(guān)寄存器有以下幾種:

(1)配置寄存器(DMAx CONFIG/MDMA yy CONFIG)主要用來(lái)設置二維DMA方式使能和中斷產(chǎn)生方式,其中中斷可以在一行結束時(shí)產(chǎn)生,也可以在整個(gè)DMA結束時(shí)產(chǎn)生。

(2)內層循環(huán)計數寄存器(DMAx X COUNT/MDMA yy X COUNT)用于在二維DMA時(shí)保存內層循環(huán)的數目(或稱(chēng)行數),該數目必須大于等于2。

(3)內層循環(huán)地址增量寄存器(DMAx X MODI-FY/MDMA yy X MODIFY)用于在二維DMA時(shí)保存每一次內層循環(huán)計數器加1之后(也就是在內層每傳輸完一個(gè)元素,但不包括每個(gè)內層的最后一個(gè)元素),DMA操作(讀或寫(xiě))地址在內存中的增量,此增量應該是二維DMA操作的數據單元長(cháng)度的整數倍,如二維DMA進(jìn)行16位讀寫(xiě)時(shí),此增量必須是2N?N≠0?倍。

(4)外層循環(huán)計數寄存器(DMAx Y COUNT/MDMA yy Y COUNT):該寄存器僅在二維DMA中使用,任務(wù)是保存外層循環(huán)的數目(或稱(chēng)位列數)。

(5)外層循環(huán)地址增量寄存器(DMAx Y MODI-FY/MDMA yy Y MODIFY):該寄存器也僅在二維DMA中使用,任務(wù)是保存每次外層循環(huán)計數器加1后,DMA操作地址在內存中的增量,該值可以為負,且應為二維DMA操作數據單元長(cháng)度的整數倍。3 應用舉例

存儲器的有效利用對系統設計者來(lái)說(shuō)是需要著(zhù)重考慮的問(wèn)題。外部存儲器比較昂貴,而且其存取時(shí)具有較長(cháng)的延遲。為了克服上述問(wèn)題,Blackfin處理器片上集成有SDRAM控制器,可支持片外存儲器。因為視頻數據率要求非??量?,幀緩沖區必須設立在外部存儲器上。這樣,當處理器操作一個(gè)緩存時(shí),另一個(gè)緩存便可以存儲通過(guò)PPI并用DMA傳輸的數據,見(jiàn)圖1。

下例可將BF533的PPI接口上從圖像采集芯片ADV7183傳送過(guò)來(lái)的視頻流中的一場(chǎng)視頻圖像(720288像素)存儲到外部存儲器SDRAM中。

具體程序代碼如下:

Init_DMA() ?

{

*pDMA0 START ADDR = 0x0; //把圖像存放在SDRAM中的起始地址//0x00000000處;

*pDMA0 X COUNT = 720; //圖像的行數;

*pDMA0 X MODIFY = 0x4; //在內層每次傳完一個(gè)元素后地址的增量,因為每次傳輸32位,所以是0x4?

*pDMA0 Y COUNT =72; //外層循環(huán)的數目,因為總的緩存為720288字節,所以288/4=72?

*pDMA0 Y MODIFY = 0x4; //傳完一行數據后DMA的地址增量,因為是存儲空間是連續的,所以是0x4?

*pDMA0 PERIPHERAL MAP = 0x0?

//外設PPI的DMA開(kāi)啟;

*pDMA0 CONFIG = DMAEN |DI EN|WNR|WDSIZE 32|RESTART|DMA2D|DI EN;

//使能DMA,整個(gè)DMA結束產(chǎn)生中斷,存儲器寫(xiě)。32位傳輸,重新開(kāi)始前丟失FIFO中的數據。

}

當一個(gè)完整的圖像幀存放在SDRAM后,數據將傳輸到內部L1數據存儲器中,這樣,處理器內核用一個(gè)時(shí)鐘周期的延遲就可以訪(fǎng)問(wèn)到數據。為此,DMA控制器可以用二維傳輸獲得像素塊。圖2所示是一個(gè)1616“宏塊”的傳輸示意圖。

圖2

為了有效地從原圖像中傳輸一個(gè)圖像塊,一般需要控制四個(gè)參數:X Count、Y Count、X Modify和Y Modify。其中X Count和Y Count分別表示水平和垂直方向上讀入/讀出的元素數。在此應用中“水平”和“垂直”是抽象的概念,因為圖像數據在外存中實(shí)際上是線(xiàn)性存儲的。另外兩個(gè)參數X Modify和Y Modify是在傳輸了必需的X Count和Y Count后跨越的數據量。從性能上看,任何時(shí)候最多四個(gè)唯一的SDRAM內部子組(bank)都是活動(dòng)的。這意味著(zhù)在視頻結構中,PPI填充一個(gè)子組(bank)時(shí),2D到1D DMA只是把數據從一個(gè)子組(bank)拖進(jìn)來(lái),而沒(méi)有額外的子組(bank)激活延遲。下面是一個(gè)2D到1D的DMA傳輸代碼:

2Dto1D_DMA()

{

unsigned char *p;

p=0x0;

*pMDMA_D0_START_ADDR=p+L1buffer;

//L1buffer是L1緩沖區的地址

*pMDMA_D0_X_COUNT=64;

//1616/4=64;

*pMDMA_D0_X_MODIFY=4;

pMDMA_S0_START_ADDR =p+Sourcebuffer; //Sourcebuffer是1616圖像塊在SDRAM中的地址

*pMDMA_S0_X_COUNT=4;

*pMDMA_S0_X_MODIFY=4;

*pMDMA_S0_Y_COUNT=16;

*pMDMA_S0_Y_MODIFY=708;

// 720-16+4=708

*pMDMA_S0_CONFIG=WDSIZE32|DMAEN|DMA2D;

*pMDMA_D0_CONFIG=DI EN|WDSIZE32|WNR|DMAEN;

*pMDMA_D0_IRQ STATUS=0x1;

//消除中斷;

4 BF533中DMA的使用注意事項

下面兩種情況會(huì )導致DMA總線(xiàn)錯誤:

(1)數據沒(méi)有對齊

當要傳送的數據與當前地址不相符時(shí),可能發(fā)生數據沒(méi)有對齊的錯誤。數據不對齊包括有情況:第一是當DMA CONFIG 寄存器的WDSIZE為1(16bit)時(shí),地址的最低位不等于0;第二是當WD-SIZE為2(32bit)時(shí),最低兩位地址不等于00。如果出現上述錯誤,IRQ寄存器中的位2應被置位。

(2)非法存儲器訪(fǎng)問(wèn)

發(fā)生非法存儲器訪(fǎng)問(wèn)時(shí)(如訪(fǎng)問(wèn)MMR空間),處理器將得到一個(gè)錯誤響應并導致以下結果:第一是DMA通道會(huì )結束當前的單個(gè)或突發(fā)式傳送;第二是DMA信道的使能位(配置字的bit0)將被清零;第三是產(chǎn)生一個(gè)總線(xiàn)錯誤中斷并使IRQ 狀態(tài)寄存器中的位2被置位。

還有一點(diǎn)就是要保證對MDMA中MDMA_S0_CONFIG(MDMA S1 CONFIG?位的寫(xiě)入一定要在寫(xiě)入MDMA_D0_CONFIG(MDMA_D1_CONFIG)之前。

5 總結

一般情況下,圖像處理系統的最大特點(diǎn)是運算數據量大,數據量往往大于片內存儲器容量,所以必須借助DMA在片內高速存儲區與片外低速存儲區之間進(jìn)行數據交換,以提高數據處理速度。多數情形下,數據傳輸所花的時(shí)間往往超過(guò)數據處理的時(shí)間。因此,合理使用DMA來(lái)提高數據傳輸率,可起到很好的作用。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>