草庐IT

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

myhhhhhhhh 2023-05-10 原文

解读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信号改变)

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

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

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


VALID信号与READY信号同时拉高,表明数据有效的同时也可以进行采样,在T2时刻的上升沿,采样到正确数据,握手正确,再往后二者都拉低,数据进行了正确传输。

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

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等待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 读操作约束关系


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

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


其次我们讨论的是写操作的约束关系
这里涉及到了三个数据通路,来考虑约束关系,唯一的一个硬约束关系为,BVALID需要等到写数据通路完成握手后才能置高。

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

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


2.5.2讨论的是AXI3.0写操作的约束关系,这里直接放出AMBA4.0版的约束关系,很好理解,不再多做解释,不过需要强调的是,AMBA4在兼容AMBA3的基础上更为严格,目的是希望从设备不会在接收到数据信号后还需要等待地址信号

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

3.1 UART协议

3.2 SPI协议

3.3 I2C协议

3.4 AXI协议

有关【AXI】解读AXI协议双向握手机制的原理的更多相关文章

  1. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  2. ruby - HTTP POST 上的 SSL 错误(未知协议(protocol)) - 2

    尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify

  3. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  4. ruby - 如何在 Ruby 中创建双向 SSL 套接字 - 2

    我正在构建一个连接到服务器并等待数据的客户端Ruby库,但也允许用户通过调用方法发送数据。我使用的机制是有一个初始化套接字对的类,如下所示:definitialize@pipe_r,@pipe_w=Socket.pair(:UNIX,:STREAM,0)end我允许开发人员调用以将数据发送到服务器的方法如下所示:defsend(data)@pipe_w.write(data)@pipe_w.flushend然后我在一个单独的线程中有一个循环,我从连接到服务器的socket和@pipe_r中选择:defsocket_loopThread.newdosocket=TCPSocket.new

  5. 网络实验之RIPV2协议(一) - 2

    一、RIPV2协议简介  RIP(RoutingInformationProtocol)路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的一种路由协议。RIP采用距离向量算法,是一种距离向量协议。RIP-1是有类别路由协议(ClassfulRoutingProtocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持非连续子网(DiscontiguousSubnet)。RIP-2是一种无类别路由协议(ClasslessRoutingProtocol),支持路由标记,在路由策略中可根据路由标记对

  6. 【Unity游戏破解】外挂原理分析 - 2

    文章目录认识unity打包目录结构游戏逆向流程Unity游戏攻击面可被攻击原因mono的打包建议方案锁血飞天无限金币攻击力翻倍以上统称内存挂透视自瞄压枪瞬移内购破解Unity游戏防御开发时注意数据安全接入第三方反作弊系统外挂检测思路狠人自爆实战查看目录结构用il2cppdumper例子2-森林whoishe后记认识unity打包目录结构dll一般很大,因为里面是所有的游戏功能编译成的二进制码游戏逆向流程开发人员代码被编译打包到GameAssembly.dll中使用il2ppDumper工具,并借助游戏名_Data\il2cpp_data\Metadata\global-metadata.dat

  7. 计算机网络笔记:TCP三次握手和四次挥手过程 - 2

    TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报

  8. ruby-on-rails - Rails - 双向 "friendship"模型(续) - 2

    这是这个问题的延续:OriginalQuestion(SO)这个问题的答案涉及以下一组模型:classUser:friendships#...endclassFriendship'User',:foreign_key=>'friend_id'end如果说,我有一个用户并且我想获得他或她的id是友谊模型上的:user_idFK的所有“友谊”,这很好用。但是,当我运行类似的东西时@user.friendships.friends我希望它返回该用户是友谊中的:user或:friend的所有用户记录-因此,换句话说,返回该用户参与的所有友谊。希望以上内容有意义。我对Rails还是很陌生,希望有

  9. 论文解读OTA: Optimal Transport Assignment for Object Detection - 2

    CSDN优秀解读:https://blog.csdn.net/jiaoyangwm/article/details/1266387752021https://arxiv.org/pdf/2103.14259.pdf关键解读在目标检测中标签分配的最新进展主要寻求为每个GT对象独立定义正/负训练样本。在本文中,我们创新性地从全局的角度重新审视标签分配,并提出将分配程序制定为一个最优传输(OT)问题——优化理论中一个被充分研究的课题。具体来说,我们将每个需求方(锚框)和供应商(GT标签)的单位传输成本定义为他们的分类和回归损失加权之和。在公式化后,找到最好的分配方案即为最小传播成本解决最优传输方案,

  10. Slowloris DoS攻击的原理与简单实现 - 2

    前言    Slowloris攻击是我在李华峰老师的书——《MetasploitWeb 渗透测试实战》里面看的,感觉既简单又使用,现在这种攻击是很容易被防护的啦。不过我也不敢真刀实战的去试,只是拿个靶机玩玩罢了。         废话还是写在结语里面吧。(划掉)结语可以不看(划掉)Slowloris攻击的原理        Slowloris是一种资源消耗类DoS攻击,它利用部分HTTP请求进行操作。也叫做慢速攻击,这里的慢速并不是说发动攻击慢,而是访问一条链接的速度慢。Slowloris攻击的功能是打开与目标Web服务器的连接,然后尽可能长时间的保持这些连接打开。如果由多台电脑同时发起Slo

随机推荐