AXI总线协议

(一)、概述

AXI (高性能扩展总线接口,Advanced eXtensible Interface)是ARM AMBA 单片机总线系列中的一个协议,是计划用于高性能、高主频的系统设计的。AXI 协议是被优化用于通过使用Xilinx 进行的相应的开发来做FPGA 实现,它被用作FPGA 设计的IP 核之间的一种通信方式。

关键特性

1、地址/控制阶段和数据阶段是分开的,即master(主机)和slave(从机)之间有专门的地址/控制通道,还有专门的数据通道。

2、有字节闸来实现对非对齐数据的传输。

3、只需发布起始地址就能做批量数据传输

4、数据的读写通道是分离的,可以用来实现低成本的DMA(直接存储访问,Direct Memory Access)。出了地址和数据通道是分离的之外,读写数据的通道还是分开的,由此可以看出AXI总线的高速性。

5、可以指定多个需要处理的地址。

6、通信会话可以乱序完成,主要是指的数据的乱序,乱序发送需要有主机的ID进行支撑。

7、为了实现时序收敛,可以方便的加入寄存器,即在用户logic和user interface处加入想要观察和处理的用户逻辑与端口。

(二)、AXI总线类型

自从2003年AXI1.0版本发布以后,目前的AXI版本是4.0,AXI接口类型有三种,即AXI4类型、AXI4-Lite类型,AXI4-Stream类型。

AXI4类型:最高性能的接口,适合存储器映射的通信,支持每个地址阶段256个数据传输周期的批量传输,存在于PS-PL之间。

AXI4_Lite类型:AXI4接口类型中轻量级版本,用于存储器映射的单次数据通信会话,简化了的接口占用较少的逻辑部分面积,不支持批量数据,只支持每次传输单个数据,存在于PS-PL之间。

AXI4-Stream类型:没有地址阶段,不是存储地址映射,仅仅存在与PL侧,可以实现无限制的数据批量大小,为流式数据传输定义单个专用通道,连接只能是从主机到从机。为了实现双向传输,两个外围设备都必须是主机/从机简称融类型。

(三)、AXI架构

AXI协议规定一个AXI主机可以用写数据通道通过AXI总线互联将数据传送给一个AXI从机(或者通过读取数据通道从从机传送到主机),写数据传输会话会有一个额外的响应通道,但是读取时并没有,这时考虑到数据的流向。在进行数据读取时,数据流向:Slave to Master,从机可以直接通过读数据通道向主机返回信息。在进行数据写入时,数据流向:Master to Slave,数据流向是单向的,需要有一个专门的响应通道。

无论是度还是写,地址和控制数据都是在数据的发送/接收之前:

特别注意AXI互联(AXI Interconnect):

(1)、主机AXI从处理器系统和处理器时钟各自流向从机输出S00_AXI和S00_AXLK。

(2)、AXI互联的输出都是主机通道,每个通道驱动对应的设备。

AXI-Lite代码分析

(一)、RTL视图

模块输入信号:

(1)、从机时钟

(2)、从机复位

(3)、从机地址读取有效

AXI4-Stream协议

一、协议介绍

1、AXI4_Stream适用于高速数据流,去掉了地址项,允许无限制的数据突发传输。除了总线时钟和总线复位,其他的接口信号都是以字母T开头。

2、信号接口描述:

(1)、ACLK---------时钟源-----全局时钟信号,所有信号在主时钟信号的上升沿采样。

(2)、ARESETN------复位------低电平有效。

(3)、Tvalid-------主机数据有效信号,(区别AXI4、AXI4-Lite,AXI4_Stream去掉了地址项),由主机发出,高速从机发出的数据有效。源为master。

(4)、Tdata[31:0]--主机发出的数据,数据宽度可选,32/64/1278/256 bit。源位master。

(5)、Tkeep[3:0]---字节修饰符,用于表明Tdata相关字节的内容是否为有效数据,未被Tkeep位确认的字节为孔子杰,视为无关字节,可以从字节流中去除。源为master。

(6)、Tlast--------主机通知从机这时最后一个数据,即为数据包的边界。源为master。

(7)、Tid---------由主机发出,Identity标识符,在存在多个stream数据传输时起作用,用于识别不同的数据流。源为master。

