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





