一、什么是AXI协议?

AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,AMBA包括以下几个部分:

  1. Advanced High-performance Bus (AHB):高性能总线,用于连接高性能主设备,如处理器和DMA控制器等。AHB总线具有多主从设备、分时复用等特点,支持带宽请求、优先级传输和错误处理等功能。
  2. Advanced Peripheral Bus (APB):外设总线,用于连接低速器件,例如控制器和定时器等。它是单主多从的设备总线,APB总线是一种简单的串行总线,具有定时器可编程特性,其速度较慢,但其节点可达数目较多。
  3. Advanced eXtensible Interface (AXI):可扩展性接口,用于连接系统中高速器件之间的互连。AXI是多主和多从设备的连接,AXI总线支持优先级传输、带宽请求、流水线传输和乱序传输等功能,是AMBA规范中最高级别的总线接口协议。

    学过STM32的同学应该很眼熟APB总线,在STM32等微处理器架构中GPIO等外设都是挂载在APB总线上的,具体APB协议这里不过多深入。

    而AXI由于地址/控制和数据相位是分离的,支持不对齐的数据传输及突发传输的特点,因此在擅长高速、高数据量的FPGA上大放异彩。

    二、为什么要学习AXI协议

    在学习xilinx FPGA过程中我们会经常遇到AXI接口,特别在ZYNQ架构上,ZYNQ-7系列上集成了2个异构高性能A9处理器以及FPGA资源,因此需要一种接口用来实现FPGA与ARM的高速数据交换,而由于上述AXI总线的天然优势使之自然而然地承担了该任务。同时xilinx的一些其他高速接口的IP核的控制(PCIE、DDR等)也是通过AXI接口实现的。因此想要学习ZYNQ架构或者处理高速信号,AXI协议都是绕不过去的门槛。

    三、AXI协议

    AXI协议定义了五个独立的事务通道。地址通道携带着控制信息,用于描述传输数据的性质。五个独立通道都由一组信息信号、以及提供双向握手机制的VALID和READY信号组成。

    下面结合读写过程,对5个通道进行说明,
  4. 写过程



    上图表示了一次AXI写的过程,

    写地址通道:首先Master在写地址通道(write address channel)发起一次写地址请求,表明自己写入的数据将存储至哪个地址。

    写数据通道:随后Master在写数据通道(write data channel)写入数据,注意,axi是支持突发传输(即给一个起始地址,可以连续写入多个数据,第二次写地址时地址自增写入数据长度即可),因此可以看到写数据通道写入了多个数据,这些数据在地址上是连续的。例如假设数据位宽为16bit(2Byte),突发长度为8(一次写入8个数据),那么写地址每次需要增加 2*8 。

    写应答通道:由于双方已经约定好了数据位宽及突发长度,所以在Mater写完最后一个数据(wlast)后,Slave会进行写通道和写数据的应答,表示Slave已经成功完成接受这一次突发写入内容。
  5. 读过程



    上图表示了一次AXI读过程,

    读地址通道:Master在读地址通道写入想要读取的数据地址,

    读数据通道:Slave在读数据通道将该地址的突发长度数据返回给Master
  6. 握手机制

    值得注意的是,在这5个通道所产生的读写事务都是基于握手机制完成的,主从通信都使用相同的VALID/READY握手过程来传输地址、数据和控制信息。这种双向流控制机制意味着Master和Slave都可以控制信息的移动速率。传输只发生在VALID和READY信号都是1的时候。
  • 源端产生VALID=1信号:表示地址、数据或控制信息可用。
  • 终端生成READY=1信号:表示可以接受该信息。

    那么就存在一个问题,握过程中VALID和READY的前后关系,或者握手过程是怎么样的?

    AXI支持三种形式的握手形式:
  1. VALID before READY:



    源端发起VALID后必须等到终端回应READY后才可以释放VALID。
  2. READY before VALID :



    终端先产生READY信号,源端产生VALID,终端拉高READY后可以取消拉高,不必一直保持到完成握手。
  3. VALID with READY:

