AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)

这篇具有很好参考价值的文章主要介绍了AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、AXI——高级可扩展接口(UG1037)

参考资源:

  • 【SDK篇_58~62_AXI接口简介【Xilinx】+【Vivado】+【AXI4总线】+【FPGA】-哔哩哔哩】 关于AXI握手过程都讲解的很细致
  • ug1037(三种AXI的介绍,相关AXI IP的介绍) IHI0022D(握手过程的详细介绍)
  • FPGA_HP:AXI4的学习与使用1——基础知识积累 这个博主写的其他内容也不错
  • 从零学习AXI4总线(二):AXI4-Stream 介绍
  • 带你快速入门AXI4总线–AXI4-Stream篇(1)----AXI4-Stream总线

1、AXI接口介绍

AXI是ARM AMBA的一部分。AMBA:开放的片内互联的总线标准,能在多主机设计中实现多个控制器和外围设备之间的连接和管理。AMBA AXI协议规范在(IHI0022D)中,详细介绍了AXI的端口
AXI4 接口 (AMBA 4.0) 分 3 种类型:
AXI4 (AXI4-Full):用于满足高性能存储器映射需求。
存储器映射:主机在对从机进行读写操作时,指定一个目标地址,这个地址对应系统存储空间的地址,表示对该空间进行读写操作。
AXI4-Lite:用于简单的低吞吐存储器映射通信(例如,往来于状态寄存器的通信)。
简化版的AXI4接口,AXI4支持突发256,AXI-Lite支持单次传输一个数据,不支持突发
AXI4-Stream(ST):用于高速流传输数据。

  AXI4-Stream跟AXI4的区别在于AXI4-Stream没有地址接口,这样就不涉及读写数据的概念了,只有简单的发送与接收说法,减少了延时,允许无限制的数据突发传输规模。AXI4-Stream的核心思想在于流式处理数据。 带你快速入门AXI4总线–AXI4-Stream篇(1)----AXI4-Stream总线
  PS与PL间的接口,如GP、HP和ACP都只支持AXI_Lite和AXI_Full协议,并不支持AXI_Stream协议,需要进行协议转换后,才能进行相应的对接

2、各总线构成

参考AXI_Lite 总线详解
首先说AXI4总线和AXI4-Lite总线具有相同的组成部分:

(1)读地址通道,包含ARVALID, ARADDR, ARREADY信号;

(2)读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;

(3)写地址通道,包含AWVALID,AWADDR, AWREADY信号;

(4)写数据通道,包含WVALID, WDATA,WSTRB, WREADY信号;

(5)写应答通道,包含BVALID, BRESP, BREADY信号;

(6)系统通道,包含:ACLK,ARESETN信号。

AXI4总线和AXI4-Lite总线的信号也有他的命名特点

读地址信号都是以AR开头(A:address;R:read)

写地址信号都是以AW开头(A:address;W:write)

读数据信号都是以R开头(R:read)

写数据信号都是以W开头(W:write)

应答型号都是以B开头(B:back(answer back))

了解到总线的组成部分以及命名特点,那么在后续的实验中您将逐渐看到他们的身影。每个信号的作用暂停不表,放在后面一一介绍。

AXI4-Stream总线的组成有:

(1)ACLK信号:总线时钟,上升沿有效;

(2)ARESETN信号:总线复位,低电平有效

(3)TREADY信号:从机告诉主机做好传输准备;

(4)TDATA信号:数据,可选宽度32,64,128,256bit

(5)TSTRB信号:每一bit对应TDATA的一个有效字节,宽度为TDATA/8

(6)TLAST信号:主机告诉从机该次传输为突发传输的结尾;

(7)TVALID信号:主机告诉从机数据本次传输有效;

(8)TUSER信号 :用户定义信号,宽度为128bit。

对于AXI4-Stream总线命名而言,除了总线时钟和总线复位,其他的信号线都是以T字母开头,后面跟上一个有意义的单词,看清这一点后,能帮助读者记忆每个信号线的意义。如TVALID = T+单词Valid(有效),那么读者就应该立刻反应该信号的作用。每个信号的具体作用,在后面分析源码时再做分析
带你快速入门AXI4总线–AXI4-Lite篇(1)----AXI4-Lite总线 孤独的单刀
vivado axi接口,硬件,fpga开发,ip

3、AXI4-Stream握手信号