(8)、Tready------从机发出的接收准备好信号。

二、通信机制

最重要的就是牢记只有 Tvalid & Tready == 1 时才能开始数据传输,Valid信号由数据传输源产生,Ready信号由目的源产生(来自米联客book,这句话总结的太经典了,因为在其他的AXI4总线进行数据读取时,主机也会产生Rready信号)。

因为AXI4-stream去掉了地址线(依靠Tid进行数据流识别),不涉及数据的读写通信,仅涉及简单的发送与接收,减少了传输延时。

AXI总线协议的更多相关文章

  1. zynq里面的AXI总线(2017-1-11)

    在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议.其中三种AXI总线分别为: AXI4:(For high-performance memory-mapped requir ...

  2. AMBA总线协议AHB、APB、AXI对比分析【转】

    转自:https://blog.csdn.net/ivy_reny/article/details/56274412 一.AMBA概述    AMBA (Advanced Microcontrolle ...

  3. zedboard如何从PL端控制DDR读写(二)——AXI总线

     虽然Xilinx已经将和AXI时序有关的细节都封装起来,给出了官方IP和向导生成自定义IP,用户只需要关注自己的逻辑实现,但是还是有必要简单了解一下AXI的时序,毕竟咱是做硬件设计的. AXI(Ad ...

  4. AXI总线

    AXI(Advanced eXtensible Interface)是一种总协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture) ...

  5. AXI总线简介

    AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式.在ZYNQ中继续使用,版本是A ...

  6. AXI总线介绍

    原帖地址:https://wenku.baidu.com/view/7c424c17e3bd960590c69ec3d5bbfd0a7956d5b9.html   1.AXI简介 AXI(Advanc ...

  7. AXI总线(转)

    AXI(Advanced eXtensible Interface)是一种总协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture) ...

  8. AXI总线简介、ID分析、DMA、Vivado烧录、系统集成

    转载:https://blog.csdn.net/CrazyUncle/article/details/89918030?depth_1-utm_source=distribute.pc_releva ...

  9. SPI总线协议及SPI时序图详解

    SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚 ...

随机推荐

  1. springmvc请求参数异常统一处理,结合钉钉报告信息定位bug位置

    参考之前一篇博客:springmvc请求参数异常统一处理 1.ExceptionHandlerController package com.oy.controller; import java.tex ...

  2. 在一个tomcat中配置多个tomcat服务器 111

    <Service name="Tomcat_1">     <Connector port="8888" protocol="HTT ...

  3. spring-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. group by 与 order by 一起使用的时候

    select 后面的列+order by 后面的列 必须在group by 里面 也就是说 select 和 order by 后面的列是 group by 列的子集 而 select 和 order ...

  5. 如何让css与js分离

    在 webpack 我们如何让 css 与 js 分离: 我们需要安装插件:extract-text-webpack-plugin 1. 用:npm 下载插件 npm install extract- ...

  6. gvim安装中文文档

    今天下载了个gvim一直无法安装中文中文文档,以为是版本原因,又下了几个版本,后来发现都不行. 最后发现是文档安装位置不对,需要放到vim/vim47目录下才行 以下是翻墙在官网下的gvim74和vi ...

  7. 阶段3 1.Mybatis_02.Mybatis入门案例_3.mybatis注解开发和编写dao实现类的方式

    注解的用法 直接创建一个新的项目 下一步直接next 然后finish即可 把之前项目01里面的代码直接复制过来 复制到我们02的注解的工程中 把01项目导入的依赖也都粘贴过来 再把测试类复制过去 复 ...

  8. VS2012下std::function的BUG解决办法

    VS2012版本下std::function存在问题,链接:https://stackoverflow.com/questions/13096162/stdfunction-not-compiling ...

  9. unity监听粒子播放结束

    需要在粒子上挂脚本 脚本添加代码 public void OnParticleSystemStopped() { Debug.Log("粒子停止"); } 这是个生命周期 粒子的 ...

  10. expect替人进行交互

    expect是一门独立于shell的语言 用expect 执行写好的脚本 #!/usr/bin/expectspawn ssh root@192.168.40.67  (spawn  是expect ...