在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AXI DMA詳解與應用篇

冬至子 ? 來源:根究FPGA ? 作者:叫什么好呢啊 ? 2023-08-10 12:50 ? 次閱讀

一、DMA簡介

DMA是一種內存訪問技術,允許某些計算機內部的硬件子系統可以獨立的直接讀寫內存,而不需要CPU介入處理,從而不需要CPU的大量中斷負載,否則,CPU需要從來源把每一片段的數據復制到寄存器,然后在把他們再次寫回到新的地方,在這個時間里,CPU就無法執行其他的任務。

DMA是一種快速數據傳送方式,通常用來傳送數據量較多的數據塊。使用DMA時,CPU向DMA控制器發送一個存儲器傳輸請求,這樣當DMA控制器在傳輸的時候,CPU執行其他的操作,傳輸完成時DMA以中斷的方式通知CPU。

DMA傳輸過程的示意圖為:

圖片

DMA的傳輸過程為:

1、為了配置用DMA傳輸數據到存儲器,處理器(Cortex-A9)發出一條指令。

2、DMA控制器把數據從外設傳輸到存儲器或者從存儲器傳輸到存儲器,從而較少CPU處理的事務量。

3、輸出傳輸完成后,向CPU發出一個中斷通知DMA傳輸可以關閉。

為了發起傳輸事務,DMA控制器必須得到以下信息

(1)、源地址——數據被讀出的地址

(2)、目的地址——數據被寫入的地址

(3)、傳輸長度——應傳輸的字節數

二、ZYNQ DMA簡介

ZYNQ提供了兩種DMA,一種是集成在PS中的硬核DMA,另一種是PL中使用的軟核AXI DMA IP。

ARM APU(Application Processor Unit,應用處理單元)設計過程中,已經考慮到大量數據搬移的情況,因此在APU中自帶了一個DMA控制器DAMC,這個DMAC駐留在PS內,而且必須通過駐留在內存中的DMA指令編程,這些程序往往需要CPU準備,因此需要部分的CPU參與。DMAC支持多達8個通道,所以多個DMA結構的核可以掛載在單個DMAC上。

DMAC與PL的連接是通過AXI-GP接口,這個接口最高支持到32位寬,這也限制了這種模式下的傳輸速率,理論上最大為600MB/s,這種模式不占用PL資源,但需要對DMA指令編程,會增加軟件的復雜性。

為了獲取更高的速率,可以空間換時間,在PL中添加AXI DMA IP core,并利用AXI_HP接口完成高速的數據傳輸,各種接口的傳輸比較為:

圖片

圖片

ZYNQ中ACI_HP接口的分布為:

圖片

通過PL的DMA和AXI_HP接口傳輸方式的拓撲圖為:

圖片

DMA的數據傳輸經過S_AXI_HP接口,每一個HP接口都含有控制和數據fifo,這些fifo為大數據量突發傳輸提供緩沖,使得HP成為理想的高速數據接口。

對DMA的控制或配置通過M_AXI_GP接口(M代表master為PS),傳輸狀態通過中斷傳達到PS的中斷控制器。

關于GP接口在米聯客和原子的教程中當時都沒理解太透,現在對M_AXI_GP0理解是:

在ZYNQ7處理器系統IP core中,在PS-PL Configuration下的AXI Non Secure Enablement下有一個GP Master AXI Interface選項,可選一個M_AXI_GP0接口。

該接口的作用是對PL側的IP core通過AXI-Lite總線進行配置,如果不僅需要的話直接不使能即可。

圖片

圖片

、AXI DMA IP****簡介

ZYNQ提供了兩種DMA,一種是集成在PS中的硬核DMA,另一種是PL中使用的軟核AXI DMA IP。

AXI DMA IP核在AXI4-Stream IP接口之間提供高帶寬直接存儲訪問。其可選的scatter gather(SG,鏈式相關)功能還可以從基于處理器的系統中的中央處理單元(CPU)卸載數據搬運任務。初始化、狀態和管理寄存器通過AXI-Lite從接口訪問(即數據發出方為PL,PS為Slave),核心功能組成為(這張圖很有助于理解DMA中斷以及SDK代碼,下面會解釋):

