嵌入式_DMA傳送

DMA傳送

一、控制方式

主機與外設之間數據傳送的控制方式有以下四種:
• 無條件傳送
• 查詢式傳送
• 中斷方式傳送
• 直接存儲器存取(DMA, Direct Memory Access)

(一)、無條件傳送方式

適用於總是處於準備好狀態的外設
• 直接對IO口寄存器進行讀寫(如GPIO讀寫)
• 以下外設可採用無條件傳送方式:
• 開關
• 發光器件(如發光二極管、7段數碼管、燈泡等)
• 繼電器
• 步進電機
• 優點:軟件及接口硬件簡單
• 缺點:只適用於簡單外設,適應範圍較窄

(二)、查詢方式傳送

• 適用於外設並不總是準備好,而且對傳送速率、傳送效率要求不高的場合。
• CPU在與外設交換數據前必須詢問外設狀態——“你準備好沒有?”
• 對外設的要求:應提供設備狀態信息
• 對接口的要求:需要提供狀態端口
• 優點:軟件比較簡單
• 缺點:CPU效率低,數據傳送的實時性差,速度較慢

(三)、中斷方式傳送

CPU無需循環查詢外設狀態,而是外部設備在需要進行數據傳送時才中斷CPU正在進行的工作,讓CPU來爲其服務。即CPU在沒有外設請求時可以去做更重要的事情,有請求時纔去傳輸數據,從而大大提高了CPU的利用率。
• 優點:CPU效率高,實時性好,速度快。
• 缺點:程序編制較爲複雜,如果需要進行大量數據傳輸,頻繁響應中斷,由於每次都需要保存現場,導致CPU執行效率底下。

二、傳輸原理

  1. DMA設置 ⑦
    CPU通過寫入控制器的
    相應寄存器設置源、目
    標地址及傳輸數等信息。
  2. DMA傳輸
    ① 外設發出DMA請求
    ② DMAC向CPU申請總線
    ③ CPU完成當前總線週期後響應,並釋放總線控制權
    ④ DMAC得到總線控制權,併發出DMA響應信號
    ⑤ 由DMAC發出各種控制信號,控制外設與存儲器之間的數據傳送
    ⑥ 數據傳送完後,DMAC撤銷HOLD信號
    ⑦ CPU釋放HLDA信號,並重新控制總線

三、DMA控制器

使用DMA方式傳輸時,需要一個專門的器件來協調外設接口和內存儲器的數據傳輸,該器件稱爲DMA控制器。一個DMAC可以有多個通道連接到不同外設。
DMAC內部的主要寄存器:
• 地址寄存器:存放DMA傳輸時存儲單元地址和外設數據寄存器地址;
• 字節計數器:存放DMA傳輸的字節數;
• 控制寄存器:存放由CPU設定的DMA傳輸方式,控制命令等;
• 狀態寄存器:存放DMAC當前的狀態,包括有無DMA請求,是否結束等。
• DMAC在系統中的二種不同角色:
• 總線從模塊:
CPU對DMAC進行預置操作,也就是向DMAC寫入內存傳送區的首地址、傳送字節數和控制字時,DMAC相當於一個外設接口,稱爲總線從模塊。
• 總線主模塊:
進行DMA傳輸時,CPU暫停對系統總線的控制,DMAC取得了對總線的控制權,這時的DMAC稱爲總線主模塊。
DMA控制器的工作過程
① 當外設準備好,可以進行DMA傳送時,外設向DMA控制器發出“DMA傳送請求”信號(DRQ);
② DMA控制器收到請求後,向CPU發出“總線請求”信號HOLD,表示希望佔用線;
③ CPU在完成當前總線週期後會立即對HOLD信號進行響應。響應包括兩個動作:一是CPU將數據總線、地址總線和相應的控制信號線均置爲高阻態,由此放棄對總線的控制權。另一方面,CPU向DMA控制器發出“總線響應”信號(HLDA)。
④ DMA控制器收到HLDA信號後,就開始控制總線,並向外設發出DMA響應信號DACK;
⑤ DMA控制器送出地址信號和相應的控制信號,實現外設與內存或內存與內存之間的直接數據傳送;例如,向I/O接口發出讀信號,同時往地址總線上發出存儲器的地址和存儲器寫信號和AEN信號,即可從外設向內存傳送一個字節。
⑥ DMA控制器自動修改地址和字節計數器,並判斷是否需要重複傳送操作。
⑦ 結束:當規定的數據傳送完後,DMA控制器就撤銷發往CPU的HOLD信號。CPU檢測到HOLD失效後,緊接着撤銷HLDA信號,並在下一時鐘週期重新開始控制總線。

