AMBA_AXI Protocol_基本读写事务

news2024/9/20 14:47:47

基本读写事务

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

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


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【闭源期刊】Elsevier旗下,1区(TOP),3个月录用

闭源期刊 1区(TOP) 出版社:Elsevier 影响因子:IF(2022)8.5-9.0 期刊分区:JCR1区,中科院2区(无预警记录) 检索情况:SCIE&EI 双检&#xff…

Nacos使用(上):Nacos安装

Nacos使用(上):Nacos安装 Nacos简介 ​ Nacos /nɑ:kəʊs/ 是阿里巴巴的开源项目,是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 ​ Nacos作用类似于Spring…

【人工智能】—_监督学习、分类问题、决策树、信息增益

文章目录 Decision Trees 决策树建立决策树分类模型的流程如何建立决策树? 决策树学习表达能力决策树学习信息论在决策树学习中的应用特征选择准则一:信息增益举例 结论不足 回到餐厅的例子从12个例子中学到的决策树: Decision Trees 决策树 什么是决策…

基础知识回顾:借助 SSL/TLS 和 NGINX 进行 Web 流量加密

原文作者: Robert Haynes 原文链接: 基础知识回顾:借助 SSL/TLS 和 NGINX 进行 Web 流量加密 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn 网络攻击者肆无忌惮、作恶多端,几乎每天都有网络入侵、数据窃取或勒索软件攻击…

委托和方法的异步调用

概述 异步调用,通常情况下用于执行一些耗时的操作,同时能够保证当前主线程在执行异步调用之后依然能够继续向下执行。异步执行时,系统往往会创建一个新的线程,但需注意,当每一个异步执行都需要创建线程时&…

【校招VIP】java语言考点之synchronized和volatile

考点介绍: synchronized和volatile两个关键字也是校招常考点之一。volatile可以禁止进行指令重排。synchronized可作用于一段代码或方法,既可以保证可见性,又能够保证原子性...... 『java语言考点之synchronized和volatile』相关题目及解析…

C语言:指针数组

一、指针数组介绍 指针数组本质是数组,是一个存放指针的数组 代码如下: arr1和arr2就是指针数组 int main() {int a 1; int *pa &a;int b 2; int *pb &b;int c 3; int *pc &c;int d 4; int *pd &d;int e 5; int *pe &e;in…

【pyqt5界面化工具开发-12】QtDesigner图形化界面设计

目录 0x00 前言 一、启动程序 二、基础的使用 三、保存布局文件 四、加载UI文件 0x00 前言 关于QtDesigner工具的配置等步骤(网上链接也比较多) 下列链接非本人的(如果使用pip 在命令行安装过pyqt5以及tools,那么就可以跳过…

Ansible学习笔记5

copy模块:(重点) copy模块用于对文件的远程拷贝(如把本地的文件拷贝到远程主机上。) 在master的主机上准备一个文件,拷贝文件到group1的所有主机上。 这个用的频率非常高,非常有用的一个模块…

28 - restful -request和response

response: 需要定制返回字段的格式 request: 需要校验前端传来的参数 代码示例: 1. 创建模型类 from datetime import datetime from ext import dbclass User(db.Model):id db.Column(db.Integer, primary_keyTrue, autoincrementTrue)username db.Colu…

Error:java: OutOfMemoryError: insufficient memory

现象:idea编译代码(Build)报错:Error:java: OutOfMemoryError: insufficient memory 亲测有效 在进行代码编译的时候出现以上的提示。从中可以看是内存方面的问题。只需要调节IDEA在编译过程中,内存大小的设置&#…

面向对象的设计原则

设计模式 Python 设计模式:对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计 面向对象 三大特性:封装、继承、多态 …

代码随想录笔记--哈希表篇

目录 1--有效的字母异位词 2--两个数组的交集 3--两数之和 4--四数相加II 5--三数之和 6--四数之和 1--有效的字母异位词 利用哈希表存储每个字母的出现次数&#xff0c;比较两个字符串各个字母出现次数是否相等即可&#xff1b; #include <iostream> #include <…

常用的css样式

1&#xff1a;flex布局 .flex-between {display: flex;justify-content: space-between; }.flex-evenly {display: flex;justify-content: space-evenly; }.flex-end {display: flex;justify-content: flex-end; }.flex {display: flex; }.flex-center {display: flex;justify…

实验室的服务器和本地pycharm怎么做图传

参考 远程调试 qt.qpa.xcb: could not connect to display, echo DISPLAY为空[已解决]_功夫小象的博客-CSDN博客 先安装x11 MobaXterm x11-forwarding_C--G的博客-CSDN博客 我是在容器中搞得 1&#xff0c;安装qt5 pip install PyQt5 -i https://pypi.douban.com/simple …

vue 入门案例模版

vue 入门案例1 01.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> &l…

科创板50ETF期权交易:详细规则、费用、保证金和开户攻略

科创板50ETF期权是指以科创板50ETF为标的资产的期权合约。科创板50ETF是由交易所推出的一种交易型开放式指数基金&#xff08;ETF&#xff09;&#xff0c;旨在跟踪科创板50指数的表现&#xff0c;下文介绍科创板50ETF期权交易&#xff1a;详细规则、费用、保证金和开户攻略&am…

如何解决vue3.0+typescript项目提示找不到模块“./App.vue

一、解决方案如下&#xff1a;需在项目目录下加上下面这段代码即可&#xff01;如果没有vite-env.d.ts目录需要继续往下看 declare module *.vue {import type { DefineComponent } from vueconst vueComponent: DefineComponent<{}, {}, any>export default vueCompon…

云服务器利用Docker搭建sqli-labs靶场环境

一、安装宝塔面板 使用xshell、electerm、SecureCRT等远程终端连接登陆上云服务器&#xff0c;在Linux宝塔面板使用脚本安装 安装后&#xff0c;如下图&#xff1a;按照提示&#xff0c;在云服务器防火墙/安全组放行Linux宝塔面板的端口 在浏览器打开上述网址&#xff0c;登…

创建一个空的vue项目,配置及步骤

查看需要的环境及插件版本 创建vue命令 默认配置 手动配置 其他 hash和history的区别&#xff1a; hash 模式&#xff0c;url后&#xff0c;会带着#&#xff0c;改变hash&#xff0c;页面不会刷新&#xff0c;不会更改整个页面&#xff0c;只会更改#后面路由配置的内容&#x…