圖片

原圖位于AXI_DMA數據手冊的第五頁。

AXI DMA使用了三種總線,分別是:

(1)、AXI Memory Map,用于內存交互,AXI4 Memory Map Read用于從DMA讀取,AXI4 Memory Map用于向DMA寫入。

(2)、AXI4-Lite同于對寄存器的配置。

(3)、AXI4-Stream接口用于對外設的讀寫,S2MM(Stream to Memory Mapped,數據流向內存映射)用于對外設讀取。AXI_MM2S和AXI_S2MM是AXI_Stream總線,可以發送和接收連續的數據流,無需地址。

AXI DMA提供3種模式:

(1)、Direct Register模式:用于在MM2S和S2MM通道上執行簡單的DMA傳輸,小的FPGA資源少。有兩個通道:一個從Device到DMA,另一個從DMA到Device。應用程序必須設置緩沖區地址和長度字段以啟動相應通道中的傳輸。

(2)、Scatter/Gather模式:允許在單個DMA事務中將數據傳輸到多個存儲區域傳輸數據。

(3)、Cyclic DMA模式:

四、AXI DMA參數與接口分析

圖片

1、接口分析:

(1)、 M_AXI_MM2S :DMA的讀通道,從DDR中讀取數據。受Enable Read Channel控制,表現為M_AXI_MM2S。

(2)、 M_AXI_S2MM :DMA的寫通道,將數據寫入DDR中。受Enable Write Channel控制,表現為M_AXI_S2MM。

(3)、 M_AXIS_MM2S :DMA將數據發送到具有stream接口IP。

(4)、 S_AXIS_S2MM :DMA將數據從具有Stream接口的IP中將數據讀入。

(5)、 mm2s_introut :DMA將數據從DDR的映射單元中讀出,然后將數據發送到具有Stream接口的IP完成信號

(6)、 s2mm_introut :DMA將數據從具有stream接口的IP中讀入,并寫入到內存映射單元的完成中斷信號。

2、參數分析

圖片

(1)、Enable Scatter Gatter Engine

鏈式DMA操作,取消選中該選項可啟用directregister模式操作。

(2)、Enable Micro DMA

改選項會生成高度優化的DMA,資源數量較少,用于傳輸極少量數據的應用程序。

(3)、Width of Buffer Length Register

根據IP手冊pg021,在direct register模式下,此整數值用于指定控制字段緩沖區長度的有效位數,字節數等于2^(width),即字節讀取和字節寫入的有效長度都是2^(width)。比如寬度設置為26,可傳輸的字節數為2^(26)字節。(pg021,78頁)。

(4)、Address Width

指定地址空間的寬度,默認32。

(5)、Enable Read Channel

**Memory Map Data Width** :AXI MM2S存儲映射讀取總線的數據位寬,可為32、64、128、256、512、1024。

Stream Data Width :AXI MM2S AXI-Stream數據總線的位寬,該值必須小于等于Memory Map Data Width,可以為8、16、32、64、128、512、1024。

Max Burst Size :最大突發長度設置,指定的是MM2S的AXI4-Memory Map側的突發周期的最大值,可為2、4、8、16、32、64、128、256。

(6)、Enable Write channel:同Read channel。

3、關于中斷的理解

(1)、 M_AXI_MM2S :DMA的讀通道,從DDR中讀取數據。受Enable Read Channel控制,表現為M_AXI_MM2S。

在AXI_DMA ip core的輸出信號中,有兩個中斷信號,分別是s2mm_introut和mm2s_introut,mm指的是Memory Mapped,S指的是Stream。

Memory Map指的是什么?根據AXI DMA的介紹,AXI DMA提供一個介于AXI4 Memory Mapped 與AXI4 Stream IP之間的高帶寬DMA:

原話位于IP參考的page5:

The AXI DirectMemory Access (AXI DMA) IP core provides high-bandwidth direct memory accessbetween the AXI4 memory mapped and AXI4-Stream IP interfaces.

所以,對于DMA來說,S2MM,就是Stream形式的數據到達DDR映射空間,具體的實現方式是Stream數據流先進入DMA,之后再從DMA到Memeory Mapped。

