0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文詳解ZYNQ中的DMA與AXI4總線

OpenFPGA ? 來源:CSDN博客 ? 作者:CSDN博客 ? 2020-09-24 09:50 ? 次閱讀

ZYNQ中DMA與AXI4總線

為什么在ZYNQ中DMA和AXI聯(lián)系這么密切?通過上面的介紹我們知道ZYNQ中基本是以AXI總線完成相關(guān)功能的:

圖4?34 連接 PS 和 PL 的 AXI 互聯(lián)和接口的構(gòu)架

在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三種總線,但PS與PL之間的接口卻只支持前兩種,AXI-Stream只能在PL中實(shí)現(xiàn),不能直接和PS相連,必須通過AXI-Lite或AXI4轉(zhuǎn)接。PS與PL之間的物理接口有9個(gè),包括4個(gè)AXI-GP接口和4個(gè)AXI-HP接口、1個(gè)AXI-ACP接口。

Xilinx提供的從AXI到AXI-Stream轉(zhuǎn)換的IP核有:AXI-DMA,AXI-Datamover,AXI-FIFO-MM2S以及AXI-vDMA等

AXI-DMA:實(shí)現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HP<---->AXI-Stream的轉(zhuǎn)換

AXI-FIFO-MM2S:實(shí)現(xiàn)從PS內(nèi)存到PL通用傳輸通道AXI-GP<----->AXI-Stream的轉(zhuǎn)換

AXI-Datamover:實(shí)現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HP<---->AXI-Stream的轉(zhuǎn)換,只不過這次是完全由PL控制的,PS是完全被動的。

AXI-VDMA:實(shí)現(xiàn)從PS內(nèi)存到PL高速傳輸高速通道AXI-HP<---->AXI-Stream的轉(zhuǎn)換,只不過是專門針對視頻、圖像等二維數(shù)據(jù)的。

除了上面的還有一個(gè)AXI-CDMA IP核,這個(gè)是由PL完成的將數(shù)據(jù)從內(nèi)存的一個(gè)位置搬移到另一個(gè)位置,無需CPU來插手。

上面的IP是完成總線協(xié)議轉(zhuǎn)換,如果需要做某些處理(如變換、迭代、訓(xùn)練……),則需要生成一個(gè)自定義Stream類型IP,與上面的Stream接口連接起來,實(shí)現(xiàn)數(shù)據(jù)輸入輸出。用戶的功能在自定義Stream類型IP中實(shí)現(xiàn)。

綜上,在ZYNQ中DMA和AXI是不可分割的兩者,所以介紹DMA也是必須的。

1.1.1DMA簡介

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

DMA是一種快速數(shù)據(jù)傳送方式,通常用來傳送數(shù)據(jù)量較多的數(shù)據(jù)塊。使用DMA時(shí),CPU向DMA控制器發(fā)送一個(gè)存儲器傳輸請求,這樣當(dāng)DMA控制器在傳輸?shù)臅r(shí)候,CPU執(zhí)行其他的操作,傳輸完成時(shí)DMA以中斷的方式通知CPU。

DMA傳輸過程的示意圖為:

圖4?35 DMA傳輸過程的示意圖

DMA的傳輸過程為:

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

2、DMA控制器把數(shù)據(jù)從外設(shè)傳輸?shù)酱鎯ζ骰蛘邚拇鎯ζ鱾鬏數(shù)酱鎯ζ?,從而較少CPU處理的事務(wù)量。

3、輸出傳輸完成后,向CPU發(fā)出一個(gè)中斷通知DMA傳輸可以關(guān)閉。

為了發(fā)起傳輸事務(wù),DMA控制器必須得到以下信息

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

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

(3)、傳輸長度——應(yīng)傳輸?shù)淖止?jié)數(shù)

我們可以理解,無論是程序控制方式還是中斷控制方式,數(shù)據(jù)的傳輸都必須經(jīng)過處理器。而在一個(gè)嵌入式微處理器為主控的應(yīng)用系統(tǒng)中,當(dāng)有大量數(shù)據(jù)在存儲器和外設(shè)之間傳輸時(shí),采用程序控制方式顯然不合適,但是若采用中斷控制方式,會造成中斷次數(shù)過于頻繁,不僅速度上不去,還需要處理器及時(shí)干預(yù)進(jìn)行處理,大大降低了工作的效率。

然而,使用DMA的好處就是它不需要CPU的干預(yù)而直接服務(wù)外設(shè),這樣CPU就可以去處理別的事務(wù),從而提高系統(tǒng)的效率,對于慢速設(shè)備,其作用只是降低CPU的使用率,但對于高速設(shè)備,它不只是降低CPU的使用率,而且能大大提高硬件設(shè)備的吞吐量。因?yàn)閷τ谶@種設(shè)備,CPU直接供應(yīng)數(shù)據(jù)的速度太低。因CPU只能一個(gè)總線周期最多存取一次總線,而且對于處理器,它不能把內(nèi)存中A地址的值直接搬到B地址。它只能先把A地址的值搬到一個(gè)寄存器,然后再從這個(gè)寄存器搬到B地址。也就是說,對于處理器,要花費(fèi)兩個(gè)總線周期才能將A地址的值送到B地址。而DMA就不同了,一般系統(tǒng)中的DMA都有突發(fā)(Burst)傳輸?shù)哪芰?,在這種模式下,DMA能一次傳輸幾個(gè)甚至幾十個(gè)字節(jié)的數(shù)據(jù),所以使用DMA能使設(shè)備的吞吐能力大為增強(qiáng)。

