eDMA结构及工作机理的简单介绍
eDMA是enhanced Direct Memory Access的簡稱,即增強型直接內存存取。它是用于快速數據交換的重要技術,具有獨立于CPU的后臺批量數據傳輸能力,能夠滿足實時處理中高速數據傳輸的要求。在ColdFire系列MCU中的MCF5329EVB平臺上實現的音頻系統,為了滿足系統的實時性要求,采用eDMA來完成音頻數據的傳輸。MCF5329EVB提供了一個eDMA控制器,可以滿足大量數據的實時傳送需求。
1 eDMA介紹
1.1 eDMA的結構
eDMA模塊框圖如圖1所示。
從eDMA的模塊結構圖可以看出,eDMA模塊包括兩個主要模塊:eDMA引擎和傳輸控制描述符TCD單元。其中,eDMA引擎的功能主要包括源地址和目的地址的計算和實際的數據搬移操作;TCD單元的功能是為每個通道定義傳輸的源地址和目的地址、次循環的大小、單次傳輸的字節量及傳輸方式等信息。
eDMA引擎由如下4個子模塊組成:
①地址路徑模塊。執行傳輸控制描述符的2個通道(通道X和通道Y)的注冊,并處理所有的總線地址計算。被注冊的通道用于裝載從傳輸控制描述符區域讀取的傳輸控制描述符內容。
②數據路徑模塊。執行數據的讀寫,包括16字節的寄存器存儲區域,并支持多種數據排列方式。
③編程模型/通道仲裁模塊。執行eDMA編程模型和通道仲裁。eDMA外部請求輸入和中斷輸出都連接到該模塊。
④控制模塊。提供所有針對eDMA引擎的控制功能,包括對數據讀和寫的匹配。如需要讀取的源數據大小為16位,而目標數據大小為32位,則每2次讀取只需要1次寫入。
傳輸控制描述符區域由如下兩部分組成:
①內存控制器。該邏輯執行必需的雙向端口控制,處理eDMA引擎和內部外圍總線的通道。
②內存陣列。TCD存儲區是一個單端口同步的RAM陣列。每個通道都有1個TCD單元,每個TCD有32字節,由11個寄存器組成。
1.2 eDMA的操作
MCF5329的eDMA有16個數據傳輸通道,每一個通道由一個傳輸控制描述符TCD進行描述。TCD不僅記錄了數據傳輸的源和目的地址,還記錄了當前傳輸地址相對于起始地址的偏移。該偏移由一個主循環(maior loop)和一個次循環(minor loop)來表示。當一個通道在傳輸時,次循環中的數據傳輸完成之后,eDMA引擎中的當前源地址、目的地址和外循環的大小會被寫回TCD存儲區域,并執行通道連接的其他通道傳輸。每一個次循環執行完,當前外循環計數器就會減1;當外循環計數器減為O時,eDMA會向處理器發起一次中斷請求,請求下一次eDMA傳輸的源和目的地址。一次主循環所能傳送的最大字節數由用戶所分配的eDMA緩沖區大小決定。
1.3 eDMA基本數據流
eDMA基本數據流可被劃分為三段。
第一段是通道激活。以外圍硬件請求激活通道為例,eDMA請求輸入信號首先經由控制子模塊進入編程模型和通道仲裁模塊,確定采用固定優先級還是聯合通道仲裁(固定優先級仲裁是先給具有最高優先級的通道服務,聯合通道優先級是先給通道編號最大的通道服務);確定通道后,被確定的通道號通過地址路徑模塊發送并轉換成需要的地址,用于在當地存儲區域中存取傳輸控制描述符TCD;相應的描述符讀取出來后被裝載到地址路徑模塊中的通道X或通道Y寄存器中。
第二段是真正的數據傳輸。源數據被讀取出來臨時,存儲在數據路徑塊中,然后在時鐘的驅動下將數據寫入到目標地址。整個讀寫過程持續到次循環數據結束。
第三段是TCD的更新和中斷請求的發生。一旦一個次循環數據傳輸完畢,數據流就進入第三段。在該段中,地址路徑邏輯會更新相應TCD中的特定區域,如源地址、目標地址和外循環計數。如果外循環計數減為O,則要進行額外的設置,包括最終地址調節。如果在此時有中斷請求發生,需要重新讀取一個新的TCD。
轉載于:https://www.cnblogs.com/kwg123/p/3889432.html
總結
以上是生活随笔為你收集整理的eDMA结构及工作机理的简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts2中ActionContex
- 下一篇: 中医药专家开年会 推荐11种最靠谱的抗癌