MM2S是Memory Mapped將數據送入具有AXI Stream接口的IP。

從這里分析mm2s_introut與s2mm_introut信號的區別是分析不出來的,因為數據都是先到DMA,再從DMA發送出去。

在第5頁還有一張圖,講述AXI DMA的架構:

圖片

分析這張圖,DDR內存映射空間的讀寫都是通過AXI4Memory Map完成的,也就是說s2mm與mm2s的重點不在PS DDR側,重點在PL側,當Stream接口的數據將輸出傳到DMA時候,這個過程叫做DMA的接收,DMA將映射單元的數據寫到stream接口的IP,這個過程叫做DMA的發送。

所以!也就可以理解在SDK中將s2mm_introut定義為DMA接收中斷,將mm2s_introut定義為發送中斷了!

所以以下語句就很容易理解了:

// DMA接收通道的中斷ID

#define RX_INTR_ID XPAR_FABRIC_AXIDMA_0_S2MM_INTROUT_VEC_ID

#define TX_INTR_ID XPAR_FABRIC_AXIDMA_0_MM2S_INTROUT_VEC_ID

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19404

    瀏覽量

    230958
  • DDR
    DDR
    +關注

    關注

    11

    文章

    715

    瀏覽量

    65474
  • FIFO存儲
    +關注

    關注

    0

    文章

    103

    瀏覽量

    6030
  • DMA控制器
    +關注

    關注

    1

    文章

    43

    瀏覽量

    12317
  • Zynq處理器
    +關注

    關注

    0

    文章

    2

    瀏覽量

    942