从零学习AXI4总线(二):AXI4-Stream 介绍
AXI4-Stream协议的信号接口如下
vivado axi接口,硬件,fpga开发,ip
  系统时钟和复位不用说,
  传输数据类里就涉及一个握手协议,即在主从双方数据通信前,有一个握手的过程。基本内容:数据的传输源会产生“VALID”信号,来指明何时数据有效或控制信息有效。而在目标源一方,会产生“READY”信号,来指明已经准备好接受数据或控制信息。当“VALID”信号和“READY”信号同时为高时,就会发生数据传输。根据两个信号变高的时间不同,会出现三种传输的情况。但实际中,“写数据或地址信道”只有“先拉高VAILID,后等待READY”这种情况能工作,其他情况一般通过不了。所以,平时按照第一种情况来进行开发设计就OK了。参考:FPGA_HP:AXI4的学习与使用1——基础知识积累
  数据修饰类:AXI4-Stream传输的数据流包含三种类型:data type、position type、null type。data type是最有意义的数据;position type 作为占位符使用,可以用来表征date type 的相对位置,null type不包含任何有用的信息。这里面是一个小框代表8bit的一个字节,TKEEP和TSTRB告诉我们每个字节是3个中的哪一个类型。
vivado axi接口,硬件,fpga开发,ip
3

二、AXI Interconnect(vivado中的一个IP)

vivado axi接口,硬件,fpga开发,ip

这个IP的作用是提供将“一个或多个”AXI主设备连接到“一个或多个”AXI从设备的一种交换机制(有解码路由等概念),通常我们Add了AXI的IP并进行连线后,都会自动加上这个IP,这个IP有详细一个文档去介绍,可以查阅PG059。另外SmartConnect IP也可以实现这个功能。FPGA_HP:AXI4的学习与使用1——基础知识积累 文中有使用这个IP的例子,就是主从设备相连
但要注意这个ip不能用于连接AXI4-Stream接口,stream接口要用 AXI4-Stream Interconnect core IP (axis_interconnect)

AXI4 AXI4-Lite都包含5个独立的通道,读写可同时双向传输,具体读写过程见ug1037
vivado axi接口,硬件,fpga开发,ip
IP核的S_AXI接口展开之后,可以看到所有的端口,下图5组对应上述的5个通道,aw写地址、w写数据、b写响应、ar读地址、r读数据
vivado axi接口,硬件,fpga开发,ip

  • 数据流和地址映射的转换用的是DMA
    vivado axi接口,硬件,fpga开发,ip

三、DMA

数据流和地址映射的转换用的是DMA
以Xilinx家的DMA控制器(英文全称:AXI Direct Memory Access)的读取功能(Read Channel)为例,它能够通过AXI总线读取某个地址区间的数据,同时再将这些数据转换以数据流的形式传输至处理单元。可以在不在CPU干涉的情况下进行数据的搬运。
vivado axi接口,硬件,fpga开发,ip
vivado axi接口,硬件,fpga开发,ip
Buffer Length最大位宽为26,对应的单次传输大小最大为64MByte

普通模式的DMA对于解决简单的数据传输,完全能够应付。但是当面向大规模数据(单次传输>64MByte),或需要操作的地址不连续时,普通模式的DMA不能够满足要求,即便能够将大规模数据分割为多个<64MByte的片段,但是这个过程需要额外的处理器(例如ARM/NIOS/MicroBlaze/RISC-V)进行查询监测,或者启用中断函数,这样额外的消耗了处理器性能(我们期望的是一次配置,永久使用)。对于这样的问题,通常启用该IP核的高级功能——Scatter Gather (SG) Engine模式,虽然单个传输片段依然有64MByte的限制(取决于Buffer Length Width),但是我们可以把一片>64MByte的数据划分为多个<64MByte的区域来解决。并且在此基础上,我们需要传输的数据有多个地址不连续的片段,同样也能够完美解决。其中开启Scatter Gather Engine后,IP核的接口如下图所示。与普通模式的DMA相比,多了一根M_AXI_SG总线
基于Xilinx FPGA的AXI Direct Memory Access (Scatter Gather Engine模式) 行为分析及软件操作流程
主要讲的是sc模式的DMA及工程实践

FPGA Vivado AXI _DMA IP介绍参考《pg021》写的性能接口介绍

四、PCIe XDMA

Xilinx PCIe XDMA使用指南
为什么使用PCIe传输
在FPGA需要和处理器打交道时,PCIe具有很多优势。

(PCIE学习应用教程)1.使用XDMA测试FPGA与PC通信讲了三种方式和xdma的配置

Xilinx的Vivado中,有三种方式可以实现PCIE功能,分别为:

1、调用7 Series Integrated Block for PCI Express IP核,这是最基础的PCIE IP核,使用起来较复杂。
2、调用AXI Memory Mapped To PCI Express IP核,对7 Series Integrated Block for PCI Express进一步封装,可以使用Example Design直接运行;但需要添加DMA IP核实现DMA数据传输。
3、调用DMA/Bridge Subsystem for PCI Express (PCIe) IP核,别名XDMA,对PCIE和DMA一起进行了封装,也可以直接使用Example Design直接运行。
vivado axi接口,硬件,fpga开发,ip
下图的其他模块和接口都是自动出来的
vivado axi接口,硬件,fpga开发,ip

