AXI的全称是Advanced eXtensible Interface。在spec里面是这么自夸的:
•用于高带宽和低延迟设计。
•提供高频操作,无需使用复杂电桥。
•协议满足各种组件的接口要求。
•适用于具有高初始访问延迟的内存控制器。
•提供了实现互连架构的灵活性。
•与AHB和APB接口向后兼容
AXI有五个独立的事务通道,分别是:
•读地址(Read Address,简称AR)
•读数据(Read Data,简称R)
•写地址(Write Address,简称AW)
•写数据(Write Data,简称W)
•写响应(Write response,简称B)
AXI的五个通道是单方向的,这样做的好处是可以对每个通道单独优化,而且当经过复杂的片上网络时,能够优化时序减少延迟。AXI支持突发(burst)传输,乱序(out of order)传输,极大地提高了数据吞吐能力,在满足高性能要求的同时,又减少了功耗。
对于读操作,主机(master)通过AR通道发送读事务地址,从设备(slave)通过R通道返回给主机所需要的数据,如下图:

图1 AXI的读操作
对于写操作,主机通过AW通道发送写事务地址,并通过W通道把数据发送给从设备,而从设备接收到数据后,需要通过B通道返回一个响应给主机,整个过程结束。

图2 AXI的写操作
读和写的不同之处,一是数据方向不一样,还有就是读事务不需要从设备再发响应了,想想为啥涅。
读和写的数据宽度可以是8, 16, 32, 64, 128, 256, 512, 1024 bits中的一种。
这里不得不提一下AMBA中广泛采用的VALID/READY握手机制。正是因为有了这个机制,发送方(Source)和接收方(Destination)才都有能力控制传输。
发送方通过置位VALID信号,来告诉接收方,自己已经将数据等信息准备好;而接收方通过置位READY信号,来告诉发送方,自己准备好了接收数据。只要有任何一方没准备好,传输就不能进行。
这里不要混淆了,发送方不总是主机,比如读数据通道上,发送方就是从设备,主机是接收方。
发送方的VALID信号和接收方的READY信号并不需要同时置位,可以发送方先准备好,也可以接收方先准备好。也就是说VALID可以早于READY,也可以晚于READY,也可以同时置位。对应的就是下面三种情况。



但是,为了避免死锁等问题,对于VALID/READY信号还是有一定要求的。协议规定,发送方的VALID信号一旦置位就不能拉低,直到完成一次握手;而且,发送方不能根据接收方的READY信号来置位自己的VALID信号。简单说,就是发送方可以根据自己的需求随时发起传输,不能也不需要判断接收方是否空闲,同时发送方一旦发起传输,就不能随意中止。对于接收方,如果没有准备好接收就可以不置位READY,这样就可以反压发送方的传输了,而且接收方置位READY后,只要发送方没置位VALID,可以拉低READY。
时钟信号和复位信号作为全局信号,没啥好说的。AXI的五个通道的信号如下,先是写地址通道:

写数据通道

写响应通道

读地址通道

读数据通道

从上述的信号列表我们可以看出来,每个通道都有自己的VALID/READY信号。这种VALID/READY握手机制在整个AMBA体系里面广泛采用,不管是做设计还是做验证的同学,一点要熟记。

原文地址:https://mp.weixin.qq.com/s/k8iY4gh4OjMpozR4wMQiyA

AXI协议解析(一)相关推荐

  1. AXI协议解析(四)

    来看看事务属性(Transaction Attributes),主要是对cache,buffer和memory controller的规定.按照协议,从机分为存储从机(memory slave)和外设 ...

  2. AXI协议解析(五)

    今天先来看一下传输标识(transaction identifier)的概念,主要是ID信号. 开始之前先讲几个概念,首先是outstanding(想不好怎么翻译,有的人译为超前)传输.如果没有out ...

  3. AXI协议解析(三)

    了解完通道握手的依赖关系,我们再看看传输事务的结构.首先看传输的地址结构.AXI协议是基于突发(burst)传输的.所谓突发传输,就是在一次事务中,连续地传输多个地址相邻的数据.一次突发传输中可以包含 ...

  4. AXI协议解析(二)

    前面说到AXI的五个通道是独立的,但通道间必须保持一定的约定关系: 写回复必须在一次写事务的最后一个写数据之后 读数据必须在接收到读地址信号之后 通道间握手必须满足一定的依赖关系 前两条好理解,重点看 ...

  5. AXI协议解析(六)

    有朋友提出希望讲一下AXI的原子访问(Atomic Accesses).其实这部分我在前面特意没提及,一是个人感觉这块牵扯的基本概念太多,而且晦涩难懂,二是工作中真需要用到的机会也不多.今天简单介绍一 ...

  6. AXI协议(五)-AXI-STREAM及接入思路解析

    AXI协议(五)-AXI-STREAM及接入思路解析 在本文中,你将可能学会: AXI-STREAM协议的梗概(下简称axis) 尝试编写出普通摄像头接入AXIS的思路 本来想讲完怎么接入的,由于篇幅 ...

  7. synopsys PCIE IP协议解析

    synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...

  8. 数字IC设计--------AMBA AXI协议(英文原版)

    AXI:AMBA Advanced eXtensible Interface (AXI) Protocol Specification 目录 chapter 1 Introduction about ...

  9. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

最新文章

  1. linux系统编码修改
  2. mysql能安装的版本下载失败_mysql 安装失败 每次都安装失败 每个版本都失败
  3. 我在神策做研发 | 与客户难题“对抗”的百余天
  4. VS2008编写64位程序
  5. ubuntu 12.10 笔记
  6. 【转】libpcap实现机制及接口函数
  7. WCF错误“验证消息的安全性时发生错误”
  8. 送给前端开发者的一份新年礼物
  9. ApplePay支付使用
  10. 华为手机助手上架流程_2019年各大安卓应用商店上架经验,含流程,物料,方法,建议收藏...
  11. npm run build 出错 npm: 6.5.0-next.0 should be = 3.0.0
  12. Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行——怎么将Unix/Mac系统下的文件转换到Windows系统下
  13. 13款用于Web的流行HTML5视频播放器
  14. android viewholder静态,Android listview viewholder
  15. Java实现简单电子邮件的发送
  16. 市场调研-全球与中国汽车零部件涂层市场现状及未来发展趋势
  17. python中stdin_通过python中的stdin发送输入子流程.popen
  18. 数据湖技术之Hudi 集成 Spark
  19. 热修复 原理与实现详解
  20. window系统cmd的常用几条指令

热门文章

  1. HTML5+CSS3从入门到精通书籍配套源码
  2. IM即时通讯:快速集成、私有化部署、安全加密
  3. BCM 芯片SDK初始化
  4. 听学编程之python_听学编程之Python 三、宝玉在红楼梦里说了什么
  5. 原生js实现addClass,removeClass,hasClass方法
  6. 数学建模——粒子群算法步骤及程序详解
  7. 将Kali Linux安装到优盘并实现文件的持久存储(3)
  8. 亚马逊新品扶持期应该做什么才能好好把握住?
  9. Qt HTML CSS颜色对照表
  10. matlab角度和弧度的互换_matlab角度弧度互换