【AXI】解读AXI协议双向握手机制的原理

这篇具有很好参考价值的文章主要介绍了【AXI】解读AXI协议双向握手机制的原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、写在前面

AXI协议相较于UART,SPI,I2C来说,无论是内容还是难度都上了一个层级,放在一篇文章中进行解读未免篇幅过长,因此,有关AXI一些共性的、通用的问题,作者单独以前缀为【AXI】的标题进行小范围的串联,最终再汇总为深入浅出解读AXI协议,与从零开始的Verilog AXI协议设计,此为作者所思所考的推进顺序,单看【AXI】的每一篇,可能很多读者未免感到有些管中窥豹的疑惑,但若等作者更完此专栏再行观看,从头到尾进行阅读,应该就会有有茅塞顿开的收获与领悟。

二、AXI 双向握手机制简介

AXI标准协议有五路独立的数据通道(分别为读数据通道,写数据通道,读地址通道,写地址通道,写回复通道),每一路数据通道都遵循双向握手机制,即使用VALID和READY信号作为控制信号来传输数据,只有VALID与READY同时为高的时候,才可以正常的发送数据,而通常情况下,VALID信号用来表示什么时候“地址、数据、和控制信号”是有效的,而READY信号则用来表示什么时候从设备准备好采集数据了

2.1 信号列表

AXI标准协议中,双向握手信号合计十个,无论是主设备还是从设备,这十个信号都对应于五个输入信号,五个输出信号

数据通路 握手信号对
写地址通路 AWVALID,AWREADY
写数据通路 WVALID,WREADY
写回复通路 BVALID,BREADY
读地址通路 ARVALID,ARREADY
读数据通路 RVALID,RREADY

2.2 双向握手目的

握手:目的是控制数据在总线上的流动和采样
双向:目的是主设备和从设备都可以控制总线数据流动

AXI协议妙就妙在这里,我们在讨论SPI协议的时候,也有控制信号NSS,但是NSS这个信号只针对于主设备对于从设备的控制,从设备是没有办法控制数据通路的,但是对于AXI而言,无论是主设备还是从设备,都可以控制数据的传输。

2.3 握手过程

顺着双向握手的目的,我们可以引申出三种情况,READY信号先于VALID信号改变,READY信号与VALID信号同时改变,READY信号晚于VALID信号改变。分别进行讨论

2.3.1 CASE1(READY信号先于VALID信号改变)

【AXI】解读AXI协议双向握手机制的原理

READY信号的拉高,代表从设备准备好采样了,但T2时刻,VALID未拉高,因此未进行采样,而T3时刻,VALID拉高了,完成握手,数据传输。

这种情况下,如果我们将目光对向主设备,会发现,从设备在主设备发送数据前就做好了接受的准备,当主设备VALID后,时钟上升沿就完成了接受。(即数据传输发生在一个时钟周期内)

2.3.2 CASE2(READY信号与VALID信号同时改变)

【AXI】解读AXI协议双向握手机制的原理
VALID信号与READY信号同时拉高,表明数据有效的同时也可以进行采样,在T2时刻的上升沿,采样到正确数据,握手正确,再往后二者都拉低,数据进行了正确传输。

2.3.3 CASE3(READY信号晚于VALID信号改变)

【AXI】解读AXI协议双向握手机制的原理VALID信号先拉高,表明数据正确,再往后READY拉高,表明可以进行采样,T3时刻进行了采样,采样后,完成握手,再往后二者信号都拉低,这种条件下,数据也进行了正确的传输。

2.3.4 总结

对于2.3的讨论,我们可以发现这三种情况,都可以顺利完成握手,同时,协议同样规定,“VALID信号一旦拉高,除非READY信号拉高接收数据完成,不会主动变低”,而双向握手信号的约束关系,远不仅限于此。

2.4 数据通路的握手要求

以下的叙述包含两个前提:

  • 1.默认READY和VALID信号为低,有效时为高。
  • 2.同时,叙述中VALID等待READY的表达,实际的意思为在VALID拉高后的时钟上升沿检测READY是否为高,若为高,完成握手,并不代表VALID与READY的拉高顺序
2.4.1 读数据通路

在一个burst读传输操作时,从设备在数据有效时置高RVALID,一旦置高,RVALID需要等待RREADY信号拉高,完成握手,进行数据传输

2.4.2 读地址通路

