一、什么是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. Laravel配置Route调用artisan

    //web调用artisan Route::get('/artisan', function(\Illuminate\Http\Request $request) { $all = \Illumina ...

  2. 20K star!让网页设计秒变手绘风,这个开源库太有创意了!

    "Rough.js 是一个轻量级的图形库(仅8KB),能够为网页元素赋予自然的手绘质感.通过独特的算法模拟人类绘画的不规则性,开发者只需几行代码即可为图表.流程图.UI组件等数字内容注入生动 ...

  3. 通过cmd/批处理 开启关闭windows中的mysql数据库

    目录 cmd 开启关闭mysql 批处理 开启关闭mysql 每次通过服务开启关闭mysql太麻烦,可以通过cmd或批处理来解决 cmd 开启关闭mysql cmd需要使用管理员打开 //开启mysq ...

  4. 工具 | Hashcat

    0x00 简介 Hashcat是一款强大的密码破解工具. 下载地址 Hashcat下载: Hashcat下载 0x01 功能说明 直接破解 组合攻击 掩码暴力破解 混合攻击 联合攻击 注:仅供安全研究 ...

  5. 为Java虚拟机分配堆内存大于机器物理内存会怎么样?

    之前在某个地方看到的一个问题,"如果为Java虚拟机指定的堆内存大于物理内存会怎么样?",今天正好又看到了HotSpot VM中关于为堆分配内存的源代码实现,顺便从源代码角度解答一 ...

  6. 三-select模型

    select模型是对简单C/S模型的优化,他解决了accept函数阻塞等待连接的问题.并且允许应用程序同时监视多个套接字,从而实现简单的并发请求.通过调用select函数确认一个或多个套接字当前的状态 ...

  7. 搭建邮局-3.安装邮局前端roundcube和测试

    目录 搭建邮局-1.安装hMailserver和配置邮局 https://www.cnblogs.com/daen/p/16040202.html 搭建邮局-2.添加域名和域名解析 https://w ...

  8. 飞牛OS给容器魔方上行宽带限速

    下面我将详细讲解(容器网络命名空间限速)的持久化配置步骤,确保在飞牛OS重启后自动生效.请严格按照顺序执行以下操作: ️ 完整持久化配置教程(带详细解释) 步骤1:确认容器魔方名称 # 查看运行的容器 ...

  9. 算法新手村 Day01

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 前言: 算法 算法的分类 几个排序算法 0.两值交换 1.选择排序 动图 思路 代码 2.冒泡排序 动图 思路 代码 3.插入排序 动图 思路 ...

  10. 超实用!10 个 Excel 数据验证技巧,轻松解决数据录入难题

    [Excel基础系列之十二] 嗨,宝子们,我是社会牛马"表哥"--EETools. 在数据管理与日常办公中,Excel 数据验证如同一位 "数据质检员",从源头 ...