【ARM AMBA AXI 入门 1 - AXI 握手协议】

news2025/2/21 21:27:12

文章目录

    • 1.1 AXI 双向握手机制简介
      • 1.1.1 信号列表
      • 1.1.2 双向握手目的
      • 1.1.3 握手过程
    • 1.2 数据通路的握手要求
      • 1.2.1 读数据通路
      • 1.2.2 读地址通路
      • 1.2.3 写数据通路
      • 1.2.4 写地址通路
      • 1.2.5 写回复通路
      • 1.2.6 全信号
    • 1.3 不同数据通路间的约束关系
      • 1.3.1 读操作约束关系
      • 1.3.2 写操作约束关系(AXI3.0版)
      • 1.3.3 写操作约束关系(AXI4.0版)

1.1 AXI 双向握手机制简介

AXI 标准协议有五路独立的数据通道,这些通道都只支持单向传输,五路通道分别为:

  • 读地址通道:主机在读地址通道上写入想要读取的数据的地址以及控制信息;
  • 读数据通道:从机在接收到地址后,将该地址上的数据通过读数据通道发送给主机;
  • 写地址通道:主机在写地址通道上写地址控制信息;在写地址操作结束之后,即主机确保从机已经获得了此次传输的地址和控制信息后,才开始在写数据通道上写数据;
  • 写数据通道
  • 写回复通道:从机在写回复通道上,将此次写传输的状态回复给主机。

每一路数据通道都遵循双向握手机制,即使用 VALIDREADY 信号作为控制信号来传输数据,只有 VALIDREADY 同时为高的时候,才可以正常的发送数据,而通常情况下:

  • VALID 信号用来表示什么时候 “地址数据、和 控制信号” 是有效的;主设备置高 VALID 信号表示主设备已经将数据,地址或者控制信息放到的写总线上,并保持。
  • READY 信号则用来表示什么时候从设备准备好采集数据了; 从设备置高 READY 信号表示从设备已经做好接收的准备。

主设备可以通过 VALID 信号置起来控制发送速度的同时,从设备也可以通过 READY 信号的置起与否控制接收速度,反压主设备的发送速度。
当双方的信息同时为高,时钟上升沿到达后,一次数据传输完成,在 1 到 N 次时钟上升沿后,双方传完了要传的信息后,两信号同时拉低。

1.1.1 信号列表

AXI 标准协议中,双向握手信号共10个,无论是主设备还是从设备,这10个信号都对应于5个输入信号,5个输出信号。

数据通路握手信号对
写地址通路AWVALID, AWREADY
写数据通路WVALID, WREADY
写回复通路BVALID, BREADY
读地址通路ARVALID, ARREADY
读数据通路RVALID, RREADY

1.1.2 双向握手目的

握手:目的是控制数据在总线上的流动和采样;
双向:目的是主设备和从设备都可以控制总线数据流动。于AXI总线 而言,无论是主设备还是从设备,都可以控制数据的传输。

1.1.3 握手过程

握手的三种情况:

  • READY 信号先于 VALID 信号改变:这种情况下,如果我们将目光对向主设备,会发现,从设备在主设备发送数据前就做好了接受的准备,当主设备VALID后,时钟上升沿就完成了数据的传输;READY 信号与 VALID 不同,接收方在置起 READY 之后发现:其实我好像还挺忙,然后拉低 READY 信号。只要此时 VALID 信号没有置起,这种操作是完全可以。在这里插入图片描述

  • READY 信号与 VALID 信号同时改变:表明数据有效的同时也可以进行采样;在这里插入图片描述

  • READY 信号晚于 VALID 信号改变:VALID信号先拉高,表明数据正确,再往后READY拉高,表明可以进行采样。在这里插入图片描述

协议规定:“VALID信号一旦拉高,除非READY信号拉高接收数据完成,不会主动变低”,

1.2 数据通路的握手要求

以下的叙述包含两个前提:

  • 默认READY和VALID信号为低,有效时为高;
  • 叙述中VALID等待READY的表达,实际的意思为在VALID拉高后的时钟上升沿,检测READY是否为高,若为高,完成握手,并不代表VALID与READY的拉高顺序。

1.2.1 读数据通路

在一个 Burst 读传输操作时,从设备在数据有效时置高 RVALID,一旦置高,RVALID 需要等待 RREADY 信号拉高,完成握手,进行数据传输。读数据通道上包括从机发送给主机的读数据以及读操作完成状态回复,数据的宽度可以是 8,16,64,128,256,512 或者是 1024bits。

1.2.2 读地址通路

主设备在地址信号和控制信号有效时置高 ARVALID,一旦置高,需要等待从设备的ARREADY信号置高,完成握手,进行数据传输。虽然名字为读地址通道,但实际上仍由主机写入地址,只不过是写入要读取数据的地址。

1.2.3 写数据通路

