当前位置: 首页 > news >正文

深入浅出AXI协议(3)——握手过程

一、前言

        在之前的文章中我们快速地浏览了一下AXI4协议中的接口信号,对此我们建议先有一个简单的认知,接下来在使用到的时候我们还会对各种信号进行一个详细的讲解,在这篇文章中我们将讲述AXI协议的握手协议。

二、握手协议概述

        在前面的文章中我们已经简单说明了为什么需要存在握手协议。主机和从机通过握手协议的方式来确保双方都处在可以进行数据传输的状态。这种双向流量控制机制意味着主机和从机都可以控制信息的移动速率。

        在AXI协议中,全部5个通道使用相同的 VALID/READY 握手机制传输数据及控制信息。传输源(主机)产生 VALID 信号来指明何时数据或控制信息有效。而目的源(从机)产生 READY信号,来表示自己已经准备好接受数据或控制信息。传输发生在 VALID 和 READY 信号同时为高的时候。VALID 和 READY 信号的出现有三种关系:

2.1 VALID 先于 READY 变高(主机先于从机准备好)

        时序图如下:

        主机在T1之后显示地址、数据或控制信息,并生效VALID信号。从机在T2时刻之后生效READY信号,并且主机必须保持其信息稳定,直到在T3发生传输。

        一旦VALID信号有效,那么它就必须保持生效,直到握手过程发生

2.2 READY 先于 VALID 变高(从机先于主机准备好)

        时序图如下:

        从机在T1之后,在地址、数据或控制信息有效之前生效READY信号,表明它可以接受该信息。主机在T2之后呈现信息,并生效VALID,当这个生效被识别时,传输发生在T3。在这种情况下,传输发生在一个周期中。 

        如果READY信号生效了,允许READY信号在VALID信号生效之前失效。和上面的情况做个对比,也就是说一旦主机宣布准备好了(VALID),那么除非完成握手协议,否则主机不允许自行退出传输,而从机宣布准备好了(READY),可以在主机准备好前的任意时刻退出。

2.3 VALID 和READY同时有效(主机和从机同时准备好)

        时序图如下:

        在T1之后,主机和从机都恰好表明它们可以传输地址、数据或控制信息。在这种情况下,当VALID和READY的生效可以被识别。这意味着传输发生在T2时刻。

三、AXI4交易通信的握手信号关系

        为了避免死锁条件,必须考虑握手信号之间存在的依赖关系。在任何交易中:

(1)在AXI4互联中 ,VALID信号不依赖交易中其他元件的READY信号

(2)READY信号能够等待确认VALID信号

        简单说就是主机要是准备好了,就应该直接告知从机,不能等待从机来通知自己,而从机准备好了,可以等待主机来通知自己要进行传输,而不必要告知主机自己的状态。当然从机也可以在自己准备好后就第一时间告诉主机,这也是一种高效的设计方法。

        此外,在不同通道上的握手信号之间存在依赖关系,并且AXI4定义了一个额外的写响应依赖关系。以下各小节定义了这些依赖关系

        (在依赖图中:单箭头指向可以在箭头开始的信号之前或之后生效的信号,双箭头指向只有在箭头开始的信号生效信号之后才必须生效的信号。)

3.1 AXI4读交易的握手信号关系

        下图展示了读交易中握手信号之间的依赖关系:

        有一些内容是和我们之前描述的通用规则是重复的,主要需要注意的:在从机通过确认RVALID信号开始返回数据之前,必须等待确认所有的ARVALID信号和ARREADY信号。(也就是在数据传输之前,必须保证地址传输已经完成)

3.2 AXI4写交易中握手信号关系

        下图展示了写交易中握手信号之间的依赖关系:

        (1)在确认AWVALID信号和WVALID信号之前,主机不需要等待从机确认AWREADY信号或者WAREADY信号;

        (2)在确认AWREADY信号前,从设备能够等待AWVALID信号或者WVALID信号,或者全部这两个信号;

        (3)在确认WREADY信号前,从机能够等待AWVALID信号或者WVALID信号,或者全部这两个信号;

        (4)从设备在确认BVALID信号前,从机必须等待确认所有的WVALID和WREADY信号;

        (5)在确认BVALID信号前,从机不需要等待主机确认BREADY信号;

        (6)在确认BREADY信号前,主机能够等待BVALID信号。

        之前我们还提到了:AXI4还定义了一个附加的AXI4从属写响应依赖关系

        所以对于刚才的内容,我们要进行进一步的优化,关于BVALID信号,其必须等待AWVALID,AWREADY,WVALID,WREADY 全部有效才能生效也就是从机发出回应的前提是地址传输和信息传输都已经进行过了。