收藏 人收藏

    評論

    相關推薦

    ZYNQ SOC案例開發:AXI DMA使用解析及環路測試

    一、AXI DMA介紹 本篇博文講述AXI DMA的一些使用總結,硬件IP子系統搭建與SDK C代碼封裝參考米聯客ZYNQ教程。若想讓ZYNQ的PS與PL兩部分高速數據傳輸,需要利用P
    的頭像 發表于 12-31 09:52 ?8835次閱讀
    ZYNQ SOC案例開發:<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>使用解析及環路測試

    AMBA_AXI總線詳解

    AMBA_AXI總線詳解
    發表于 04-18 11:48

    如何在ZedBoard中使用AXI DMA核心

    你好最近我一直在研究如何在ZedBoard中使用AXI_DMA核心。我正在使用s2mm通道以分散聚集模式將數據傳輸到DRAM。框圖如下圖所示(基于Mohammadsadegh Sadri Zynq
    發表于 04-09 11:53

    AXI-DMA怎么批量發送數據到DMA

    利用AXI-DMA批量發送數據到DMAinit_intr_sys函數分析
    發表于 03-10 06:57

    AXI接口協議詳解

    1、AXI接口協議詳解  AXI 總線  上面介紹了AMBA總線中的兩種,下面看下我們的主角—AXI,在ZYNQ中有支持三種AXI總線,擁有
    發表于 10-14 15:31

    Adam Taylor玩轉MicroZed系列68:AXI DMA Ⅲ,軟件部分

    上周的博客中我們完成了硬件的搭建,并且把硬件部分導入到SDK,見Adam Taylor’s MicroZed Chronicles Part 67: AXI DMA II,下一步通過寫一個簡單的程序
    發表于 02-08 05:53 ?424次閱讀
    Adam Taylor玩轉MicroZed系列68:<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b> Ⅲ,軟件部分

    Adam Taylor玩轉MicroZed系列67:AXI DMA II

    上周的博客中我們學習了Zynq SoC的AXI DMA,我解釋了怎樣利用AXI DMA控制器將數據從PL搬運到PS。在本期博客中我們將學習怎樣完成硬件的搭建。 首先我們要更深入的了解一
    發表于 02-08 08:10 ?404次閱讀

    從應用角度詳解什么是AXI

    本節介紹的AXI是個什么東西呢,它其實不屬于Zynq,不屬于Xilinx,而是屬于ARM。它是ARM最新的總線接口,以前叫做AMBA,從3.0以后就稱為AXI了。 書上講的AXI比較具體,本節呢不打算落入俗套,從應用角度解釋
    的頭像 發表于 07-13 07:08 ?1.1w次閱讀
    從應用角度<b class='flag-5'>詳解</b>什么是<b class='flag-5'>AXI</b>

    zynq linux AXI DMA傳輸步驟教程詳解

    本文主要介紹zynq linux AXI DMA傳輸步驟教程,具體的跟隨小編一起來了解一下。
    的頭像 發表于 07-08 05:46 ?3.1w次閱讀
    zynq linux <b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>傳輸步驟教程<b class='flag-5'>詳解</b>

    一文詳解ZYNQ中的DMAAXI4總線

    在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三種總線,但PS與PL之間的接口卻只支持前兩種,AXI-Stream只能在PL中實現,不能直接和PS相連,必須通過
    的頭像 發表于 09-24 09:50 ?5416次閱讀
    一文<b class='flag-5'>詳解</b>ZYNQ中的<b class='flag-5'>DMA</b>與<b class='flag-5'>AXI</b>4總線

    你必須了解的AXI總線詳解

    不同類型的DMA GPIO PL general purpose AXI GP AXI utlilizing PS DMAC High performance w/DMA ACP w/
    的頭像 發表于 10-09 18:05 ?7581次閱讀
    你必須了解的<b class='flag-5'>AXI</b>總線<b class='flag-5'>詳解</b>

    ZYNQ中DMAAXI4總線

    ZYNQ中DMAAXI4總線 為什么在ZYNQ中DMAAXI聯系這么密切?通過上面的介紹我們知道ZYNQ中基本是以AXI總線完成相關功能
    的頭像 發表于 11-02 11:27 ?4383次閱讀
    ZYNQ中<b class='flag-5'>DMA</b>與<b class='flag-5'>AXI</b>4總線

    Petalinux加速axi-dma內核驅動緩沖區讀過程

    Petalinux 加速axi-dma內核驅動緩沖區讀過程
    的頭像 發表于 02-16 16:21 ?3668次閱讀
    Petalinux加速<b class='flag-5'>axi-dma</b>內核驅動緩沖區讀過程

    Xilinx FPGA里面的AXI DMA IP核的簡單用法

    本文以浮點數Floating-point IP核將定點數轉換為浮點數為例,詳細講解AXI DMA IP核的使用方法。
    的頭像 發表于 02-16 16:21 ?9913次閱讀
    Xilinx FPGA里面的<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b> IP核的簡單用法

    ZYNQ基礎---AXI DMA使用

    Xilinx官方也提供有一些DMA的IP,通過調用API函數能夠更加靈活地使用DMA。 1. AXI DMA的基本接口 axi
    的頭像 發表于 01-06 11:13 ?457次閱讀
    ZYNQ基礎---<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>使用
    主站蜘蛛池模板: 天天狠狠操 | 天天摸夜夜添夜夜添国产 | 欧美一区二区三区高清视频 | 五月婷婷婷婷 | 99久久久免费精品免费 | 中日韩黄色大片 | 亚洲第一视频网 | 黄色录像日本 | jizz性欧美12 | 日本拍拍| 免费在线观看大片影视大全 | 欧美在线精品一区二区三区 | 国产一区二区三区不卡观 | 伊人亚洲综合网成人 | 亚洲免费视频观看 | 国产2021成人精品 | 欧美一级乱理片免费观看 | 丁香六月纪婷婷激情综合 | 久久精品国产亚洲aa | 91激情在线 | 色综合天天综合网站中国 | 免费观看黄a一级视频 | 国产性猛交xx乱 | 亚洲qingse中文在线 | 一级毛片一级黄片 | 91视频三级 | 欧美激欧美啪啪片免费看 | 午夜小视频男女在线观看 | 一级看片免费视频 | 成视频年人黄网站免费视频 | 天堂色综合 | 一二三四日本视频社区 | 欧美在线高清视频 | 真爽~张开腿~让我插 | 亚洲一区二区三区免费看 | 扒开双腿疯狂进出爽爽爽 | 伊人网成人| a毛片网站 | ts视频在线观看 | 国产精品臀控福利在线观看 | 四虎永久精品免费网址大全 |