VALID和READY信号同时拉高,完成握手。

4. 读写时序

  1. 写时序图

  2. 读时序

浅谈AXI协议及搭建自己的AXI IP核-01(协议解读)的更多相关文章

  1. 浅谈Java语言环境搭建-JDK8

    title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...

  2. 浅谈OSI七层网络模型和TCP/IP四层模型

    OSI七层网络模型 OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系. OSI七层模型 功能 ...

  3. Appium自动化—浅谈iOS自动化测试环境搭建

    在日常的测试工作中,我们会发现有些测试工作重复率极高,测试人员需要花费大量的时间进行这些重复性的测试,浪费了大量的人力与时间.若能够将常用的测试场景进行自动化,那必定能节省许多的人力与时间.作为一个初 ...

  4. 浅谈数据库技术,磁盘冗余阵列,IP分配,ECC内存,ADO,DAO,JDBC

    整理-----数据库技术,磁盘冗余阵列,IP分配, ECC内存,ADO, DAO,JDBC 1.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发.发布和支持.My ...

  5. 浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  6. 【转】 浅谈Radius协议

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  7. 转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221

    浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...

  8. 浅谈一下SSI+Oracle框架的整合搭建

    浅谈一下SSI+Oracle框架的整合搭建 最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所 ...

  9. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  10. 浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)

    一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...

随机推荐

  1. Vue计算属性computed与监听器watch

    Vue计算属性computed与监听器watch 诞生原因:在模板中放入太多的逻辑会让模板过重且难以维护,比如 对后台插入地数据进行切割重组  <div id="example&quo ...

  2. 3.4K star!全能PDF处理神器开源!文档转换/OCR识别一键搞定

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 PDF-Guru 是一款开箱即用的全能型PDF处理工具,支持跨平台文档转换.智能OCR识别. ...

  3. jsp页面的跳转

    服务器端和客户端跳转 服务器端跳转不改变URL,服务器的行为 客户端跳转改变URL,客户端的行为 项目目录 index.jsp <%@ page language="java" ...

  4. <HarmonyOS第一课13>给应用添加通知和提醒 #鸿蒙课程##鸿蒙生态#

    课程介绍 <HarmonyOS第一课:给应用添加通知和提醒>将引导开发者如何在HarmonyOS应用中实现通知功能.课程首先介绍如何为您的应用添加基础类型通知,包括普通文本.多行文本和图片 ...

  5. 【经验】CiteSpace|Wiley Online Library或除知网以外的其他网站的文献怎么导入CiteSpace 6.1.6?

      如果没安装,请看这篇博客安装,现在新版(6.1.6)的不需要额外下载java了,就很妙~:   最新版citespace软件的安装与配置   结论:导出成RIS然后用它自带的转换成WoS. 文章目 ...

  6. Python中的模块包

    dir0/dir1/dir2/mod.py,dir0必须在环境变量中,可以import dir1,import dir1.dir2.mod.但在python3.3之前,dir1和dir2下必须存放一个 ...

  7. 踩坑之MySQL安装及修改初始密码

    不得不说,mysql client的安装及改初始密码步骤多,繁琐,坑也不少,下面就总结下安装流程及遇到的那些坑(Windows): 1.安装 安装地址:https://dev.mysql.com/do ...

  8. 阿里云部署Django主要注意事项

    (1)virtualenv 报错 os 没有 PathLike属性 阿里云ubuntu16.0服务器默认python版本分别是2.7.12,3.5.2,而PathLike是在python 3.6时才被 ...

  9. 极简版闹钟(java)

    package javaBasic; import java.awt.Toolkit; import java.awt.event.*; import java.text.SimpleDateForm ...

  10. 重新认识Clientset

    重新认识Clientset 1.介绍 Clientset 是调用 Kubernetes 资源对象最常用的客户端,可以操作所有的资源对象. 那么在 Clientset 中使如何用这些资源的呢? 因为在 ...