草庐IT

AXI协议详解(4)-突发传输

米小杰DIY 2023-07-25 原文

突发传输

本章介绍 AXI 突发类型以及如何计算突发内传输的地址和字节通道。 它包含以下部分:

  • 寻址选项
  • 突发长度
  • 突发大小
  • 突发类型
  • 突发地址

4.1 关于寻址选项

AXI 协议是基于突发的,Master通过驱动传输控制信息和传输中第一个字节的地址来开始每个突发。 随着突发事务的进行,Slave负责计算突发中后续传输的地址。
突发不得跨越 4KB 边界,以防止它们跨越Slave之间的边界并限制Slave内所需的地址增量器的大小。

4.2 突发长度

AWLEN 或 ARLEN 信号指定每个突发内发生的数据传输次数。 如表 4-1 所示,每个突发的传输长度为 1-16。

Table4-1 Burst length encoding

对于回环突发,突发的长度必须是 2、4、8 或 16 次传输。
每笔事务都必须具有 ARLENAWLEN 指定的传输次数。 没有任何组件可以提前终止突发以减少数据传输的数量。 在写突发期间,Master可以通过解除所有写选通来禁止进一步写入,但它必须完成突发中剩余的传输(无论如何不能中断正在进行中的突发)。 在读突发期间,Master可以丢弃进一步的读数据,但它必须完成突发中剩余的传输。
注意:
在访问读取敏感设备(例如 FIFO)时,丢弃不需要的读取数据可能会导致数据丢失。 Master绝不能使用比所需长度更长的突发长度来访问此类设备(不能多读)。

4.3 突发大小

表 4-2 显示了 ARSIZEAWSIZE 信号如何指定在突发内的每个节拍或数据传输中传输的最大数据字节数。

Table4-2 Burst size encoding

AXI 根据传输地址确定每次传输使用数据总线的哪些字节通道。
对于传输大小小于数据总线的增量或回环突发,对于突发的每个节拍,数据传输在不同的字节通道上。 固定突发的地址保持不变,每次传输都使用相同的字节通道。
任何传输的大小不得超过事务中组件的数据总线宽度。

4.4 突发类型

AXI 协议定义了三种突发类型,如下所述:

  • 固定突发(地址固定的突发)
  • 增量突发(地址递增的突发)
  • 回环突发。(在回环边界处回绕到较低地址的递增地址突发)

表 4-3 显示了 ARBURST 或 AWBURST 信号如何选择突发类型。

Table4-3 Burst type encoding

4.4.1 固定突发

在固定突发中,突发中每次传输的地址都保持不变。 这种突发类型用于重复访问同一位置,例如加载或清空外设 FIFO 时。

4.4.2 增量突发

在增量突发中,突发中每次传输的地址都是前一个传输地址的增量。 增量值取决于传输的大小。 例如,大小为四字节的突发中每次传输的地址是前一个地址加四。

4.4.3 回环突发

回环突发类似于递增突发,突发中每次传输的地址都是前一个传输地址的增量。 然而,在回环突发中,当到达回绕边界时,地址回绕到较低地址。 回环边界是突发中每个传输的大小乘以突发中的传输总数。

两个限制适用于回环突发:

  • 起始地址必须与传输的大小对齐
  • 突发的长度必须是 2、4、8 或 16

4.5 突发地址

本节提供了一些简单的公式,用于确定突发内传输的地址和字节通道。 公式使用以下变量:

Variables解释
Start_AddressMaster发出的起始地址
Number_Bytes每次数据传输中的最大字节数
Data_Bus_Bytes数据总线中的字节通道数
Aligned_Address起始地址的对齐版本
Burst_Length突发内的数据传输总数
Address_N突发内传输 N 的地址;N是2-16之间的整数
Wrap_Boundary回环突发中的最低地址
Lower_Byte_Lane传输的最低寻址字节的字节通道
Upper_Byte_Lane传输的最高寻址字节的字节通道
INT(x)x 的四舍五入整数值

使用以下等式来确定突发内的传输地址:

使用以下等式确定突发中第一次传输的地址:

使用此等式确定突发中第一次传输之后的任何传输的地址:

对于回环突发,扩展 Wrap_Boundary 变量以考虑回环边界:

如果

使用如下公式:

在卷绕到边界之后,使用如下公式:

使用以下等式确定用于突发中的第一次传输的字节通道:

使用下列等式来确定在突发中的第一次传输之后要用于所有传输的字节通道:

数据基于如下公式传输:

有关AXI协议详解(4)-突发传输的更多相关文章

  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. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  5. ruby - 使用 Ruby 将 HTTP GET 的响应主体流式传输到 HTTP POST - 2

    我正在尝试下载一个大文件,然后使用Ruby将该文件发布到REST端点。该文件可能非常大,即超过可以存储在内存中甚至磁盘上的临时文件中的容量。我一直在用Net::HTTP尝试这个,但我愿意接受任何其他库(rest-client等)的解决方案,只要他们做我想做的事情。这是我尝试过的:require'net/http'source_uri=URI("https://example.org/very_large_file")source_request=Net::HTTP::Get.new(source_uri)source_http=Net::HTTP.start(source_uri.ho

  6. ruby-on-rails - 将 Heroku 环境变量传输到 Docker 实例 - 2

    我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目

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

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

  8. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  9. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  10. 最强Http缓存策略之强缓存和协商缓存的详解与应用实例 - 2

    HTTP缓存是指浏览器或者代理服务器将已经请求过的资源保存到本地,以便下次请求时能够直接从缓存中获取资源,从而减少网络请求次数,提高网页的加载速度和用户体验。缓存分为强缓存和协商缓存两种模式。一.强缓存强缓存是指浏览器直接从本地缓存中获取资源,而不需要向web服务器发出网络请求。这是因为浏览器在第一次请求资源时,服务器会在响应头中添加相关缓存的响应头,以表明该资源的缓存策略。常见的强缓存响应头如下所述:Cache-ControlCache-Control响应头是用于控制强制缓存和协商缓存的缓存策略。该响应头中的指令如下:max-age:指定该资源在本地缓存的最长有效时间,以秒为单位。例如:Ca

随机推荐