【总线】AXI4第二课时:深入AXI4总线的基础事务

        

        大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁。

        上一课时我们了解到AXI4有五大独立通道,对他们有了初步的认识,这一课时我们再深入的了解下AXI的基础事务,进一步加深认识。

        这里会有一系列的课程,和大家分享AMBA总线家族,欢迎大家一起学习,收藏点赞。

 系列文章

【总线】AMBA总线架构的发展历程-CSDN博客

【总线】设计fpga系统时,为什么要使用总线?-CSDN博客

【总线】AXI总线:FPGA设计中的通信骨干-CSDN博客

【总线】AMBA总线家族的明星成员:AXI协议简介-CSDN博客

【总线】AXI4第一课时:揭秘AXI4总线的五大独立通道-CSDN博客

【总线】AXI4第二课时:深入AXI4总线的基础事务-CSDN博客

【总线】AXI4第三课时:握手机制-CSDN博客 


  •     回顾5个通道,每一个AXI传输通道都是单方向的
  1. 读地址 read address
  2. 读数据 read data
  3. 写地址 write address
  4. 写数据 write data
  5. 写回复 write response
  •        每个事务都有地址和控制信息在地址通道( address channel)中,用来描述被传输数据的性质。
  •         读事务的结构图如下。

  •         写事务的结构图如下

 

  •          这 5 条独立的通道都包含一个信息信号和一个双路的 VALD、 READY 握手机制

  •         信息源通过 VALID 信号来指示通道中的数据和控制信息什么时候有效。目地源用READY 信号来表示何时能够接收数据。 读数据和写数据通道都包括一个LAST 信号,用来指明一个事物传输的最后一个数据。

  •          读和写事务都有他们自己的地址通道,这地址通道携带着传输事务所必须的地址和信息。
  1. 独立的读写地址通道:每个读写事务都拥有自己的地址通道。这意味着读事务和写事务分别通过它们自己的地址通道进行通信。

  2. 地址和控制信息:每个地址通道都携带了执行事务所需的全部地址和控制信息。这包括事务的目标地址、事务的类型、大小等。

  3. 支持的机制

    • 可变长度突发:突发(Burst)是指连续的数据传输。在AXI协议中,突发的长度可以变化,从1到16个数据传输(transfers)。
    • 突发传输大小:每个突发传输的大小可以是8到1024位(bits),这提供了灵活的数据传输粒度。
    • 包装(Wrapping)、增量(Incrementing)和非增量(Non-incrementing)突发
      • 包装突发:在达到某个边界时,地址会“包装”回到较低的地址继续传输。
      • 增量突发:地址随着每个传输而递增。
      • 非增量突发:地址在突发传输中保持不变。
    • 原子操作:原子操作确保在执行期间不会被其他事务中断,使用独占(Exclusive)或锁定(Locked)访问来实现。
    • 系统级缓存和缓冲控制:AXI协议支持缓存和缓冲机制,以提高系统的性能和效率。这允许对数据进行缓存、合并写操作等。

总结来说,这部分强调了AXI协议在处理读写事务时,通过地址通道提供了一系列的高级特性,以支持复杂的系统设计和优化数据传输效率。

  •         读数据通道传送着从设备到主机的读数据和读响应信息。读响应信息指明读事务的完成状态。

  •         写数据通路传送着主机向设备的写数据。每八个数据都会有一个 byte lane ,用来指明数据总线上面的哪些 byte 有效。

  • 写响应通道提供了设备响应写事务的一种方式。
  1. 写响应通道的作用:在AXI协议中,写响应通道是用于从机(Slave)向主机(Master)发送写事务响应的通信路径。这意味着,当主机向从机发起写事务请求后,从机通过写响应通道告知主机该事务是否成功完成。

  2. 完成信号的使用:所有写事务都使用完成信号(Completion Signal)来指示事务的结束。完成信号是写事务中一个重要的部分,它确保了主机知道何时写操作已经完成。

  3. 完成信号的触发时机:完成信号是针对每个突发(Burst)触发一次,而不是针对突发内的每个单独数据传输。这里的“突发”是指一系列连续的写操作,它们共享相同的地址和控制信息。

    • 例如,如果一个突发包含4个数据传输,那么完成信号将在最后一个数据传输完成后触发一次,而不是在每个数据传输后分别触发。
  4. 事务完成的确认:完成信号的存在确保了主机可以准确地知道何时写事务已经完全处理完毕,从而可以继续执行后续的操作或者发起新的事务。