四、小结

        在本文中,我们着重介绍了关于AXI4的握手协议它可以使得传输的双方都可以自如地控制传输的速率,我们主要介绍了握手协议出现的3种可能情况。然后对于AXI4交易通信的握手信号的关系做出了介绍:(1)在AXI4互联中 ,VALID信号不依赖交易中其他元件的READY信号(2)READY信号能够等待确认VALID信号;之后介绍了读交易和写交易种握手信号的依赖关系。在接下来的文章中,我们将介绍AXI4的猝发传输相关内容。

相关文章:

深入浅出AXI协议(3)——握手过程

一、前言 在之前的文章中我们快速地浏览了一下AXI4协议中的接口信号,对此我们建议先有一个简单的认知,接下来在使用到的时候我们还会对各种信号进行一个详细的讲解,在这篇文章中我们将讲述AXI协议的握手协议。 二、握手协议概述 在前面的文章…...

Ansible学习笔记5

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

LeetCode 面试题 02.06. 回文链表

文章目录 一、题目二、C# 题解 一、题目 编写一个函数,检查输入的链表是否是回文的。 点击此处跳转题目。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true …...

linux环境没有curl或者telnet命令解决方法与区分linux环境类型

如何区分你当前使用的 Linux 系统是 Ubuntu、CentOS 还是 Alpine,查看 /etc/os-release 文件 [rootlocalhost ~]# cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_I…...

golang channel

channel是不同协程之间异步通信的数据结构。 基本用法 1 构造 ch:make(chan int)//无缓冲 ch:make(chan int,10)//有缓冲2 读操作 val:<-ch <-ch val,ok:<-ch3 写 var data int ch<-data4 关闭 close(ch)5 多路复用 select{ case <-parent.Done():child.…...

高等职业学校物联网实训室建设方案

一、概述 1.1专业背景 物联网&#xff08;Internet of Things&#xff09;被称为继计算机、互联网之后世界信息产业第三次浪潮&#xff0c;它并非一个全新的技术领域&#xff0c;而是现代信息技术发展到一定阶段后出现的一种聚合性应用与技术提升&#xff0c;是随着传感网、通…...

Python基础学习第四天:Python注释

创建注释 注释以 &#xff03; 开头&#xff0c;Python 将忽略它们&#xff1a; 实例 #This is a comment print("Hello, World!")运行实例 注释可以放在一行的末尾&#xff0c;Python 将忽略该行的其余部分&#xff1a; 实例 print("Hello, World!")…...

Puppeteer中使用Stealth.min.js库

这里需要安装npm install puppeteer-extra puppeteer-extra-plugin-stealth&#xff0c;然后&#xff0c;在启动浏览器时&#xff0c;Puppeteer 会自动应用 Stealth.min.js 插件的功能。 const puppeteer require(puppeteer-extra); const StealthPlugin require(puppeteer-…...

JVM ZGC垃圾收集器

ZGC垃圾收集器 ZGC&#xff08;“Z”并非什么专业名词的缩写&#xff0c;这款收集器的名字就叫作Z Garbage Collector&#xff09;是一款在JDK 11中新加入的具有实验性质[1]的低延迟垃圾收集器&#xff0c;是由Oracle公司研发的。 ZGC收集器是一款基于Region内存布局的&#…...

事务管理-事务进阶-propagation属性

目录 事务属性-传播行为 propagation 案例 需求 步骤 具体代码 小结 事务属性-传播行为 propagation 事务传播行为&#xff1a;指的就是当一个事务方法被另一个事务方法调用时&#xff0c;这个事务方法应该如何进行事务控制。即如果事务方法A中调用了事务方法B&#xff0c…...

树多选搜索查询,搜索后选中状态仍保留