五、DDR

资料参考

1、Xilinx FPGA平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了这篇写的很全面详细

2、快速上手Xilinx DDR3 IP核----汇总篇(MIG) 该系列介绍了Xilinx 控制DDR3的IP核----MIG IP核的基本构成和使用方法,在MIG 接口的基础上在外部封装了FIFO,使得操作时序更加简单,并用此方法实现了几个练手的小项目。

3、FPGA ——DDR基础概念详解_居安士的博客读写操作引脚有详细说明

4、DDR全接口说明: 知乎:基于FPGA的DDR3设计(3)MIG IP核的使用教程

5、
vivado axi接口,硬件,fpga开发,ip

DDR SDRAM介绍

DDR=Double Data Rate双倍速率,DDR SDRAM=双倍速率同步动态随机存储器,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。
vivado axi接口,硬件,fpga开发,ip

SDR SDRAM采用单端(Single-Ended)时钟信号, 在一个时钟周期内只传输一次数据;而 DDR由于工作频率比较快,采用可降低干扰的差分时钟信号作为同步时钟。在一个时钟周期内可以传输两次数据,它能够在的DQS上升沿和和下降沿各传输一次数据。

相对比于DDR,DDR2的时钟加速,是DDR的两倍,DDR3的时钟是DDR的四倍

DDR存储机制

DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑Bank(Logical Bank,下面简称Bank)。

目前DDR3内存芯片基本上都是8个Bank设计,也就是说一共有8个这样的“表格”。

MIG ip核

MIG(Memory Interface Generators) IP 核是 Xilinx 公司针对 DDR 存储器开发的 IP,里面集成存储器控制模块,实现 DDR 读写操作的 控制流程。MIG IP 核对外分出了两组接口,左侧是用户接口,就是 用户(FPGA)同 MIG 交互的接口,用户只有充分掌握了这些接口才能操作 MIG。右侧为 DDR 物理芯片 接口,负责产生具体的操作时序,并直接操作芯片管脚。这一侧用户只负责分配正确的管脚,其他不用关心。

MIG IP核对外提供了两类接口:Native接口和AXI4接口,把我们从DDR3芯片自身复杂的接口和时序中解放了出来。 Native接口比较简单,而且效率很高,但是不如AXI4接口通用性强。本次工程中使用的是AXI4接口。

基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL)有下图和ip核的对应配置
vivado axi接口,硬件,fpga开发,ip
下面介绍MIG在vivado中调用时的配置,前面简单的就不说了,重点来说时钟设置。
以下内容大多参考:FPGA——调用DDR的IP核(MIG核)
这个讲解的更详细:快速上手Xilinx DDR3 IP核(1)----MIG IP核的介绍及配置(Native接口)有ip核的接口介绍和配置介绍 。其中提到:Clock Period:DDR3 芯片运行时钟周期,这里选400M,实际传输频率800M(上下沿双触发)?那用户4:1是100?

1、DDR的ddr_ck与用户的ui_clk

vivado axi接口,硬件,fpga开发,ip
上图中的800MHZ是由MIG核送给FPGA外的DDR3芯片的

2、给MIG ip核的输入时钟与参考时钟

※DDR输入时钟:此处选择的时**提供给MIG核的时钟**
vivado axi接口,硬件,fpga开发,ip
建议选择200MHZ和参考时钟(固定为200MHZ)相同
注意,这个地方只选了输入时钟的频率,并没有让选输入时钟的形式,输入时钟形式在下一页面选择

下面就是※MIG核输入时钟的形式选择
vivado axi接口,硬件,fpga开发,ip

输入MIG核的时钟可以从FPGA外部直接给,也可以从FPGA内部给,如果时钟从外部给,那么可以选择差分,如果时钟从内部给,那么选no buffer(没有buffer计)或者单端。

下图为※MIG参考时钟(为200MHZ)
vivado axi接口,硬件,fpga开发,ip
这里面的四个时钟(DDR芯片时钟,DDR输入时钟,DDR参考时钟,用户时钟)是非常叫人迷惑的,下面画张图帮助理解
vivado axi接口,硬件,fpga开发,ip

3、数据位宽?(待研究)

vivado axi接口,硬件,fpga开发,ip
vivado axi接口,硬件,fpga开发,ip
vivado axi接口,硬件,fpga开发,ip文章来源地址https://www.toymoban.com/news/detail-820521.html

