AXI VALID READY 握手机制
1. VAILD 和READY 传输方向

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

读传输的依赖关系也可以参考上图,其中,单头箭头表示其指向的信号可以在箭头起始信号置起之前或之后置起,也就是说被指向的信号不依赖起始信号;双箭头表示其指向的信号必须在箭头起始信号置起之后置起,也就是说被指向的信号必须依赖起始信号。
1.主机不可以等待从机置起ARREADY以后,来决定是否置起主机的ARVALID,即主机发起ARVALID不依赖ARREADY;
2.从机可以等待(也可以不等待)主机发起ARVALID后再发起ARREADY,即从机发起ARREADY不依赖主机ARVALID;从机可以等待主机置起ARVALID之后置起ARREADY,也可以在主机置起ARVALID之前置起ARREADY
3.从机必须等待主机置起ARVALID 和从机置起ARREADY 之后,才可以置起RVALID,因为要在正确接收到读地址后才能返回数据;
从设备只有在输出有效读数据时才能使能RVALID信号,同时在主设备的RREADY信号有效后的第一个时钟上升沿必须保持有效。即使从设备只有一个读数据源,它也必须在收到数据请求时才令RVALID信号有效。
4.从机在发起RVALID之前不用等待主机发起RREADY,即从机发起RVALID不依赖RREADY;
5.主机可以等待(也可以不等待)从机发起RVALID后再发起RREADY,即主机发起RREADY不依赖从机RVALID;主机可以等待从机置起RVALID之后置起主机的RREADY,也可以在从机置起 RVALID 之前置起主机的RREADY
2.2 写通道

图中WVALID上面的†代表WVALID的发起还依赖WLAST。
对于写传输来说,在写地址和写数据通道上,主机是发送方,从机是接收方;在写响应通道,主机是接收方,从机是发送方,这时的依赖关系是:
1.主机不可以等待从机的AWREADY和WREADY,来置起主机的AWVALID和WVALID,即相互之间不依赖;
2.从机在发起AWREADY/WREADY之前可以等待(也可以不等待)主机发起AWVALID/WVALID,即从机发起READY不依赖主机VALID;
从机可以等待主机置起AWVALID和WVALID之后置起从机的AWREADY,也可以在主机置起AWVALID和WVALID之前置起从机的AWREADY
从机可以等待主机置起AWVALID和WVALID之后置起从机的WREADY,也可以在主机置起AWVALID和WVALID之前置起从机的WREADY
3.从机必须等待WVALID/WREADY/WLAST都发起了,才可以置起BVALID,因为BRESP要在最后一个写数据收到后才能发起;
4.从机不可以等待主机置起BREADY之后再置起BVAILD,即从机发起BVALID不依赖BREADY;
5.主机在发起BREADY之前可以等待(也可以不等待)从机BVALID发起,即相互之间不依赖;主机可以等待从机置起BVALID之后置起BREADY,也可以在从机置起BVALID之前置起BREADY
上面听起来有点像绕口令,其实记住一个大原则就好:发起方不能挑事,接收方有自主权。
在AXI4和AXI5中,写传输增加了额外的从机置起 BVALID 信号所需的依赖,从机必须等待AWVALID,AWREADY,WVALID和WREADY。比起AXI3,BVALID还要依赖于AWVALID和AWREADY。从机要等写地址和写数据都完成以后才可以返回写响应,这在道理上是对的。但是,一般而言,写数据会在写地址前完成。
VALID/READY握手机制是AMBA中一个很重要的机制。正是因为有了这个机制,发送方和接收方都有能力控制传输。协议中花费了大量篇幅来描述VALID/READY。
PS.为什么第一条规则很重要?举个例子,如果主机在发起VALID之前等待从机发起READY,而从机定义的是在发起READY之前等待主机发起READY,这样系统就会陷入死锁。

READY 信号比VAILD 信号先到达的情况
READY 信号先到达:READY 信号很自由,可以等待 VALID 信号到来再做响应,但也完全可以在 VALID 信号到来前就置高,表示接收端已经做好准备了。READY 信号与 VALID 不同,接收方可以置起 READY 之后发现:其实我好像还挺忙,然后拉低 READY 信号。只要此时 VALID 信号没有置起,这种操作是完全可以。

VAILD信号比READY信号先到达的情况
VALID 信号先到达:发送方 VALID 信号早早就到了,这时还不到 T2 时刻,并带来了新鲜的数据(数据通道),地址或者控制信息(地址通道)。但过了 T2 也没见到接收方的 READY 信号。原来是接收方还忙着,可能上一次的数据还没存完,还堵在数据通路上,忙过了 T2 才来。好吧,那也行,T3 时刻传输完成。在这种情况下,接收方通过 READY 信号控制了传输速度,反压了发送速度。
协议规定:VALID 信号一旦置起就不能拉低,直到此次传输完成。对于接收方编程来说,检测到 VALID 信号置起,如果系统正忙,完全可以让发送方等待,发送方在完成传输之前都不会置低 VALID 信号,不需要考虑发送方撤销传输的可能。
协议另外规定:发送方不能在置起 VALID 信号之前就光等待 READY 信号。
从总线接口编程的角度理解:READY 信号可能先到达,如下图的情况。但是发送方编程时,不能依赖 READY 信号先到达的情况。不能将 READY 信号置高作为置高 VALID 的条件,比如将 READY 信号通过组合逻辑生成 VALID 信号。
换句话说,发送方准备发送,置起 VALID 信号是完全主动的过程。接收方按照协议可以依赖发送方,但如果此时发送方也依赖接收方,就会造成死锁的情况,所以协议在这里规定了 VALID 信号的主动性。