<template><div class"half-transfer"><div class"el-transfer-panel"><div><el-checkbox v-model"selectAll" change"handleSelectAll">全部</el-checkbox></div><el-input v-model&qu…...

数据结构--字典树(trie)

概念&#xff1a; Trie 是一种能够快速插入和查询字符串的多叉树结构。、 节点的编号各不相同&#xff0c;根节点编号为0&#xff0c;其他节点用来标识路径&#xff0c;还可以标记单词的插入次数&#xff0c;边表示字符。 tire 维护字符串的集合&#xff0c;支持两种操作&…...

iframe通过postMessage进行跨域通信以及在Angular中使用

写在前面 在前端开发过程中&#xff0c;会遇到一些需要使用iframe的场景&#xff0c;使用iframe关键的一个点是数据之间的传输&#xff0c;基于同源的要求十分苛刻&#xff0c;大家基本上是都是跨域的&#xff0c;如果跨域进行数据传输呢&#xff1f; 大家使用的比较多的就是p…...

rust学习-引用C库

link和extern #[link(name = "...")] 是一个用于链接外部库的属性宏。 可以在 Rust 代码中引入其他语言编写的动态链接库(.so、.dll 等文件),从而实现 Rust 和其他语言的互操作。 #[link(name = "...")] 属性宏用于在 Rust 模块中引入标准 C 库(如 m…...

WebAssembly 在云原生中的实践指南

1 WebAssembly 介绍 WebAssembly&#xff08;Wasm&#xff09;是一种通用字节码技术&#xff0c;它可以将其他编程语言&#xff08;如 Go、Rust、C/C 等&#xff09;的程序代码编译为可在浏览器环境直接执行的字节码程序。 WebAssembly 的初衷之一是解决 JavaScript 的性能问…...

Azure sqlserver 更改字符集

前言 我们的Azure SQL Server是在2018年建的&#xff0c;当时还不支持汉字的字符集。然后最近发现因为字符集的缘故&#xff0c;出了bug&#xff0c;要调整字符集。然后就照着sqlserver 排序规则&#xff08;字符集&#xff09;查看与修改 一通修改。 然后神奇的事情来了&…...

git push时,由于commit了大文件无法成功push的解决办法

2句命令解决&#xff01; 如图可以看见大文件的md5值&#xff0c;复制下来&#xff0c;以下命令会使用到 命令1&#xff1a; git rev-list --objects --all | grep b8d13387c0dfd7a8cec9ff0f6c8ded06eb21556f执行上面命令将得到&#xff0c;如下的输出&#xff0c;可以得知是…...

2023_Spark_实验一:Windows中基础环境安装

Ⅰ、WINDOWS中安装JDK1.8 一、下载安装包 链接&#xff1a;百度网盘 请输入提取码 所在文件夹&#xff1a;根目录或者大数据必备工具--》开发工具(前端后端)--》后端 下载文件名称&#xff1a;jdk-8u191-windows-x64.exe 二、安装JDK 1.现在转到下载的exe文件可用的文件夹&…...

如何在Windows / Mac / iPhone / Android / Online上将MP4转换为MP3

如果只想保留MP4视频的音频轨道&#xff0c;则可以将MP4转换为MP3格式。 MP3是几乎所有设备&#xff0c;播放器和编辑器都支持的数字音频格式。无论您将MP4视频转换为MP3音频以进行脱机播放或进一步编辑&#xff0c;都可以提取音轨并保存为MP3格式。这是在不损失质量的情况下将…...

【App端】uni-app使用百度地图api和echarts省市地图下钻

目录 前言方案一&#xff1a;echarts百度地图获取百度地图AK安装echarts和引入百度地图api完整使用代码 方案二&#xff1a;echarts地图和柱状图变形动画实现思路完整使用代码 方案三&#xff1a;中国地图和各省市地图下钻实现思路完整使用代码 前言 近期的app项目中想加一个功…...

Qwen3-14B部署避坑指南:从环境配置到服务上线的完整流程

Qwen3-14B部署避坑指南&#xff1a;从环境配置到服务上线的完整流程 1. 环境准备与系统要求 在开始部署Qwen3-14B之前&#xff0c;确保你的硬件和软件环境满足以下要求&#xff1a; 1.1 硬件配置建议 组件最低配置推荐配置GPUNVIDIA T4 (16GB)NVIDIA A10G (24GB)或A100 (40…...