到了这里,关于AXI三种接口及DMA DDR XDMA介绍(应用于vivado中的ip调用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DDR3 控制器 MIG IP 详解完整版 (AXI4&VIVADO&Verilog)

    DDR系列文章分类地址: (1)DDR3 基础知识分享 (2)DDR3 控制器 MIG IP 详解完整版 (AXI4VivadoVerilog) (3)DDR3 控制器 MIG IP 详解完整版 (nativeVivadoVerilog) (4)基于 DDR3 的串口传图帧缓存系统设计实现 (5)基于 DDR3 的native接口串口局部传图缓存系统设计实现 (6)基于 DDR3 的

    2024年02月11日
    浏览(51)
  • DDR3(AXI接口例程)知识点笔记

    本文以7035开发板中的DDR3master例程对DDR3中所涉及的知识点梳理下笔记。 ① DDR支持的突发长度是2,4,8 。即如果芯片的数据位宽是16bit的话那么接口数据位宽是32bit,64bit以及128bit。因为 L-Bank一次就存取两倍于芯片位宽的数据,所以芯片至少也要进行两次传输才可以。我认为芯片

    2024年02月13日
    浏览(48)
  • FPGA-基于AXI4接口的DDR3读写顶层模块

    AXI4(Advancede Xtensible Interface 4)是一种高性能、高带宽的总线接口协议,用于在系统级芯片设计中连接不同的IP核(Intellectual Property)或模块。它是由ARM公司开发的,被广泛应用于各种SoC(System-on-Chip)设计中。 AXI4接口协议定义了一组规范,用于描述数据传输、地址传输、控

    2024年04月15日
    浏览(58)
  • zynq 使用AXI_dma 传输==pl到ps,linux驱动开发,应用层处理DMA数据

    在使用zynq输出处理时,会使用到pl和ps的数据传输,可供使用的方案有多种,由于我们的数据量较大打算,因此使用用以下两种方案处理: 1.使用pl直接写ddr3, 2.使用dma, 本次详细介绍使用axi_dma如何将pl的数据在linux应用层接收数据并处理,以及遇到的问题 fpga工程,我们使用

    2024年02月03日
    浏览(57)
  • 手把手教你学会 Xilinx PCIE/XDMA 读写DDR系列(三) ——XDMA读写DDR项目工程讲解和下板测试

    因最近想通过PCIE把数据从FPGA传到PC,借此机会和大家一起学习XDMA读写DDR 制作不易,记得三连哦,给我动力,持续更新!!! 完整工程文件下载:XDMA读写DDR工程   提取码:4sxh 在前两篇文章的学习中,我们已经成功配置了XDMA读写DDR所需的两个关键IP核,并深入学习了XDMA读写

    2024年03月12日
    浏览(63)
  • FPGA — AXI接口协议介绍

    基于Vivado的AXI参考指南UG1037 ARM文档:AMBA AXI协议规范(IHI0022D) 可去官网下载英文文档查看,也可下载资源:https://download.csdn.net/download/unique_ZRF/87008791 AXI(高级可扩展接口) 是ARM AMBA的一部分 AMBA(Advanced Microcontorller Bus Architecture)高级微控制器总线架构 ;是1996年首次引入的一组

    2024年02月09日
    浏览(50)
  • 【正点原子FPGA连载】第二十章AXI4接口之DDR读写实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html Xilinx从Spartan-6和Virtex-6系列开始使用AXI协议来连接IP核。在ZYNQ MPSOC器件中,Xilinx在IP核中继续使用AXI协议。本章

    2024年02月02日
    浏览(53)
  • 【ARM AMBA AXI 入门 5 - AXI 协议中的 QoS信号及User信号介绍 】

    请阅读 【ARM AMBA AXI 总线 文章专栏导读】 上一篇:ARM AMBA AXI 入门 4 - AXI 协议中的 Out-of-Order transfer and interleave 介绍 下一篇:ARM AMBA AXI 入门 6 - AXI3 协议中的锁定访问之AxLOCK信号

    2024年02月16日
    浏览(42)
  • DDR3 AXI4 IP核读写仿真实验(2)

    上篇blog中记录了DDR3 AXI4接口的IP配置详情,这一文章则是记录自己在项目工程以及学习中对于DDR3的读写测试。先讲一下大概的工程架构:产生16位的自加数写进写FIFO中,当FIFO中的数达到一次突发长度后将其全部读出写进DDR3中,再检测到DDR3中数达到1024之后全部读出写入到读

    2024年02月13日
    浏览(46)
  • AXI-DMA

             AXI-DMA:实现数据从PS内存到PL的高速传输。              Zynq芯片有4个高速接口 HP 口,接口时序是 AXI 时序,需要通过AXI 的时序把数据写入到 HP 口,HP 口实际是跟 ARM 的 DDR3 的控制器互联的,这样的话,就能把 FPGA 这一侧的数据写入到 ARM 的内存里面去,这个

    2023年04月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包