AMBA_AXI Protocol_基本读写事务

基本读写事务

1. 握手的过程
2. 信道信令要求
3. 通道之间的关系

1. 握手的过程

当地址、数据或控制信息可用时,源端(source)产生VALID信号。终端(destination)生成READY信号,表示它可以接受该信息。传输只发生在VALID和READY信号都是HIGH的时候。
在主机和从机接口上,输入和输出信号之间不能有组合路径。
VALID 与READY握手的三种形式:

  1. VALID在READY之前置位
    在这里插入图片描述
    握手的过程:源端在T1后呈现信息,并置位VALID信号。目的端在T2之后置位READY信号。源端必须保持其信息稳定,直到传输发生在T3。
    源端不允许等到READY被置位后才置位VALID。
    当VALID被置位时,它必须保持,直到VALID和READY都被置位时,在上升时钟边缘,握手发生。

  2. VALID在READY之后置位
    在这里插入图片描述

    T1之后,地址、数据或控制信息还没有生效,终端就置位READY。该行为表明它可以接受该信息。源端在T2之后呈现信息并置位VALID,然后在T3识别该行为时进行传输。在这种情况下,传输发生在一个周期内。
    允许终端在置位相应的READY之前等待VALID被拉高。
    如果READY被置位,则允许在VALID被拉高之前取消READY。

  3. VALID与READY同时置位
    在这里插入图片描述

    源端和终端碰巧都表示可以在T1之后传输地址、数据或控制信息。在这种情况下,传输发生在上升时钟沿,此时VALID和READY可以被识别。这意味着传输发生在T2。


2. 信道信令要求

此部分描述每个通道的握手信号和握手规则。

  • 写地址通道(AW,AWVALID, AWREADY)
    主机只有在驱动有效的地址和控制信息时才能置位AWVALID信号。当置位时,AWVALID必须保持,直到从机置位AWREADY后上升时钟边缘。
    AWREADY的默认状态可以是HIGH或LOW。此规范建议默认状态为高。当AWREADY为HIGH时,从机必须能够接受提供给它的任何有效地址。(本规范不推荐默认的AWREADY状态为LOW,因为它强制传输至少需要两个周期,一个用于置位AWVALID,另一个用于断言AWREADY。)
  • 写数据通道(W,WVALID, WREADY)
    在写突发期间,主机只有在驱动有效的写数据时才能置位WVALID信号。当被置位时,WVALID必须保持,直到从机置位WREADY后上升时钟边缘。
    WREADY的默认状态可以是HIGH,但前提是从机在一个周期内总是可以接受写数据。
    当主机在突发中驱动最后的写传输时,必须断言WLAST信号。
    该规范建议将非活动字节通道的WDATA驱动为零
  • 写响应通道(B,BVALID, BREADY)
    从属只有在驱动一个有效的写响应时才能置位BVALID信号。当置位BVALID时,BVALID必须保持其状态,直到主机置位BREADY后的上升时钟边缘。
    默认状态可以是HIGH,但前提是主机在一个周期内总能接受写响应。
    -读地址通道(RW,ARVALID, ARREADY)
    主机只有在驱动有效的地址和控制信息时才能置位ARVALID信号。当被置位时,ARVALID必须保持置位状态,直到从机置位ARREADY信号后上升时钟沿。
    ARREADY的默认状态可以是HIGH或LOW。此规范建议默认状态为HIGH。如果ARREADY为HIGH,则从机必须能够接受提供给它的任何有效地址。(本规范不建议将默认的ARREADY值设置为LOW,因为它强制传输至少需要两个周期,一个周期断言ARVALID,另一个周期断言ARREADY。)
  • 读数据通道(R,RVALID, RREADY )
    从机只有在驱动有效的读数据时才能置位RVALID信号。当其被置位时,RVALID必须保持其状态,直到主机置位RREADY后的上升时钟边缘。即使从机只有一个读数据源,它也必须仅在响应数据请求时置位RVALID信号。
    主机接口使用RREADY信号来表示它接受数据。RREADY的默认状态可以是HIGH,但前提是主机在启动读事务时能够立即接受读数据。
    当从机驱动突发中的最后读传输时,必须置位RLAST信号。
    本规范建议对于非活动字节通道将RDATA驱动为零。

3. 通道之间的关系
AXI协议需要遵循以下关系:

  • 写响应必须总是在写事务的最后一个写传输之后。
  • 读数据必须总是跟在数据的读地址后面。
  • 通道握手必须符合在通道握手信号之间的依赖中定义的依赖关系。