总结来说,这部分强调了写响应通道在AXI协议中用于指示写事务完成的重要性,以及完成信号是按突发而不是按单个数据传输来触发的机制。这有助于提高系统的效率,因为它减少了需要发送的信号数量,并且允许主机更有效地管理数据传输和事务处理。

  •         主机和设备的接口和互联图如下。

在AMBA AXI协议中接口定义如何支持多种不同的互连(interconnect)实现方式,以及系统设计中常见的几种互连方法。以下逐点解释:

  1. 接口定义的灵活性:AXI协议的接口定义允许实现多种不同的互连架构。这意味着设计者可以根据系统的需求和约束,选择或设计合适的互连方案。

  2. 互连的等效设备:在AXI协议中,互连在功能上等同于一个具有对称的主(master)和从(slave)端口的设备。这样,实际的主设备和从设备可以连接到这个互连设备上,就像它们直接连接到另一个AXI设备一样。

  3. 常见的互连方法

    • 共享地址和数据总线:所有设备共享相同的地址和数据总线。这是一种简单的互连方式,但可能在高负载下成为性能瓶颈。
    • 共享地址总线和多个数据总线:系统中有一条共享的地址总线,但是有多条数据总线。这样可以在保持地址总线简单性的同时,提高数据传输的带宽。
    • 多层互连,具有多个地址和数据总线:这是一种更复杂的互连方式,可能包含多个层次的地址和数据总线,以支持大规模或高性能的系统设计。
  4. 地址和数据通道带宽的需求差异:在大多数系统中,地址通道的带宽需求远小于数据通道。这是因为地址信息通常比数据量小得多,而且通常不需要那么高的传输速率。

  5. 系统性能与互连复杂性的平衡:通过使用共享地址总线和多个数据总线的方案,系统可以在保持较低互连复杂性的同时,实现较高的系统性能。这种方法允许并行数据传输,提高了整体的数据传输效率。

总结来说,这部分内容强调了AXI协议提供的灵活性,允许设计者根据系统的具体需求选择最合适的互连策略,并通过合理的互连设计实现高性能和适中的系统复杂性。

  • 寄存器切片的使用

  1. 单向传输:每个AXI通道仅支持一个方向的信息传输,没有规定各个通道之间必须有固定的关系。

  2. 灵活性:由于通道之间没有固定的顺序要求,可以在任何通道中插入寄存器切片,而不会影响其他通道的操作。

  3. 寄存器切片的作用:寄存器切片可以被看作是一种缓冲机制,它在数据传输路径中增加了一个或多个寄存器阶段。这样做的目的是为了在设计中引入可配置的延迟,以适应不同操作频率的组件。

  4. 延迟与频率的权衡:插入寄存器切片会增加数据传输的延迟(因为数据需要通过额外的寄存器阶段),但这样做可以提高系统的最高操作频率。这是因为额外的寄存器可以用于时钟域交叉(Clock Domain Crossing, CDC),减少亚稳态的风险,并允许不同频率的组件协同工作。

  5. 互连中的寄存器切片使用:在互连(interconnect)的几乎任何位置都可以使用寄存器切片。这为设计者提供了灵活性,可以根据系统的需求在不同的位置插入寄存器切片。

  6. 性能优化:在处理器和高性能内存之间可能使用直接、快速的连接,以最小化延迟。而在通往性能要求不高的外围设备的较长路径上,可以使用简单的寄存器切片来隔离,这样可以降低对高速时钟的需求,同时减少功耗。

总结来说,寄存器切片是一种设计工具,用于在系统设计中平衡延迟和操作频率,以及适应不同性能要求的组件。通过在AXI通道中适当地使用寄存器切片,设计者可以实现更高效的系统性能和更低的功耗。

  •          传输地址信息和数据都是在 VALID 和 READY 同时为高时有效。

  •         突发式读的时序图如下

        当地址出现在地址总线后, 传输的数据将出现在读数据通道上。 设备保持 VALID为低直到读数据有效。为了表明一次突发式读写的完成,设备用 RLAST 信号来表示最后一个被传输的数据。

  •  重叠突发式读时序图如下

设备会在第一次突发式读完成后处理第二次突发式读数据。也就意味着,主机一开始传送了两个地址给设备。 设备在完全处理完第一个地址的数据之后才开始处理第二个地址的数据。
 

  • 突发式写时序图如下

这一过程的开始时,主机发送地址和控制信息到写地址通道中,然后主机发送每一个写数据到写数据通道中。当主机发送最后一个数据时, WLAST 信号就变为高。当设备接收完所有数据之后他将一个写响应发送回主机来表明写事务完成。

  • AXI 协议支持乱序传输。他给每一个通过接口的事务一个 IDtag。协议要求相同 ID tag 的事务必须有序完成,而不同 ID tag 可以乱序完成。

