1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現在位置:范文先生網>理工論文>電子通信論文>DMA在實時圖像處理中的應用

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

    時間:2023-02-21 00:06:13 電子通信論文 我要投稿
    • 相關推薦

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

      摘要:以TMS320C6701為例,說明在實時圖像處理系統中使用DMA的必要性,同時給出DMA在實時圖像處理中幾種典型的應用例子。
      關鍵詞:DMA實時圖像處理DSP
      
      引言
      
      實時圖像處理系統要求系統必須在有限的時間內完成大量數據的運算。DSP以其獨特的哈佛總線結構和并行的存儲塊結構,將乘法操作與加法操作統一考慮,可以在一個指令周期完成般處理器的多次運算;并且指令系統采用多級流水線操作方式,保證了系統對實時性的要求,因此得以在實時圖像處理系統廣泛應用。圖像處理系統的最大特點就是運算數據量大。大多數情況下,數據量遠遠大于片內存儲器容量,計算過程中必須進行數據的交換。合理使用DMA可以提高數據傳輸效率,取得事半功倍的效果。本文以TMS320C6701(簡稱C6701)為例,介紹DMA在圖像處理中的幾種典型應用。
      
      1圖像處理系統特點與使用DMA的必要性
      
      前面已經提到,圖像處理系統的最大特點是就是運算數據量大,數據量往往大于片內存儲器容量。不僅如此,圖像處理系統之中,運算過程產生的中間數據往往與源數據大小相當,這也限制了片內高速存儲區的使用。然而為了提高處理的速度,計算源數據、中間數據必須盡可能多地在片內高速存儲區進行,因此,必須使用DMA在片內高速存儲區與片外低速存儲區之間進行數據交換,以提高數據處理速度。
      
      另外,數據的排列往往不符合程序的要求;必須對數據進行重排達到程序要求;使用DMA對數據重排,可以滿足程序要求。與數據重排如出一轍,圖像處理中許多操作的基礎都是對多重數組的操作,也就是矩陣運算。諸如求逆、取子圖等圖像處理中經常用到的運算,也可以通過DMA完成。這些運算當然可用C語言編程實現,但是,如果程序實現是一個多重循環,不利于軟件流水,而且隨著數據量的增加,消耗的時鐘周期也會成比例增加;即使使用并行匯編在時鐘消耗上可以有所減少,這都是不符合系統實時性要求的。如果通過DMA數據重排,可以輕而易舉地實現,而且這個過程CPU只占有一個時鐘周期,通過巧妙程序安排,安全可以使數據的傳輸過程在CPU的后臺進行,根本感覺不到DMA的存在。
      
      2C6x系列DMA簡介
      
      TMS320C6701S是TMS320C6000系列的高速浮點數字信號處理信號,是TI公司20世紀90年代后期的最新一代DSP產品。C6701有4個通道自加載的DMA通道,用于數據的DMA傳輸;另外,1個輔助DMA通道,負責與主機通信。DMA通道可以在沒有CPU參與下完成映射空間的數據傳輸。數據的傳輸可以是片內存存儲器、片內外圍部件或外部器件之間的傳輸。
      
      2.1DMA控制寄存器
      
      對于C6x系列的DMA,在使用任何一個DMA通道進行數據傳輸前,都必須設置以下幾組寄存器。各寄存器及其功能如下:
      
      *主控寄存器(primarycontrolregister)——用于控制DMA狀態及傳輸類型;
      
      *副控寄存器(secondarycontrolregister)——用于使能CPU中斷,監視DMA通道狀態;
      
      *傳輸計數寄存器(transfercontrolregister)——用于記錄傳輸的單位數目;
      
      *源地址寄存器(sourcecontrolregister)——傳輸的起始地址
      
      *目標地址寄存器(destinationcontrolregister)——傳輸的目的地址;
      
      此外,DMA通道可以使用以下全局DMA寄存器,以完成比較復雜的傳輸過程:
      
      *全局地址寄存器組(globaladdressregisterA、B、C和D);
      
      *全局索引寄存器組(globalindexregisterA和registerA和B)。
      
      全局地址寄存器組共有4個32位寄存器,其作為分裂地址或地址重載值。全局索引寄存器2個32位寄存器。每個寄存器含2個控制域,其中高16位為幀索引域(FRAMEINDEX),其值為幀間的地址偏移量,也就是傳輸完1幀后,地址的調整量;低16位為數據單元索引域(ELEMENTINDEX),其值為幀內地址偏移量,也就是每傳輸完1個數據單元的地址調整量。全局計數重載計數器與全局索引寄存器結構一樣,用于重載DMA通道的傳輸計數寄存器。全局DMA寄存器可以為任意DMA通道使用,而且同一寄存器可以同時被一個以上的DMA通道使用。
      
      2.2DMA工作過程簡介
      
      DMA是十分復雜的系統,限于篇幅,這里只簡要介紹DMA的工作過程。
      
      在C6000系列DMA中,把所傳輸的一定數量的數據單元(ELEMENT)稱為幀(FRAME),幀的大小由傳輸計數寄存器的低16位數據即單元計數域(ELEMENTCOUNT)指定,該寄存器的值通過傳輸計數寄存器的高16位即幀計數域(FRAMECOUNT)指定。當完成1次DMA讀操作,ELEMENTCOUNT值自動域1;當最后1個數據單元讀操作完成時,FRAMECOUNT自動減1,此時ELEMENTCOUNT的
      
      
      
      值將被全局計數重載寄存器的ELEMENTCOUNT更新;當最后1幀的讀操作完成后,傳輸計數寄存器將被全局計數重載寄存器的值更新。
      
      DMA控制器負責對每個通道的讀寫傳輸進行地址計算。在計算機傳輸地址時,有基本調整和使用全局索引寄存器進行調整2種方式:基本調整是指通過控制域SRCDIR和DSTDIR來設置傳輸地址,按數據字長大小(由ESIZE控制)遞增、遞減或保持不變;而使用全局索引寄存器調整與基本調整不同,這種模式下,根據傳輸的數據元素是否當前幀的最后一個來進行地址調整。
      
      在全局索引寄存器調整模式下,地址調整值由全局索引寄存器控制。全局索引寄存器含2個控制域,其中高16位為幀索引域(FRAMEINDEX),其值為幀間的地址偏移量,也就是傳輸完1幀后的地址調整量;低16位為數據單元索引域(ELEMENTINDEX),其值的幀內地址偏移量,也就是每傳輸完1個數據單元的地址調整量。
      
      3幾種典型的DMA操作及其應用
      
      3.1塊移動
      
      塊移動能夠將1塊連續數據塊從一個地址傳輸到另一個地址,通常用于將數據或程序從外部存儲器移到內部存儲器。這種塊移動是最簡單、最常見的DMA工作方式。例如,將1塊1K連續的32位數據塊從外存(0x02000000)移動至內存(0x80000000),如圖1所示。
      
      相關寄存器的值設置:
      
      Primarycontrolregister=0x00000050
      
      Transfercontrolregister=0x00000400
      
      Sourcecontrolregister=0x02000000
      
      Destinationcontrolregister=0x80000000
      
      其中主控寄存器各控制域設置與意義如下:
      
      DSTRELOAD=00無目標地址重載
      
      SRCRELOAD=00無源地址重載
      
      EMOD=0
      
      FS=0無幀同步
      
      TCINT=1允許中斷
      
      PRI=1DMA優先
      
      WSYNC=00000無讀同步
      
      RSYNC=000無寫同步
      
      RSYNC=00無寫同步
      
      FRAMECOUNT=0X000
      
      ELEMENTCOUNT=0X0400
      
      INDEX=0全局計數重載寄存器A
      
      CNTRELOAD=0全局計數重載寄存器A
      
      SPLIT=00無分裂地址
      
      ESIZE=00數據單元4BYTES
      
      DSTDIR=11索引寄存器方式
      
      SRCDIR=01地址遞增
      
      STATUS=00此位只讀
      
      START=00DMA停止
      
      在主控寄存器的START讀中寫入01b就可以開始DMA的傳輸。
      
      3.2數據重排
      
      往往數據的格式并不符合運算的要求。在這種情況下,可以通過DMA進行數據重新排列,以滿足運算的要求。數據重排主要是利用DMA的幀傳輸方式。數據重排所必需的、最關鍵的一步是設置全局寄存器,所以,以下討論的重點就是全局寄存器的設置。
      
      3.2.1求矩陣轉置
      
      圖2顯示了將一個位于外存16bit的連續數據區,開始地址(0x02000000),數據重排并移至片內存儲區,首地址為(0x80000000)前后的排列情況。
      
      在數據重排中,主要是正確
      
      
      
      設置全局索引寄存器。在這里,可以將1幀看作1個數組,那么數據單元就是數組的元素。因此,如果假設共有F×E的矩陣,即有F幀數據,每幀E個數據單元,每個元素為S(Byte),重排為E×F的矩陣。在這種情況下,源地址遞增,目標地址根據全局索引寄存器的值進行調整。在幀內相鄰的數據單元傳輸時,目標地址偏移應為F×S,所以傳輸完1幀后的地址總偏稱為(E-1)×F,因此,下一幀的第1個數據單元地址為在當前的地址減去((E-1)×F-1)×S。也就是說,
      
      *FRAMEINDEX應設為-((E-1)×F-1)×S
      
      *ELEMENTINDEX應設為F×S
      
      在上例中寄存器的設置為:
      
      *FRAMEINDEX=-((2-1)×4-1)×2=0xFFEE
      
      *ELEMENTINDEX=4×2=8
      
      因此,寄存器設置如下:
      
      Primarycontrolregister=0x030001D0
      
      Transfercontrolregister=0x00040002
      
      Sourcecontrolregister=0x02000000
      
      Destinationcontrolregister=0x80000000
      
      GlobalindexregisterA=0xFFFA0008
      
      GlobalcountreloadA=0x00000002
      
      3.2.2取圖像子圖
      
      圖像處理中,往往要從圖像中摳取一定大小的子圖,然后對子圖進行處理。對于大型圖像,尺寸往往超過了DSP系統的片內存儲器的大小,這種摳取的操作成了必不可少的步驟。這可以通過使用全局索引寄存器來完成。例如,從一個8×4的圖像中摳取一個2×4的子圖,如圖3所示,其中每個數據單元為1Byte。
      
      可以這樣描述:有F1幀數據,每幀數據有E1個數據單元,每個數據單元為S(Byte);從中摳取部分為F2幀數據,每幀數據E2個數據單元,數據單元為S(Byte)。這種情況下,因為完成數據傳輸后,目標存儲區為連續數據,因此目標地址遞增;源地址根據全局索引寄存器的值進行調整。幀內相鄰的數據單元傳輸時,源地址偏移應為S;當讀完幀的最后一個數據單元,源地址指針跳過(E1-E2)個數據單元,即幀間的地址調整量為((E1-E1)+1)×S。這樣全局寄存器的設置:
      
      **FRAMEINDEX=((8-4)+1×1=4
      
      *ELEMENTINDEX=1
      
      *FRAMECOUNT=2
      
      *ELEMENTINDEX=4
      
      因此,寄存器設置如下:
      
      Primarycontrolregister=0x03000270
      
      Transfercontrolregister=0x00020004
      
      Sourcecontrolregister=0x02000000
      
      Destinationcontrolregister=0x80000000
      
      GlobalindexregisterA=0x00050001
      
      GlobalreloadregisterA=0x00000001
      
      結束語
      
      作為實時系統,選取合理有效的核心算法是至關重要的,同時,選擇有效的數據傳輸方法也是不容忽視的。我們在實際工作中發現,在大多數情形下,數據傳輸所花費時間往往超過數據處理的時間,成為實時圖像處理系統中的瓶頸。因此,合理使用DMA提高數據傳輸效率,是很有實際價值和意義的。
      
      
      
      

    【DMA在實時圖像處理中的應用】相關文章:

    ADSP2116中DMA的應用08-06

    DMA結合McBSP在數據采集系統中的應用設計08-06

    GMS氣象衛星云圖實時數據錄取和圖像處理08-06

    SVGA圖像處理08-06

    1394技術及其在圖像傳輸系統中的應用08-06

    VHDL在高速圖像采集系統中的應用設計08-06

    工業Ethernet在遠程實時控制系統中的具體應用08-06

    Data Matrix二維碼圖像處理與應用04-12

    實時操作系統VxWorks在跟蹤雷達系統中的應用08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      男人的天堂亚洲日韩欧美激情 | 色花午夜福利网站 | 亚洲国产欧美亚洲gif动图 | 中文字幕在线第一页 | 日本中文一二区高清精品在线 | 亚洲第一网站a√在线观看 午夜福利网站你懂得 |