企业财务系统集成指南:如何用诺诺开放平台API搞定电子发票全流程(从签约到开票)

企业财务系统集成指南&#xff1a;诺诺开放平台电子发票全流程实战 当财务数字化转型成为企业降本增效的刚需&#xff0c;电子发票作为交易闭环的关键环节&#xff0c;其系统集成质量直接影响业务流畅度。本文将带您全景式拆解从商务对接到技术落地的完整链路&#xff0c;避开那…...

实测Qwen3-4B:256K超长上下文,处理长文档、写长文真实案例

实测Qwen3-4B&#xff1a;256K超长上下文&#xff0c;处理长文档、写长文真实案例 1. 引言&#xff1a;为什么关注长上下文能力 在日常工作和创作中&#xff0c;我们经常遇到需要处理超长文档的场景&#xff1a;分析上百页的PDF报告、阅读整本电子书、编写长篇技术文档等。传…...

Windows下PyTorch CPU版安装全攻略:从下载到验证(含conda常用命令)

Windows平台PyTorch CPU版高效安装指南&#xff1a;从零基础到环境验证 在深度学习领域&#xff0c;PyTorch已成为最受欢迎的框架之一。对于Windows用户而言&#xff0c;特别是刚接触机器学习的新手&#xff0c;正确安装PyTorch是迈入这一领域的第一步。本文将详细介绍如何在Wi…...

ArduinoLog:面向MCU的零开销C++嵌入式日志框架

1. ArduinoLog 项目概述ArduinoLog 是一款专为 Arduino 及兼容嵌入式平台&#xff08;包括 AVR、SAM、ESP8266 等&#xff09;设计的轻量级 C 日志框架。其核心设计哲学是“零运行时开销、零动态内存分配、全编译期可控”&#xff0c;在资源极度受限的微控制器环境中&#xff0…...

【AI编程工具系列:第13篇】华为CodeArts与豆包MarsCode实战:企业级AI编程工具深度对比

摘要 本文全面对比分析华为CodeArts和豆包MarsCode两款企业级AI编程工具。华为CodeArts凭借三层融合架构&#xff08;AI原生IDE集成层、代码智能体引擎层、Codebase语义索引系统层&#xff09;&#xff0c;在安全合规、信创兼容和私有化部署方面表现卓越&#xff0c;代码补全延…...

深入解析STM32 map文件:从编译到内存优化的关键步骤

1. 为什么STM32开发者必须掌握map文件分析 第一次接触STM32的map文件时&#xff0c;我和大多数新手一样感到一头雾水。这个由编译器自动生成的文本文件&#xff0c;乍看就像天书般难以理解。直到有次项目遇到内存不足的紧急情况&#xff0c;我才真正体会到map文件的价值——它不…...

物理引擎核心原理拆解:GJK算法如何用Support函数取代SAT检测

物理引擎核心原理拆解&#xff1a;GJK算法如何用Support函数取代SAT检测 在实时物理模拟的世界里&#xff0c;碰撞检测算法的效率直接决定了虚拟世界的真实感与流畅度。当两个刚体在三维空间中高速运动时&#xff0c;传统分离轴定理&#xff08;SAT&#xff09;需要检测多达15组…...

SDXL 1.0电影级绘图工坊惊艳案例:电影质感风景图动态范围实测

SDXL 1.0电影级绘图工坊惊艳案例&#xff1a;电影质感风景图动态范围实测 1. 项目简介 SDXL 1.0电影级绘图工坊是基于Stable Diffusion XL Base 1.0模型深度优化的AI绘图工具&#xff0c;专门为RTX 4090显卡的24G大显存进行了极致性能调优。与常规部署方式不同&#xff0c;这…...

物理信息机器学习新突破!连中SCI一区TOP刊!

小伙伴们好&#xff0c;我是小嬛。专注于人工智能、计算机视觉、AI大模型领域相关分享研究。【目标检测、图像分类、图像分割、目标跟踪等项目都可做&#xff0c;相关领域论文辅导也可以找我&#xff1b;需要的可联系&#xff08;备注来意&#xff09;】-------正文开始-------…...