写数据可以出现在写地址之前,也可以与写地址同一个时钟周期
当主机发出写请求时,它必须能够为该事务提供所有写数据,而不依赖于该主机的其他事务。
当主机发出读请求时,它必须能够接受该事务的所有读数据,而不依赖于来自该主机的其他事务。
注意,主机可以依赖于按顺序从使用相同ID的事务返回的读取数据,因此主机只需要足够的存储空间来读取来自不同ID的事务的数据
信道握手信号之间的依赖关系
在任何事务中:
- 发送信息的AXI接口的VALID信号不能依赖于接收该信息的AXI接口的READY信号。
- 接收信息的AXI接口可以等待,直到它检测到一个VALID信号,然后才置位其相应的READY信号。

  • 读事务中的依赖关系
    在这里插入图片描述

    • 在置位ARVALID之前,主机不能等待从机置位ARREADY。 从机可以在置位ARREADY之前等待置位ARVALID。

    • 从机可以在置位ARVALID之前置位ARREADY。

    • 从机必须等待ARVALID和ARREADY都被置位,然后再置位RVALID,以表明有效数据可用。

    • 从机不能等待主机置位RREADY才置位RVALID。 主机可以在置位RREADY之前等待RVALID被置位。

    • 主机可以在RVALID生效之前置位RREADY。

  • 写事务中的依赖关系:
    AXI3
    在这里插入图片描述

    • 主机不能等待从机置位AWREADY或WREADY后再置位AWVALID或WVALID。

    • 从机可以等待AWVALID或WVALID,或者两者都等待,然后再置位AWREADY。

    • 从机可以在置位AWVALID或WVALID或两者之前置位AWREADY。

    • 从机可以等待AWVALID或WVALID,或两者都等待,然后置位WREADY。
      从机可以在置位AWVALID或WVALID或两者之前置位WREADY。

    • 从机在置位BVALID之前必须等待WVALID和WREADY都被置位。

    • 从机还必须在置位BVALID之前等待置位WLAST。等待是必需的,因为写响应(BRESP)必须在写事务的最后一次数据传输之后才发出信号。

    • 从机不能等待主机置位BVALID之前置位BREADY。 主机可以在置位BREADY之前等待BVALID。

    • 主机可以在置位BVALID之前置位BREADY。
      AXI4,AXI5
      在这里插入图片描述

    • 主机不能等待从机置位AWREADY或WREADY后再置位AWVALID或WVALID。

    • 在置位AWREADY之前,从机可以等待AWVALID或WVALID,或两者都等待。

    • 从机可以在置位AWVALID或WVALID或两者之前置位AWREADY。

    • 从机可以等待AWVALID或WVALID,或两者都等待,然后置位WREADY。

    • 从机可以在置位AWVALID或WVALID或两者之前置位WREADY。

    • 从机可以在置位AWVALID或WVALID或两者之前置位WREADY。

    • 从机必须等待AWVALID、AWREADY、WVALID和WREADY被置位后,才能置位BVALID。

    • 从机还必须在置位BVALID之前等待置位WLAST。这种等待是因为写响应(BRESP)必须在写事务的最后一次数据传输之后才发出信号。

    • 从机不能等待主机置位BVALID之前置位BREADY。

    • 主机可以在置位BREADY之前等待BVALID。

    • 主机可以在BVALID之前置位BREADY

  • 遗留问题
    AXI4和AXI5写事务依赖中描述的附加依赖关系意味着,接受所有写数据并在接受地址之前提供写响应的AXI3从机与AXI4或AXI5不兼容。将一个AXI3遗留从机转换为AXI4或AXI5需要添加一个wrapper。该wrapper确保在从机接受适当的地址之前不提供返回的写响应。


[参考资料] IHI0022H_c_amba_axi_protocol_spec

【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/96927.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微前端:重塑大型项目的前沿技术

引言 随着互联网技术的飞速发展,前端开发已经从简单的页面制作逐渐转变为复杂的应用开发。在这个过程中,传统的前端开发模式已经难以满足大型项目的需求。微前端作为一种新的前端架构模式,应运而生,它旨在解决大型项目中的前端开…

Docker从认识到实践再到底层原理(一)|技术架构

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

适应高速率网络设备的-2.5G/5G/10G网络变压器/网络滤波器介绍

Hqst盈盛(华强盛)电子导读:在高速发展的互联网/物联网时代,为满足高网速的网络数据传输需求,网络设备在制造中也要选用合适的网络变压器/滤波器产品,有哪些可供选择的高速率网络变压器产品也是广大采购人员…

javaee spring 自动注入,如果满足条件的类有多个如何区别

如图IDrinkDao有两个实现类 方法一 方法二 Resource(name“对象名”) Resource(name"oracleDrinkDao") private IDrinkDao drinkDao;

异步迭代器

一、什么是异步迭代器? 实现了 __aiter__() 和 __anext__() 方法的对象。__anext__ 必须返回一个 awaitable对象。async for 会处理异步迭代器的 __anext__() 方法所返回的可等待对象,直到其引发一个 StopAsyncIteration 异常。 二、实例 class Async…

