<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > DMA在實時圖像處理中的應用

          DMA在實時圖像處理中的應用

          ——
          作者: 時間:2006-05-19 來源: 收藏
          摘要:以TMS320C6701為例,說明在實時圖像處理系統(tǒng)中使用DMA的必要性,同時給出DMA在實時圖像處理中幾種典型的應用例子。

          關鍵詞:DMA 實時圖像處理 DSP

          引言

          實時圖像處理系統(tǒng)要求系統(tǒng)必須在有限的時間內(nèi)完成大量數(shù)據(jù)的運算。DSP以其獨特的哈佛總線結構和并行的存儲塊結構,將乘法操作與加法操作統(tǒng)一考慮,可以在一個指令周期完成般處理器的多次運算;并且指令系統(tǒng)采用多級流水線操作方式,保證了系統(tǒng)對實時性的要求,因此得以在實時圖像處理系統(tǒng)廣泛應用。圖像處理系統(tǒng)的最大特點就是運算數(shù)據(jù)量大。大多數(shù)情況下,數(shù)據(jù)量遠遠大于片內(nèi)存儲器容量,計算過程中必須進行數(shù)據(jù)的交換。合理使用DMA可以提高數(shù)據(jù)傳輸效率,取得事半功倍的效果。本文以TMS320C6701(簡稱C6701)為例,介紹DMA在圖像處理中的幾種典型應用。

          1 圖像處理系統(tǒng)特點與使用DMA的必要性

          前面已經(jīng)提到,圖像處理系統(tǒng)的最大特點是就是運算數(shù)據(jù)量大,數(shù)據(jù)量往往大于片內(nèi)存儲器容量。不僅如此,圖像處理系統(tǒng)之中,運算過程產(chǎn)生的中間數(shù)據(jù)往往與源數(shù)據(jù)大小相當,這也限制了片內(nèi)高速存儲區(qū)的使用。然而為了提高處理的速度,計算源數(shù)據(jù)、中間數(shù)據(jù)必須盡可能多地在片內(nèi)高速存儲區(qū)進行,因此,必須使用DMA在片內(nèi)高速存儲區(qū)與片外低速存儲區(qū)之間進行數(shù)據(jù)交換,以提高數(shù)據(jù)處理速度。

          另外,數(shù)據(jù)的排列往往不符合程序的要求;必須對數(shù)據(jù)進行重排達到程序要求;使用DMA對數(shù)據(jù)重排,可以滿足程序要求。與數(shù)據(jù)重排如出一轍,圖像處理中許多操作的基礎都是對多重數(shù)組的操作,也就是矩陣運算。諸如求逆、取子圖等圖像處理中經(jīng)常用到的運算,也可以通過DMA完成。這些運算當然可用C語言編程實現(xiàn),但是,如果程序?qū)崿F(xiàn)是一個多重循環(huán),不利于軟件流水,而且隨著數(shù)據(jù)量的增加,消耗的時鐘周期也會成比例增加;即使使用并行匯編在時鐘消耗上可以有所減少,這都是不符合系統(tǒng)實時性要求的。如果通過DMA數(shù)據(jù)重排,可以輕而易舉地實現(xiàn),而且這個過程CPU只占有一個時鐘周期,通過巧妙程序安排,安全可以使數(shù)據(jù)的傳輸過程在CPU的后臺進行,根本感覺不到DMA的存在。

          2 C6x系列DMA簡介

          TMS320C6701S是TMS320C6000系列的高速浮點數(shù)字信號處理信號,是TI公司20世紀90年代后期的最新一代DSP產(chǎn)品。C6701有4個通道自加載的DMA通道,用于數(shù)據(jù)的DMA傳輸;另外,1個輔助DMA通道,負責與主機通信。DMA通道可以在沒有CPU參與下完成映射空間的數(shù)據(jù)傳輸。數(shù)據(jù)的傳輸可以是片內(nèi)存存儲器、片內(nèi)外圍部件或外部器件之間的傳輸。

          2.1 DMA控制寄存器

          對于C6x系列的DMA,在使用任何一個DMA通道進行數(shù)據(jù)傳輸前,都必須設置以下幾組寄存器。各寄存器及其功能如下:

          *主控寄存器(primary control register)——用于控制DMA狀態(tài)及傳輸類型;

          *副控寄存器(secondary control register)——用于使能CPU中斷,監(jiān)視DMA通道狀態(tài);

          *傳輸計數(shù)寄存器(transfer control register)——用于記錄傳輸?shù)膯挝粩?shù)目;

          *源地址寄存器(source control register)——傳輸?shù)钠鹗嫉刂?BR>
          *目標地址寄存器(destination control register)——傳輸?shù)哪康牡刂罚?BR>
          此外,DMA通道可以使用以下全局DMA寄存器,以完成比較復雜的傳輸過程:

          *全局地址寄存器組(global address register A、B、C和D);

          *全局索引寄存器組(global index register A和register A和B)。

          全局地址寄存器組共有4個32位寄存器,其作為分裂地址或地址重載值。全局索引寄存器2個32位寄存器。每個寄存器含2個控制域,其中高16位為幀索引域(FRAME INDEX),其值為幀間的地址偏移量,也就是傳輸完1幀后,地址的調(diào)整量;低16位為數(shù)據(jù)單元索引域(ELEMENT INDEX),其值為幀內(nèi)地址偏移量,也就是每傳輸完1個數(shù)據(jù)單元的地址調(diào)整量。全局計數(shù)重載計數(shù)器與全局索引寄存器結構一樣,用于重載DMA通道的傳輸計數(shù)寄存器。全局DMA寄存器可以為任意DMA通道使用,而且同一寄存器可以同時被一個以上的DMA通道使用。

          2.2 DMA工作過程簡介

          DMA是十分復雜的系統(tǒng),限于篇幅,這里只簡要介紹DMA的工作過程。

          在C6000系列DMA中,把所傳輸?shù)囊欢〝?shù)量的數(shù)據(jù)單元(ELEMENT)稱為幀(FRAME),幀的大小由傳輸計數(shù)寄存器的低16位數(shù)據(jù)即單元計數(shù)域(ELEMENT COUNT)指定,該寄存器的值通過傳輸計數(shù)寄存器的高16位即幀計數(shù)域(FRAME COUNT)指定。當完成1次DMA讀操作,ELEMENT COUNT值自動域1;當最后1個數(shù)據(jù)單元讀操作完成時,F(xiàn)RAME COUNT自動減1,此時ELEMENT COUNT的值將被全局計數(shù)重載寄存器的ELEMENT COUNT更新;當最后1幀的讀操作完成后,傳輸計數(shù)寄存器將被全局計數(shù)重載寄存器的值更新。

          DMA控制器負責對每個通道的讀寫傳輸進行地址計算。在計算機傳輸?shù)刂窌r,有基本調(diào)整和使用全局索引寄存器進行調(diào)整2種方式:基本調(diào)整是指通過控制域SRC DIR和DST DIR來設置傳輸?shù)刂罚磾?shù)據(jù)字長大?。ㄓ蒃SIZE控制)遞增、遞減或保持不變;而使用全局索引寄存器調(diào)整與基本調(diào)整不同,這種模式下,根據(jù)傳輸?shù)臄?shù)據(jù)元素是否當前幀的最后一個來進行地址調(diào)整。

          在全局索引寄存器調(diào)整模式下,地址調(diào)整值由全局索引寄存器控制。全局索引寄存器含2個控制域,其中高16位為幀索引域(FRAME INDEX),其值為幀間的地址偏移量,也就是傳輸完1幀后的地址調(diào)整量;低16位為數(shù)據(jù)單元索引域(ELEMENT INDEX),其值的幀內(nèi)地址偏移量,也就是每傳輸完1個數(shù)據(jù)單元的地址調(diào)整量。

          3 幾種典型的DMA操作及其應用

          3.1 塊移動

          塊移動能夠?qū)?塊連續(xù)數(shù)據(jù)塊從一個地址傳輸?shù)搅硪粋€地址,通常用于將數(shù)據(jù)或程序從外部存儲器移到內(nèi)部存儲器。這種塊移動是最簡單、最常見的DMA工作方式。例如,將1塊1K連續(xù)的32位數(shù)據(jù)塊從外存(0x02000000)移動至內(nèi)存(0x80000000),如圖1所示。


          相關寄存器的值設置:

          Primary control register =0x00000050

          Transfer control register =0x00000400

          Source control register =0x02000000

          Destination control register =0x80000000

          其中主控寄存器各控制域設置與意義如下:

          DST RELOAD =00 無目標地址重載

          SRC RELOAD =00 無源地址重載

          EMOD =0

          FS =0 無幀同步

          TCINT =1 允許中斷

          PRI =1 DMA優(yōu)先

          WSYNC =00000 無讀同步

          RSYNC =000 無寫同步

          RSYNC =00 無寫同步

          FRAME COUNT =0X000

          ELEMENT COUNT =0X0400

          INDEX =0 全局計數(shù)重載寄存器A

          CNT RELOAD =0 全局計數(shù)重載寄存器A

          SPLIT =00 無分裂地址

          ESIZE =00 數(shù)據(jù)單元4BYTES

          DSTDIR =11 索引寄存器方式

          SRCDIR =01 地址遞增

          STATUS =00此位只讀

          START =00 DMA停止

          在主控寄存器的START讀中寫入01b就可以開始DMA的傳輸。

          3.2 數(shù)據(jù)重排

          往往數(shù)據(jù)的格式并不符合運算的要求。在這種情況下,可以通過DMA進行數(shù)據(jù)重新排列,以滿足運算的要求。數(shù)據(jù)重排主要是利用DMA的幀傳輸方式。數(shù)據(jù)重排所必需的、最關鍵的一步是設置全局寄存器,所以,以下討論的重點就是全局寄存器的設置。

          3.2.1 求矩陣轉置

          圖2顯示了將一個位于外存16bit的連續(xù)數(shù)據(jù)區(qū),開始地址(0x02000000),數(shù)據(jù)重排并移至片內(nèi)存儲區(qū),首地址為(0x80000000)前后的排列情況。


          在數(shù)據(jù)重排中,主要是正確設置全局索引寄存器。在這里,可以將1幀看作1個數(shù)組,那么數(shù)據(jù)單元就是數(shù)組的元素。因此,如果假設共有F


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();