在AXI协议中,"无序传输"(out-of-order transactions)是一个重要的特性,它允许系统在处理多个事务时提高效率和吞吐量。这段描述提到的“复杂从机(Complex slaves)可以无序返回读取数据”可以理解如下:

  1. 复杂从机的能力:在AXI协议中,从机(Slave)可以是简单的或者复杂的。复杂从机拥有更高级的功能,比如内部缓冲(buffering)或者其他能够改善性能的特性。

  2. 无序返回数据:复杂从机在处理多个读取事务时,可能会根据其内部逻辑或优化,选择在不同顺序返回数据项。这意味着,即使某些数据项属于较早发起的读取事务,它们也可能在属于较晚事务的数据项之后被返回。

  3. 内部缓冲的影响:复杂从机可能拥有内部缓冲区,能够暂存一定量的数据。如果一个较晚发起的读取请求所需的数据已经存在于缓冲区中,那么复杂从机可以更快地提供这些数据,即使这意味着跳过了一些较早但尚未处理的请求。

  4. 对系统性能的影响:这种无序返回数据的能力可以减少等待时间和提高系统的整体性能。例如,如果系统能够快速响应对已经缓存数据的请求,那么它就可以更有效地利用资源,减少主设备(Master)的空闲时间。

  5. 事务ID的作用:尽管从机可以无序返回数据,但是每个事务都会分配一个唯一的ID,以确保每个事务的完整性和可追踪性。这样,即使数据返回是无序的,主设备也能够识别和处理每个事务的正确数据。

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

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

相关文章

数字化和信息化的区别是什么?

市面上有些企业专门区分出了数字化和信息化的区别,认为数字化基于信息化的基础之上。但也有一些专家认为两者不是独立或前后的概念,属于近似概念,它到底应当怎样被定义? 其实之前已经写过好几篇这个类型的文章了,但是总…

express+vue在线im实现【四】

往期内容 expressvue在线im实现【一】 expressvue在线im实现【二】 expressvue在线im实现【三】 本期示例 本期总结 支持了音频的录制和发送&#xff0c;如果觉得对你有用&#xff0c;还请点个免费的收藏与关注 下期安排 在线语音 具体实现 <template><kl-dial…

Retrofit类型安全的HTTP客户端库

简介 Retrofit是Square公司开发的一个类型安全的HTTP客户端库&#xff0c;用于Android和Java平台&#xff0c;它使得与Web服务的交互变得更加简单快捷。Retrofit将HTTP API转换成Java接口&#xff0c;让你可以用更简洁的代码形式调用RESTful API&#xff0c;Android网络编程重点…

Vue与SpringSecurity认证整合-06

Vue与SpringSecurity整合 我们要知道springsecurity是一个安全框架,我们在后端的时候没有接触前端,springsecurity引入依赖之后,启动项目会对我们进行拦截,让我们登录,然后我们制定了一个登录页面,也是后端的,我们可以指向我们的登录页面,但是与Vue整合之后,登录页面肯定是在Vu…

贾英才主任受聘担任“两个中心”专家委员会委员

近日&#xff0c;第二届海峡两岸中西医结合肾脏病学术大会授牌仪式在北京隆重举行。 这一盛会吸引了众多医学领域的专家学者&#xff0c;共同探讨中西医结合治疗肾脏病的最新进展和未来发展方向。 在此次大会上&#xff0c;崇文门中医医院的贾英才主任凭借其在肾脏病领域的卓…

【C语言 || 数据结构】二叉树

文章目录 前言 二叉树1.树1.1树的定义1.2 树的结构 2.特殊的树&#xff08;二叉树&#xff09;2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的储存2.3.1 顺序储存二叉树2.3.2 链表储存二叉树 2.4 二叉树的遍历2.4.1 二叉树的中序遍历2.4.2 二叉树的前序遍历2.4.3 二叉树的后序遍…

【React】使用Token做路由权限控制

