Zynq-7000系列DMA控制器簡介
掃描二維碼
隨時隨地手機看文章
DMA 控制器簡介
DMA 控制器 (DMAC) 使用以 CPU_2x 時鐘速率運行的 64 位 AXI 主接口來執(zhí)行與系統(tǒng)存儲器和 PL 外設(shè)之間的 DMA 數(shù)據(jù)傳輸,傳輸由 DMA 指令執(zhí)行引擎控制, DMA 引擎在一個小指令集上運行,該指令集提供了一種指定 DMA 傳輸?shù)撵`活方法,這種方法提供了比 DMA 控制器方法更大的靈活性。
DMA 引擎的程序代碼由軟件寫入系統(tǒng)內(nèi)存區(qū)域,控制器使用其 AXI 主接口訪問該區(qū)域, DMA 引擎指令集包括用于 DMA 傳輸?shù)闹噶詈陀糜诳刂葡到y(tǒng)的管理指令。
控制器最多可配置 8 個 DMA 通道,每個通道對應(yīng)一個運行在 DMA 引擎處理器上的線程。當 DMA 線程執(zhí)行加載或存儲指令時,DMA 引擎將內(nèi)存請求推送到相關(guān)的讀取或?qū)懭腙犃小?
DMA 控制器使用這些隊列來緩沖 AXI 讀/寫事務(wù),控制器包含一個多通道 FIFO (MFIFO),用于在 DMA 傳輸期間存儲數(shù)據(jù)。
在 DMA 引擎處理器上運行的程序代碼將 MFIFO 視為包含一組用于 DMA 讀取和寫入事務(wù)的深度可變的并行 FIFO,程序代碼必須管理 MFIFO,以便所有 DMA FIFO 的總深度不超過 1024 字節(jié)的 MFIFO。
DMAC 能夠在沒有處理器干預(yù)的情況下移動大量數(shù)據(jù),源內(nèi)存和目標內(nèi)存可以位于系統(tǒng)中的任何位置(PS 或 PL), DMAC 的存儲器映射包括 DDR、OCM、線性尋址 Quad-SPI 讀存儲器、SMC 存儲器和 PL 外設(shè)或連接到 M_GP_AXI 接口的存儲器。
PS 存儲器傳輸?shù)牧髁靠刂品椒ㄊ褂?AXI 互連,對 PL 外設(shè)的訪問可以使用 AXI 流控制或 DMAC 的 PL 外設(shè)請求接口,沒有指向 PS I/O 外設(shè) (IOP) 的外設(shè)請求接口,對于 PL 外設(shè) AXI 事務(wù),在 CPU 上運行的軟件以使用中斷或狀態(tài)輪詢的編程 IO 方法使用。
控制器有兩組控制和狀態(tài)寄存器,一組可在安全模式下訪問,另一組可在非安全模式下訪問。軟件通過控制器的 32 位 APB 從接口訪問這些寄存器,整個控制器在安全或非安全模式下運行;沒有基于通道的模式混合,安全配置更改由 slcr 寄存器控制,需要控制器復(fù)位才能生效。
DMA 控制器 特點
DMA 控制器提供:
-
DMA 引擎處理器,具有用于 DMA 傳輸?shù)撵`活指令集:
- 靈活的分散-聚集內(nèi)存?zhèn)鬏?
- 完全控制源和目標的尋址
- 定義 AXI 事務(wù)屬性
- 管理字節(jié)流
-
八個高速緩存線,每個高速緩存線是四個字寬
-
八個并發(fā) DMA 通道線程
- 允許多個線程并行執(zhí)行
- 發(fā)出最多 8 個讀取和最多 8 個寫入 AXI 事務(wù)的命令
-
對 PS 中斷控制器和 PL 的八個中斷
-
DMA 引擎程序代碼中的八個事件
-
128(64 位)字 MFIFO 用于緩沖控制器在傳輸期間寫入或讀取的數(shù)據(jù)
-
安全
- 專用的 APB 從機接口,用于安全寄存器訪問
- 整個控制器配置為安全或非安全
-
內(nèi)存到內(nèi)存 DMA 傳輸
-
四個 PL 外設(shè)請求接口,用于管理進出 PL 邏輯的流量控制
- 每個接口最多接受四個活動請求
DMA系統(tǒng)視圖
DMA 模塊的系統(tǒng)視點圖如圖所示
DMA控制器小結(jié)
DMA(Direct Memory Access,直接存儲器訪問) 是所有現(xiàn)代電腦的重要特色,它允許不同速度的硬件裝置來溝通,而不需要依賴于 CPU 的大量中斷負載,應(yīng)用廣泛。