在 Burst 写传输时,主设备在写数据有效时置高 WVALID 信号,拉高后 WREADY 等待 WREADY 信号拉高,完成握手。一般来说,写数据都发生在写地址操作之后,但也不是绝对的,在有些情况下,可以先写数据。但是,所有情况下,写回复必然是在写数据之后,是对此次写数据的状态回复。

写通道有一点读通道所不具有的特性是有 STROBE 信号,用于标识写数据中有效的传输字节,即有些无效的数据,出于减少主机工作量的目的,或者在读写宽度不对称时,被放到写数据通道上和有效数据一起发送。而 STROBE 的信号的作用就是标识出这些无用的数据,告知从机不需要接收无用数据。

1.2.4 写地址通路

主设备在地址信息与控制信息有效时,拉高 AWVALID,拉高后 AWVALID 等待从设备拉高 AWREADY,完成握手,进行数据传输。

1.2.5 写回复通路

用于从机将写完成情况回复给主机。所有的写传输操作都需要在写回复通道上接收此次写传输操作的完成情况。值得注意的是写回复是针对一次突发传输的,而不是针对每一次的写数据操作的。(一次突发传输包括了多次写操作)。

1.2.6 全信号

AXI 总线中有两个全局信号:

  • ACLK,全局的时钟信号,所有的传输操作都发生在 ACLK上升沿
  • ARESETn,全局复位信号,低电平有效。

1.3 不同数据通路间的约束关系

在前文中,我们延伸出通道内的约束关系如下
VALID信号一旦拉高,除非READY信号拉高接收数据完成,不会主动变低

不同数据通路之间,同样的存在约束关系,这很好理解:写回复通路的信号传递一定晚于写数据通路,这就天然的构建起不同通路的先后顺序关系,假如不满足这种约束关系,AXI 协议就可能会发生死锁,即 deadlock 没有办法正确工作。

同时一个AXI slave 按功能进行区分的行为建模,无非是读与写两种操作,读操作与写操作的约束关系同样不同。

1.3.1 读操作约束关系

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

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

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

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

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

AMBA4在兼容AMBA3的基础上更为严格,目的是希望从设备不会在接收到数据信号后还需要等待地址信号

推荐阅读
https://developer.arm.com/documentation/100806/0402/?lang=en
https://aijishu.com/a/1060000000134828
http://www.tlcement.com/37357.html
https://zhuanlan.zhihu.com/p/96804919

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

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

相关文章

怎么将pdf文件免费转为扫描件

推荐两个工具,也算是给自己记一下 1、手机:扫描全能王APP 太好使了,可以直接拍照并转换为扫描件 不开会员的话会出现水印,因为我都是自己用或者交作业就没开 支持读取相册,一次一张、多张都可以 如果不想要水印也…

Grafana 如何监控容器指标(五)

Grafana 如何监控容器指标(五) 1、添加cadvisor CAdvisor 是用于收集有关我们容器信息的常用工具。它是普罗米修斯和格拉法纳用来抓取信息和可视化图表、图表、时间序列和其他各种形式的信息的代理人。CAdvisor从我们的容器中收集各种指标,这些信息被普罗米修斯刮擦…

SQL了解之复制(二)

(续)从另一个master初始化slave 前面讨论的假设你是新安装的master和slave,所以,slave与master有相同的数据。但是,大多数情况却不是这样的,例如,你的master可能已经运行很久了&#xf…

Pads和AD画图哪个更好?

Mentor Pads和Altium Designer(简称:AD)是两种常用的电子设计软件,用于PCB设计,它们拥有各自的优势及适用场景,但如何根据项目来选择工具?下面将比对Pads和AD在不同方面的比较,希望对…

chatgpt赋能python:Python安装包制作入门教程

Python 安装包制作入门教程 Python 作为一门简单易学且适用范围广的编程语言,不仅可以运行在各种操作系统上,还能够通过制作安装包方便地分享给其他人使用。本文将介绍如何使用 Python 的一些工具来制作安装包,以帮助 Python 开发者更加便捷…

VFP下载公众号消息图片,小白入门DAY2

封面张终于放正了。 VFP接收到的消息如下 <xml><ToUserName><![CDATA[gh_63145a34e897]]></ToUserName> <FromUserName><![CDATA[oljsK6OgHA9ftJxuCUWg7cFylj6Y]]></FromUserName> <CreateTime>1685926602</CreateTime>…

设置float后,按钮遇上position: relative点击失效

1 问题&#xff1a;设置button浮动到右边之后&#xff0c;button上的onClick事件无法触发 "点击"按钮点不了 2 原因&#xff1a;button浮动到右边之后&#xff0c;下面的div填补上来&#xff0c;但是下面的div设置了position: relative&#xff0c;结果下面的div直接…

“AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型