四、傳輸方式

• DMA的三種傳輸方式:
• 連續傳送(塊傳送)
• DMAC申請到總線後,將一塊數據傳送完後才釋放總線,而不管中間DREQ是否有效。
• 單次傳送(每次傳送一個字節)
• 每個DMA週期只傳送一個字節就立即釋放總線。
• 按需傳送(猝發傳送)
• 只要I/O接口的數據緩衝可用(非空或未滿),就進行傳送。
(注:I/O接口需要有一定大小的FIFO緩衝)

在這裏插入圖片描述

五、DMA與主存交換數據的方法

• 當CPU需要訪問DMA的外設時:當前外設訪問不可,其他外設訪問可能(如通過總線矩陣)
• 當CPU與DMA同時訪問內存時有3種處理方式:
1、停止CPU訪問主存
2、週期挪用(週期竊取,DMA竊取CPU總線週期)
3、DMA與CPU交替訪問

1、停止CPU訪問主存
• 當外圍設備要求傳送一批數據時,由DMA控制器發一個停止信號給CPU,要求CPU放棄對地址總線、數據總線和有關控制總線的使用權。DMA控制器獲得總線控制權以後,開始進行數據傳送。在一批數據傳送完畢後,DMA控制器通知CPU可以使用內存,並把總線控制權交還給CPU。在這種DMA傳送過程 中,CPU基本處於不工作狀態或者說保持狀態。
• 優點:控制簡單,它適用於數據傳輸率很高的設備進行成組傳送。
• 缺點:在DMA控制器訪內階段,內存的效能沒有充分發揮,相當一部分內存工作周
期是空閒的。這是因爲,外圍設備傳送兩個數據之間的間隔一般總是大於內存存儲周
期,即使高速I/O設備也是如此。

2、週期挪用(週期竊取)
• 當I/O設備沒有DMA請求時,CPU按程序要求訪問內存;一旦I/O設備有DMA請求,則由I/O設備挪用一個或幾個內存週期。
• I/O設備請求DMA傳送有三種情況:

  1. CPU此時不需要訪問主存(I/O設備與CPU無衝突)
  2. CPU此時正在訪問主存(必須等待存取週期結束,CPU才能將總線控制權讓出)
  3. I/O設備與CPU都要求訪問主存(在CPU執行訪問主存指令的過程中插入DMA請求,並挪用了一二個內存週期)

• 優點:既實現了I/O傳送,又較好地發揮了內存和CPU的效率,是一種廣泛採用的方法。
• 缺點:I/O設備每一次週期挪用都有申請總線控制權、建立總線控制權和歸還總線控制權的過程,所以傳送一個字對內存來說要佔用一個週期,但對DMA控制器來說一般要2—5個 內存週期(視邏輯線路的延遲而定)。因此,週期挪用的方法適用於I/O設備讀寫週期大於內存存儲週期的情況。

3、DMA與CPU交替訪問
• DMA與CPU相互配合,交替執行,時分複用。這種DMA傳送對CPU來說,如同透
明的玻璃一般,沒有任何感覺或影響。在透明的DMA方式下工作,CPU既不停止
主程序的運行,也不進入等待狀態,是一種高效率的工作方式。當然,相應的硬件
邏輯也就更加複雜。
• 優點:不需要總線使用權的申請、建立和歸還過程,總線使用權是通過DMA訪存
和CPU訪存分時進行的。CPU既不停止主程序的運行,也不進入等待狀態,是一種
高效率的工作方式
• 缺點:相應的硬件邏輯更加複雜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章