鑒于上面的優(yōu)勢,系統(tǒng)中使用DMA是必要的,能夠提高數(shù)據(jù)吞吐量,減輕了CPU的負(fù)擔(dān),使得整個(gè)系統(tǒng)的性能得到提高。

說了這么多優(yōu)點(diǎn),那么DMA缺點(diǎn)是什么呢?DMA傳送期間CPU被掛起,部分或完全失去對系統(tǒng)總線的控制,這可能會影響CPU對中斷請求的及時(shí)響應(yīng)與處理。因此,在一些小系統(tǒng)或速度要求不高、數(shù)據(jù)傳輸量不大的系統(tǒng)中,一般并不用DMA方式。因?yàn)镈MA允許外設(shè)直接訪問內(nèi)存,從而形成對總線的獨(dú)占。這在實(shí)時(shí)性強(qiáng)的硬實(shí)時(shí)系統(tǒng)嵌入式開發(fā)中將會造成中斷延時(shí)過長。

DMAC為DMA控制器

DMA傳送雖然脫離CPU的控制,但并不是說DMA傳送不需要進(jìn)行控制和管理。通常是采用DMA控制器來取代CPU,負(fù)責(zé)DMA傳送的全過程控制。目前DMA控制器都是可編程的大規(guī)模集成芯片。

圖4?36 DMAC結(jié)構(gòu)

DMA控制器是內(nèi)存儲器同外設(shè)之間進(jìn)行高速數(shù)據(jù)傳送時(shí)的硬件控制電路,是一種實(shí)現(xiàn)直接數(shù)據(jù)傳送的專用處理器,它必須能取代在程序控制傳送中由CPU和軟件所完成的各項(xiàng)功能。它的主要功能是:

(1)DMAC同外設(shè)之間有一對聯(lián)絡(luò)信號線--外設(shè)的DMA請求信號DREQ以及 DMAC向外設(shè)發(fā)出的DMA響應(yīng)信號DACK;(如下圖)
(2)DMAC在接收到DREQ后,同CPU之間也有一對聯(lián)絡(luò)信號線--DMAC向CPU 發(fā)出總線請求信號(HOLD或BUSRQ),CPU在當(dāng)前總線周期結(jié)束后向DMAC發(fā)出總線響應(yīng)信號(HLDA或BUSAK),DMAC接管對總線的控制權(quán),進(jìn)入DMA操作方式;
(3)能發(fā)出地址信息,對存儲器尋址,并修改地址指針,DMAC內(nèi)部必須有能自動加1或減1的地址寄存器;
(4)能決定傳送的字節(jié)數(shù),并能判斷DMA傳送是否結(jié)束。DMA內(nèi)部必須有能自動減1的字計(jì)數(shù)寄存器,計(jì)數(shù)結(jié)束產(chǎn)生終止計(jì)數(shù)信號;
(5)能發(fā)出DMA結(jié)束信號,釋放總線,使CPU恢復(fù)總線控制權(quán);
(6)能發(fā)出讀、寫控制信號,包括存儲器訪問信號和I/O訪問信號。DMAC內(nèi)部必須有時(shí)序和讀寫控制邏輯。

圖4?37 DMAC在DMA中的作用示意圖(一)

圖4?38 DMAC在DMA中的作用示意圖(二)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    561

    瀏覽量

    100587
  • AXI4總線
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    1386