【机器学习入门与实践】入门必看系列,含数据挖掘项目实战:模型融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘 专栏详细介绍:【机器学习入门与实践】合集入门必看系列,含数据挖掘项目实战:数据融合、特征优化、特征降维、探索性分析等,实战带你掌…

ChatGPT 创业:如何用人工智能 AI 开一家赚钱的公司

这是一篇演示如何使用 ChatGPT prompt &#xff08;提示词&#xff09;的文章。 在了解 ChatGPT 的文案写作能力后&#xff0c;我产生了一个念头&#xff0c;如果让它来写一篇命题作文&#xff0c;会是怎样&#xff1f; Prompt 提示词&#xff0c;和人工智能 AI 对话中一个重要…

产品经理基础能力篇丨认识 ER 模型

最近我在跟其他产品经理交流的时候&#xff0c;总能听到类似这样的话&#xff1a;“其实产品经理的基础能力都差不多&#xff0c;区别主要还是行业经验、对业务的理解能力、规划能力以及项目管理能力等等”&#xff0c;对此我是比较认可的。那么&#xff0c;产品经理的基础能力…

38种未授权访问漏洞总结(1)

本次复现,我们使用的是Vulhub里面的环境 地址:Vulhub - Docker-Compose file for vulnerability environment 安装按着他的来就行了,一般没有问题 安装之后进入目录开启环境就好了 目录 1. ActiveMQ 未授权访问 1. ActiveMQ 反序列化漏洞 (CVE-2015-5254)

深入浅出 Apache DolpinScheduler 补数功能

点击蓝字&#xff0c;关注我们&#x1f53c; 引言 大家好&#xff0c;我叫侯世涛&#xff0c;是个人开发者&#xff0c;也是 Apache DolphinScheduler 社区的贡献者&#xff0c;目前在社区参与开发已经有两年时间&#xff0c;欢迎大家跟我交流。本次分享将深入探讨 DolphinSche…

Linux教程——Linux桌面环境(桌面系统)大比拼【附带优缺点】

早期的 Linux 系统都是不带界面的&#xff0c;只能通过命令来管理&#xff0c;比如运行程序、编辑文档、删除文件等。所以&#xff0c;要想熟练使用 Linux&#xff0c;就必须记忆很多命令。 后来随着 Windows 的普及&#xff0c;计算机界面变得越来越漂亮&#xff0c;点点鼠标…

【Difussion Model】扩散模型的理解和编程实现

目录 理论框架text-to-imgaedecodergeneration modelclip的原理 FID指标&#xff1a;评估图像生成的好坏数学原理traininginference 图像生成模型的本质最大似然估计 正式推导sample 带来随机性从一次到位到N次到位 理论 框架 不断的进行去噪&#xff0c;并且在这个过程中&am…

云原生Docker镜像管理

docker是什么&#xff1f; docker是一个go语言开发的应用容器引擎。 docker的作用&#xff1f; ①运行容器里的应用&#xff1b; ②docker是用来管理容器和镜像的一种工具。 #容器 与 虚拟机 的区别&#xff1f; 容器虚拟机所有容器共享宿主机内核每个虚拟机都有独立的操…

android framework面试经验分享

hi&#xff0c;粉丝朋友们&#xff01; 大家好&#xff01;近来有很多学员粉丝都经常问framework面试的一些经验。 更多framework干货知识手把手教学 Log.i("千里马qq群"&#xff0c;“422901085”);简历书写建议 1、写上自己突出重点的framework一些模块&#xf…

【微信小程序开发】第 6 节 - 小程序的宿主环境

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、宿主环境简介 3、小程序的宿主环境 4、小程序宿主环境包含的内容 4.1、通信模型 4.1.1 通信的主体 4.1.2 小程…

【服务器】远程ERP财务软件

文章目录 前言1.本地访问简介2. cpolar内网穿透3. 公网远程访问4. 固定公网地址 前言 用友畅捷通T适用于异地多组织、多机构对企业财务汇总的管理需求&#xff1b;全面支持企业对远程仓库、异地办事处的管理需求&#xff1b;全面满足企业财务业务一体化管理需求。企业一般将其…

​蚂蚁集团自动化混沌工程 ChaosMeta 正式开源

ChaosMeta 介绍 ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey 的对外开源版本&#xff0c;凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。 经过公司内部多年复杂故障演练场…

黄仁勋台北演讲分享 不论是为了追逐食物而跑,或不被他人当作食物而跑,都要尽量保持奔跑,别缓步前进。

不论是为了追逐食物而跑&#xff0c;或不被他人当作食物而跑&#xff0c;都要尽量保持奔跑&#xff0c;别缓步前进。 2023年5 月 27 日&#xff0c;美国英伟达&#xff08;Nvidia&#xff09;公司创始人黄仁勋先生受邀到位于中国台北的台湾大学参加2023年的毕业典礼&#xff0…