主设备,在地址信号和控制信号有效时置高ARVALID,一旦置高,需要等待从设备的ARREADY信号置高,完成握手,进行数据传输。

2.4.3 写数据通路

在burst写传输时,主设备在写数据有效时置高WVALID信号,从设备在准备好接受时拉高WREADY信号,完成握手。

2.4.4 写地址通路

主设备在地址信息与控制信息有效时,拉高AWVALID,拉高后AWVALID等待从设备拉高AWREADY,完成握手,进行数据传输

2.4.5 写回复通路

从设备在数据有效时,拉高BVALID,一旦拉高,BVALID需要等待BREADY信号拉高后完成握手,进行数据传输。

2.4.6 总结

针对于数据通路的握手要求,首先需要强调的是:我们在这里默认READY信号和VALID信号为低电平,仅是为了方便表述。在实际工程项目中,也可以默认他们为高电平,拉低有效,完成握手,即READY与VALID信号的有效电平为高或低均能满足要求。
其次,对于不同的数据通路,有的时候是主设备操控READY信号,有的时候是从设备操控READY信号,需要根据数据通路进行区分。

2.5 不同数据通路间的约束关系

在前文中,我们延伸出通道内的约束关系如下
VALID信号一旦拉高,除非READY信号拉高接收数据完成,不会主动变低

不同数据通路之间,同样的存在约束关系,这很好理解:写回复通路的信号传递一定晚于写数据通路,这就天然的构建起不同通路的先后顺序关系,假如不满足这种约束关系,AXI协议就可能会发生死锁,即deadlock没有办法正确工作。

同时一个AXI slave按功能进行区分的行为建模,无非是读与写两种操作,读操作与写操作的约束关系同样不同

单向箭头指向的对象可以在起点对象之前/之后置高
(以2.5.1为例ARREADY可以在ARVALID之前或者之后置高)
双向箭头指向的对象只能在起点对象之后置高
(以2.5.1为例,RVALID无法在地址通路握手完成(已发送数据)的情况下改变)

2.5.1 读操作约束关系

【AXI】解读AXI协议双向握手机制的原理
首先我们讨论的是读操作约束关系:
RVALID和RREADY对应读数据通路的信号
ARVALID和ARREADY对应读地址通路的信号
读操作固定的约束关系为数据通道必须要等待地址通道的数据传输完成才可以尝试握手操作

2.5.2 写操作约束关系(AXI3.0版)

【AXI】解读AXI协议双向握手机制的原理
其次我们讨论的是写操作的约束关系
这里涉及到了三个数据通路,来考虑约束关系,唯一的一个硬约束关系为,BVALID需要等到写数据通路完成握手后才能置高。

初学者在这里往往会感到迷惑
比如说BREADY跟WVALD与WREADY间有无关系?BVALID和AWVALID与AWREADY有无关系?实际上是,只要图中的线没有进行相连,就是没有关系,针对于AXI而言,甚至可以BREADY信号第一个拉高,再去考虑其他信号的关系,唯一需要满足的即为写回复通路与写数据通路之间的约束,剩下的信号都是自由的。

2.5.3 写操作约束关系(AXI4.0版)

【AXI】解读AXI协议双向握手机制的原理
2.5.2讨论的是AXI3.0写操作的约束关系,这里直接放出AMBA4.0版的约束关系,很好理解,不再多做解释,不过需要强调的是,AMBA4在兼容AMBA3的基础上更为严格,目的是保证写地址和写数据均能强约束写响应文章来源地址https://www.toymoban.com/news/detail-400678.html

三、其他数字IC基础协议解读

3.1 UART协议

  • 【数字IC】深入浅出理解UART
  • 【数字IC】从零开始的Verilog UART设计

3.2 SPI协议

  • 【数字IC】深入浅出理解SPI协议
  • 【数字IC】从零开始的Verilog SPI设计

3.3 I2C协议

  • 【数字IC】深入浅出理解I2C协议

3.4 AXI协议

  • 【AXI】解读AXI协议双向握手机制的原理
  • 【AXI】解读AXI协议中的burst突发传输机制
  • 【AXI】解读AXI协议事务属性(Transaction Attributes)
  • 【AXI】解读AXI协议乱序机制
  • 【AXI】解读AXI协议原子化访问
  • 【AXI】解读AXI协议的额外信号
  • 【AXI】解读AXI协议的低功耗设计
  • 【数字IC】深入浅出理解AXI协议