原文標(biāo)題:ZYNQ中DMA與AXI4總線-DMA簡介

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Xilinx zynq AXI總線全面解讀

    AXI (Advanced eXtensible Interface) 本是由ARM公司提出的總線協(xié)議, Xilinx從 6 系列的 FPGA 開始對 AXI
    的頭像 發(fā)表于 12-04 12:22 ?7146次閱讀
     Xilinx <b class='flag-5'>zynq</b> <b class='flag-5'>AXI</b><b class='flag-5'>總線</b>全面解讀

    ZYNQ SOC案例開發(fā):AXI DMA使用解析及環(huán)路測試

    、AXI DMA介紹 本篇博講述AXI DMA
    的頭像 發(fā)表于 12-31 09:52 ?8667次閱讀
    <b class='flag-5'>ZYNQ</b> SOC案例開發(fā):<b class='flag-5'>AXI</b> <b class='flag-5'>DMA</b>使用解析及環(huán)路測試

    如何使用AXI VIP在AXI4(Full)主接口中執(zhí)行驗(yàn)證和查找錯誤

    AXI 基礎(chǔ)第 2 講 文中,曾提到賽靈思 Verification IP (AXI VIP) 可用作為 AXI 協(xié)議檢查工具。在本次
    發(fā)表于 07-08 09:31 ?2911次閱讀

    看看在SpinalHDLAXI4總線互聯(lián)IP的設(shè)計(jì)

    ,ar)共用組信號的接口(arw,w,b,r)。關(guān)于總線互聯(lián)的設(shè)計(jì)凡是設(shè)計(jì)中用到Axi4總線的設(shè)計(jì)總離不開總線互聯(lián)。在Xilinx FPG
    發(fā)表于 08-02 14:28

    AXI接口協(xié)議詳解

    1、AXI接口協(xié)議詳解  AXI 總線  上面介紹了AMBA總線的兩種,下面看下我們的主角—
    發(fā)表于 10-14 15:31

    Adam Taylor玩轉(zhuǎn)MicroZed系列67:AXI DMA II

    上周的博客我們學(xué)習(xí)了Zynq SoC的AXI DMA,我解釋了怎樣利用AXI DMA控制器將數(shù)
    發(fā)表于 02-08 08:10 ?386次閱讀

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

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

    AXI4接口協(xié)議的基礎(chǔ)知識

    AXI-4 Memory Mapped也被稱之為AXI-4 Full,它是AXI4接口協(xié)議的基礎(chǔ),其他AXI4接口是該接口的變形??傮w而言,AXI-
    的頭像 發(fā)表于 09-23 11:20 ?6077次閱讀
    <b class='flag-5'>AXI4</b>接口協(xié)議的基礎(chǔ)知識

    ZYNQDMAAXI4總線

    ZYNQDMAAXI4總線 為什么在ZYNQ
    的頭像 發(fā)表于 11-02 11:27 ?4339次閱讀
    <b class='flag-5'>ZYNQ</b><b class='flag-5'>中</b><b class='flag-5'>DMA</b>與<b class='flag-5'>AXI4</b><b class='flag-5'>總線</b>

    深入AXI4總線握手機(jī)制

    本系列我想深入探尋 AXI4 總線。不過事情總是這樣,不能我說想深入就深入。當(dāng)前我對 AXI總線的理解尚談不上深入。但我希望通過系列文章,
    發(fā)表于 03-17 21:40 ?25次下載
    深入<b class='flag-5'>AXI4</b><b class='flag-5'>總線</b><b class='flag-5'>一</b>握手機(jī)制

    深入 AXI4總線 (四):RAM 讀取實(shí)戰(zhàn)

    本系列我想深入探尋 AXI4 總線。不過事情總是這樣,不能我說想深入就深入。當(dāng)前我對 AXI總線的理解尚談不上深入。但我希望通過系列
    發(fā)表于 02-07 11:36 ?4次下載
    深入 <b class='flag-5'>AXI4</b><b class='flag-5'>總線</b> (四):RAM 讀取實(shí)戰(zhàn)

    AXI4AXI4-Lite 、AXI4-Stream接口

    AXI4種高性能memory-mapped總線,AXI4-Lite是只簡單的、低通量的memory-mapped
    的頭像 發(fā)表于 07-04 09:40 ?8603次閱讀

    Xilinx FPGA AXI4總線)介紹【AXI4】【AXI4-Lite】【AXI-Stream】

    從 FPGA 應(yīng)用角度看看 AMBA 總線AXI4 總線。
    發(fā)表于 06-21 15:21 ?2285次閱讀
    Xilinx FPGA <b class='flag-5'>AXI4</b><b class='flag-5'>總線</b>(<b class='flag-5'>一</b>)介紹【<b class='flag-5'>AXI4</b>】【<b class='flag-5'>AXI4</b>-Lite】【<b class='flag-5'>AXI</b>-Stream】

    漫談AMBA總線-AXI4協(xié)議的基本介紹

    本文主要集中在AMBA協(xié)議AXI4協(xié)議。之所以選擇AXI4作為講解,是因?yàn)檫@個(gè)協(xié)議在SoC、IC設(shè)計(jì)應(yīng)用比較廣泛。
    發(fā)表于 01-17 12:21 ?2408次閱讀
    漫談AMBA<b class='flag-5'>總線</b>-<b class='flag-5'>AXI4</b>協(xié)議的基本介紹

    SoC設(shè)計(jì)總線協(xié)議AXI4AXI3的主要區(qū)別詳解

    AXI4AXI3是高級擴(kuò)展接口(Advanced eXtensible Interface)的兩個(gè)不同版本,它們都是用于SoC(System on Chip)設(shè)計(jì)總線協(xié)議,用于處
    的頭像 發(fā)表于 05-10 11:29 ?6732次閱讀
    SoC設(shè)計(jì)<b class='flag-5'>中</b><b class='flag-5'>總線</b>協(xié)議<b class='flag-5'>AXI4</b>與<b class='flag-5'>AXI</b>3的主要區(qū)別<b class='flag-5'>詳解</b>