在components/AuthRoute/index.js中 import { getToken } from /utils import { Navigate } from react-router-domconst AuthRoute ({ children }) > {const isToken getToken()if (isToken) {return <>{children}</>} else {return <Navigate to"/…

服务器主机托管服务内容科普

在现代信息技术快速发展的背景下&#xff0c;服务器主机托管服务已成为众多企业、机构和个人不可或缺的一部分。本文将为您详细科普服务器主机托管服务的内容&#xff0c;帮助您更好地理解和选择适合自己的托管方案。 一、硬件与基础设施 服务器主机托管服务首先提供了硬件和网…

艾公益 艾多美(中国)有限公司向烟台市捐赠爱心物资

2024年6月18日&#xff0c;艾多美&#xff08;中国&#xff09;有限公司&#xff0c;在烟台市高新区举办了2项爱心捐赠仪式。 在本次爱心捐赠活动中&#xff0c;艾多美&#xff08;中国&#xff09;有限公司携手烟台市慈善总会向烟台市贫困女童捐赠助学金、爱心物资&#xff0c…

【字符串验证】验证码

【字符串验证】验证码 【参考代码】 #include <iostream> #include <cstring> using namespace std; int main(){ string a "AV8d";string b; cin >> b;for(int i0; i<a.length(); i){if(a[i]>A && a[i] < Z){a[i]32;}if…

算法008:四数之合

四数之和. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/4sum/description/ 在前面的两个题中&#xff0c;我们已经完成了两数之和和三数之和&#xff0c;到本题四…

React 中的服务器渲染组件

在前后分离架构以前&#xff0c;所有的 Html 业务都是后端渲染&#xff0c;返回前前端显示&#xff0c;后端渲染把前后端逻辑耦合在一起&#xff0c;增大系统的复杂度&#xff0c;不易于扩展。React 中的 Server组件&#xff0c;准确的说是服务器进行渲染&#xff0c;无论是什么…

【Tello无人机】使用Matlab完成控制器的设计—建模

模型辨识篇 在实际的无人机系统中&#xff0c;控制器的设计至关重要&#xff0c;它直接影响无人机的稳定性和响应能力。然而&#xff0c;要设计出高效、可靠的控制器&#xff0c;首先必须准确理解无人机的动态行为&#xff0c;这就需要通过收集输入输出数据来辨识其运动学模型。…

Java面试八股之Mybatis和JPA的区别

Mybatis和JPA的区别 Mybatis 和 JPA&#xff08;Java Persistence API&#xff09;是两种在 Java 应用程序中用于数据持久化的框架&#xff0c;它们各有特点和适用场景。下面是它们之间的一些主要区别&#xff1a; 映射方式&#xff1a; Mybatis 是半自动的 ORM 框架&#xf…

MACER

MACER: A Modular Framework for Accelerated Compilation Error Repair 基本信息 博客贡献人 页禾七 作者 Darshak Chhatbar&#xff0c; Umair Z. Ahmed&#xff0c;Purushottam Kar 摘要 自动编译错误修复&#xff0c;即对无法编译的错误程序提出修复建议的问题&…

Android集成mapbox教程

目录 简介准备工作创建Token系统开发简介 Mapbox是来自美国的一家为开发者提供地图服务和开发工具的开放平台。Mapbox以开源的形式构建了矢量瓦片技术生态,开发了矢量切片工具、瓦片服务传输框架。Mapbox的底图平台非常受欢迎,特别是开发者和学生群体,可以使用免费的开源软…

吊打Unity的角色动画重定向专业版工具FPS手臂武器动画动物动画角色动作微调烘焙20240620

今天发现一款关注已久的Unity插件上架商店了&#xff0c;可以将动画从一个通用/人形角色重新定位到另一个通用角色。 吊打Unity的角色动画重定向专业版工具FPS手臂武器动画动物动画角色动作微调烘焙202406201103 Unity 中任何通用角色的终极解决方案。它没有 Humanoid 系统的限…

C++的智能指针 RAII

目录 产生原因 RAII思想 C11的智能指针 智能指针的拷贝与赋值 shared_ptr的拷贝构造 shared_ptr的赋值重置 shared_ptr的其它成员函数 weak_ptr 定制删除器 简单实现 产生原因 产生原因&#xff1a;抛异常等原因导致的内存泄漏 int div() {int a, b;cin >> a…

生成对抗网络——CGAN(代码+理解)

目录 一、CGAN模型介绍 二、CGAN训练流程 1. 初始化 2. 数据准备 3. 输出模型计算结果 4. 计算损失 5. 反向传播和优化 6. 迭代训练 三、CGAN实现 1. 模型结构 &#xff08;1&#xff09;生成器&#xff08;Generator&#xff09; &#xff08;2&#xff09;判别器…

ShuffleNet系列论文阅读笔记(ShuffleNetV1和ShuffleNetV2)

目录 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices摘要Approach—方法Channel Shuffle for Group Convolutions—用于分组卷积的通道重排ShuffleNet Unit—ShuffleNet单元Network Architecture—网络体系结构 总结 ShuffleNet V2: Pra…