到了这里,关于【AXI】解读AXI协议双向握手机制的原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【AXI】解读AXI协议的额外信号(QOS信号,REGION信号,与USER信号)

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区 联合力荐 !近500篇 数字IC精品文章收录 ! 【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍 AXI协议 相较于

    2024年01月18日
    浏览(139)
  • 【网络原理】TCP连接管理机制(三次握手四次挥手)

    🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 在使用TCP协议进行网络交互时,TCP会进行三次握手即建立连接,TCP四次挥手即断开连接。三次握手与四次挥手后就完成了网络交互,这样的操作也叫TCP的连接

    2024年02月09日
    浏览(36)
  • 10000字讲解TCP协议(确认应答,超时重传,三次握手,四次挥手等等众多机制)以及UDP协议(UDP报文,校验和)

    UDP它是属于TCP/IP协议族中的一种。是无连接的协议,发送数据前不需要建立连接,因为不需要建立连接,所以可以在网络上以任何可能的路径传输,至于有没有传输到目的地,UDP是不关心的,所以,UDP它是天然支持广播的,就类似学校的广播,只需要将声音传递给每个学生即

    2024年01月21日
    浏览(41)
  • 深度解读UUID:结构、原理以及生成机制

    UUID (Universally Unique IDentifier) 通用唯一识别码 ,也称为 GUID (Globally Unique IDentifier) 全球唯一标识符。 UUID是一个长度为128位的标志符,能够在时间和空间上确保其唯一性。UUID最初应用于Apollo网络计算系统,随后在Open Software Foundation(OSF)的分布式计算环境(DCE)中得到应用。可

    2024年03月21日
    浏览(31)
  • K8S Informer机制原理解读 | 架构设计

    在Kubernetes系统中,组件之间通过HTTP协议进行通信,在不依赖任何中间件的情况下需要保证消息的实时性、可靠性、顺序性等。那么Kubernetes是如何做到的呢?答案就是Informer机制。Kubernetes的其他组件都是通过client-go的Informer机制与Kubernetes API Server进行通信的。 在Informer架构设

    2024年01月22日
    浏览(35)
  • SpringBoot源码解读与原理分析(五)SpringBoot的装配机制

    前面三小节分别介绍了Spring Framewoek的模块装配、条件装配和SPI机制。下面正式进入Spring Boot的装配机制。 实际上, Spring Boot的自动装配是模块装配+条件装配+SPI机制的组合使用 ,而这一切都凝聚在Spring Boot主启动类的@SpringBootApplication注解上。 @SpringBootApplication注解是由三个注

    2024年02月19日
    浏览(35)
  • 深入解读网络协议:原理与重要概念

    目录 TCP/IP协议 TCP 三次握手和四次挥手 IP地址 子网掩码 DNS 网关 网络端口 TCP/IP协议 TCP/IP是互联网通信的基础协议。它由两个部分组成:TCP负责数据的可靠传输,确保数据按序到达目标;IP负责寻址和路由,确保数据在网络中正确传递。TCP/IP协议簇涵盖了多个层次,其中最重

    2024年02月13日
    浏览(76)
  • AXI4接口时序解读

    下一节:AXI4总线-axi-full-slave IP程序解析_北纬二六的博客-CSDN博客 1.axi4写时序 图1  写时序示意图         如上图1示意图所示,主机先向从机发送地址控制信号,接下来数据总线即可互相握手发送数据信号,待数据发生完毕后,从机向主机返还一个应答信号以此做到相互握手

    2024年02月05日
    浏览(25)
  • 【网络原理】TCP协议如何实现可靠传输(确认应答机制)

    🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本篇主要讲解:TCP协议段格式,TCP的序列号,SYN、ACK标志位,确认应答机制。 目录 1、TCP协议段格式 1.1 TCP格式段 1.2 TCP协议段格式 2、确认应答机制 2.1 后发

    2024年02月09日
    浏览(36)
  • SSL双向握手/RSA与ECDHE

    SSL双向握手整体流程如下图: Client hello数据包是客户端向服务端发送的初始消息,是SSL双向握手的开始,用来请求建立安全通信信道。该数据包主要包含如下信息: SSL/TLS 版本 :指示客户端支持的最高和最低协议版本。这两个版本号用于在服务器选择协议版本时提供一个范

    2024年01月16日
    浏览(23)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包