LeetCode239.滑动窗口最大值

看到这道题我就有印象, 我在剑指offer里面做过这道题,我记得当时用的是优先队列,然后我脑子里一下子就有了想法,拿优先队列作为窗口,每往右移动一步,把左边的数remove掉,把右边的数add进来&…

SpringAOP详解(下)

proxyFactory代理对象创建方式和代理对象调用方法过程: springaop创建动态代理对象和代理对象调用方法过程: 一、TargetSource的使用 Lazy注解,当加在属性上时,会产生一个代理对象赋值给这个属性,产生代理对象的代码为…

Linux系统下vim常用命令

一、基础命令: v:可视模式 i:插入模式 esc:命令模式下 :q :退出 :wq :保存并退出 ZZ:保存并退出 :q! :不保存并强制退出二、在Esc下: dd : 删除当前行 yy:复制当前行 p:复制已粘贴的文本 u:撤销上一步 U:…

IC芯片 trustzone学习

搭建Airplay TA环境需要在IC的TrustZone中进行。TrustZone是一种安全技术,用于隔离安全和非安全环境,并保护敏感文件。在TrustZone中,我们需要编写一个叫做TA(Trusted Application)的应用程序来控制这些私密文档。 &am…

重磅!TikTok将于8月底关闭半闭环 切断外链意在电商业务发展?

自2019年开始,TikTok电商业务逐渐走进人们的视线,并引起了市场的广泛关注。作为一家短视频平台,TikTok能够依靠其强大的用户基数与精准的推广策略,将流量成功转化为商业价值。截至目前,TikTok电商业务已经初步形成完整…

Nacos安装

一、下载Nacos1.4.1二、单机版本安装 2.1 将下载的nacos安装包传输到服务器2.2 解压文件2.3 进入bin目录下 单机版本启动2.4 关闭nacos2.5 访问Nacos地址 IP:8848/nacos三、集群版本的安装 3.1 复制nacos安装包,修改为nacos8849,nacos8850&am…

案例实操-获取员工数据

案例:获取员工数据,返回统一响应结果,在页面渲染展示 package com.bignyi.controller;import com.bignyi.pojo.Emp; import com.bignyi.pojo.Result; import com.bignyi.utils.XmlParserUtils; import org.springframework.web.bind.annotat…

-bash: tree: command not found 的解决方法

在学习git操作时发现使用命令tree .git时显示错误 在网上查阅资料后,发现可能是没有安装生成tree的应用,所以我们使用命令安装应用即可 sudo yum install -y tree像这样就是安装成功了 我们再来试试 问题解决了,成功显示出树形结构

CATIA Composer R2023安装教程

软件下载 软件:CATIA Composer版本:2023语言:简体中文大小:1.82G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.60GHz 内存8G(或更高)下载通道①百度网盘丨64位下载链接:https://pa…

简单的springboot应用部署后内存占用量过大问题排查

1.问题背景 需要部署一个演示环境。所有组件都要部署到一台服务器,采用Docker容器部署,发现多个简单的springboot应用占用内存高达2G,后续的应用因为内存不足就部署不了了。排查下内存占用大的原因: docker stats命令&#xff1a…

软件工程(十五) 行为型设计模式(一)

1、责任链模式 简要说明 通过多个对象处理的请求,减少请求的发送者与接收者之间的耦合。将接受对象链接起来,在链中传递请求,直到有一个对象处理这个请求。 速记关键字 传递职责 类图如下 由类图可以比较容易的看出来,其实就是自己关联自己,形成了一个链,并且自己有…

Failed to start bean ‘documentationPluginsBootstrapper‘

问题描述 在集成redisson-spring-boot-starter时,项目启动时报如下错误 之前在集成swagger3.0的时候,遇到过同样的问题,原因是Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.7.X使用的是PathPatternMat…

为什么JVM调优一般都是针对堆内存的,以及堆内存的设置对GC的影响

1、为什么JVM调优一般都是针对堆内存的? 首先JVM的四部分组成:ClassLoader(类装载器)、Runtime data area 运行数据区、Execution Engine 执行引擎、Native Interface 本地接口。 其中运行数据区(Runtime Data Area&am…

性能优化维度

CPU 首先检查 cpu,cpu 使用率要提升而不是降低。其次CPU 空闲并不一定是没事做,也有可能是锁或者外部资源瓶颈。常用top、vmstat命令查看信息。 vmstat 命令: top: 命令 IO iostat 命令: Memory free 命令: 温馨提示&#xff1a…

图解算法--查找算法

目录 查找算法 一、顺序查找 二、二分法查找 三、插值查找法 四、斐波那契查找法 查找算法 查找算法根据数据量的大小,可以将其分为以下两种 内部查找:内部查找是指在内存或内部存储器中进行查找操作的算法。内部查找适用于数据量较小、存储在内存…