VAILD信号和READY信号同时到达的情况
3.同时到达:同时到达就很简单,等到下一个时钟上升沿 T2,传输就这么轻松愉快地完成了,一个时钟周期里就完成了。

VAILD信号与READY信号同时到达的情况
协议建议 AW/AR READY 信号(这里 AW/AR 指的是读写地址通道的 READY 信号)的默认电平为高电平。若默认电平为低,则每次传输至少需要 2 个周期才能完成,第一个周期置高 VALID 信号,第二个周期从机才会置高 READY 信号。相当于每次传输增加 1 个周期时间开销,这在某些情况下会对传输效率有较大的影响。
AXI VALID READY 握手机制的更多相关文章
- AXI总线的工作流程---握手机制
AXI总线的工作流程---握手机制 信息来源 首先分析AXI Master的工作机制 握手机制 CMD和Data的流程图: 写操作流程:write transaction flow read操作的流程 ...
- 加密、签名和SSL握手机制细节
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 背景知识 对称加密 :加密解密使用同一密钥,加解密速度快.随 ...
- 【转载】Socket通讯原理以及TCP、IP三次握手机制分析
要写网络程序就必须用Socket,这是程序员都知道的.而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,w ...
- HTTPS工作原理和TCP握手机制
1.HTTPS的工作原理 HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手, 在握手过程中将确立双方加密传输数据的密码信息. TLS/SSL协议不仅仅是一套加密传输的协议, ...
- 简述采用四次握手机制释放TCP连接的四个步骤
(1)源结点A向目的结点B发送连接释放请求(FIN,seg=x),并且不再向B发送数据,但仍继续接收从B发来的数据. (2)目的结点B收到此连接释放请求后立即向A发出确认(ACK,ack=x+1),但 ...
- zedboard如何从PL端控制DDR读写(二)——AXI总线
虽然Xilinx已经将和AXI时序有关的细节都封装起来,给出了官方IP和向导生成自定义IP,用户只需要关注自己的逻辑实现,但是还是有必要简单了解一下AXI的时序,毕竟咱是做硬件设计的. AXI(Ad ...
- AXI总线介绍
原帖地址:https://wenku.baidu.com/view/7c424c17e3bd960590c69ec3d5bbfd0a7956d5b9.html 1.AXI简介 AXI(Advanc ...
- TCP/IP的三次握手和四次分手以及超时机制
使用INADDR_ANY的时候,往往针对多网卡情况,采用tcp连接方式,需要选择使用哪一个网卡发送,自己猜想应该是使用三次握手机制,如何判断目标地址不可达,应该使用的是超时机制,即握手超时则不可到达. ...
- zynq里面的AXI总线(2017-1-11)
在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议.其中三种AXI总线分别为: AXI4:(For high-performance memory-mapped requir ...
- 关于 AXI协议的学习解释说明
AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture ...
随机推荐
- 使用idea的maven项目使用mybatis时遇到的坑
在使用idea的maven项目中使用mybatis时遇到的一个问题,这个问题困扰了我一段时间,所以我来这里记录一下! 出现的问题是: 我把相同的代码复制到eclipse中,在eclipse中却能正常运 ...
- Cesium CallbackProperty(十五)
Cesium中的entities可以随时间变化长度高度,主要依赖于CallbackProperty函数. 因为使用CallbackProperty,cesium中一切可视化的要素都可以与时间联系起来. ...
- 主流的第三方直播SDK对比(腾讯云、即构、阿里云、声网、网易云信、网宿)
直播业务概述 大家所熟知的直播平台虎牙.斗鱼.快手.抖音.B站,直播功能看似普遍,但从零到一开发却不简单.直播中运用到的技术难点非常之多,音频视频处理/编解码,前后处理,直播分发,即时通讯等技术,学好 ...
- IP转换
IP转换 目录 IP转换 1 127.1 ? 2 IPv4两段点分十进制表示 3 IPv4一段十进制表示 4 IPv4地址有效地变换形式 5 IP地址进制转换网站 6 参考博客 1 127.1 ? 首 ...
- 比较多普勒超声与临床缓解标准对RA放射学进展的预测效能
比较多普勒超声与临床缓解标准对RA放射学进展的预测效能 de Miguel, et al. EULAR 2015. Present ID: FRI0586. 原文 译文 FRI0586 DOPPLER ...
- MyBatis 查询的条目与预期的不一致
预期查询的数据条目是 4 条: 但是 MyBatis 查询出来的结果只有 2 条数据: resultMap 开启了 autoMapping 功能,就不需要多余地添加 result.下面是错误的映射操作 ...
- MySQL 查询常用操作(0) —— 查询语句的执行顺序
MySQL中明确查询语句的执行顺序极其重要,了解执行顺序才不至于犯一些简单错误,例如having 后面是否可以使用 select 中重命名的列名等问题.另外SQL中实际使用最频繁的就是查询(Quein ...
- LeetCode-398 随机数索引
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/random-pick-index 题目描述 给定一个可能含有重复元素的整数数组,要求随机输出给定 ...
- OSI网络7层模型,TCP/IP协议族
ARP和RARP协议在OSI中属于数据链路层,在我们的认知里属于网络层,与IP在一层 OSI 7层模型比这个5层模型多了三层,5层模型熟悉的情况下,可以这么记多出的层:用表会输 应用层 表示层 会话层 ...
- 性能提升 40 倍!我们用 Rust 重写了自己的项目
前言 Rust 已经悄然成为了最受欢迎的编程语言之一.作为一门新兴底层系统语言,Rust 拥有着内存安全性机制.接近于 C/C++ 语言的性能优势.出色的开发者社区和体验出色的文档.工具链和IDE 等 ...