AMBA之AXI 总线

AMBA概述

AMBA(Advanced Microcontroller Bus Architecture)是ARM公司开发的一种高级微控制器总线架构,用于连接处理器、存储器和外设的通信。AMBA总线架构定义了一组协议和接口,用于实现高性能、低功耗、可扩展的系统设计。

AMBA总线架构由三个关键组件组成:AMBA高级总线(Advanced High-performance Bus,AHB)、AMBA系统总线(Advanced System Bus,ASB)和AMBA高级外设总线(Advanced Peripheral Bus,APB)。

AHB是AMBA总线架构中的主要总线,用于连接处理器和高带宽的内存等主要外设。AHB总线支持主-从模式,可以实现多个主设备与从设备之间的高速数据传输。

ASB是一个更高级的总线,用于连接多个AHB总线,以实现更复杂的系统。ASB总线支持多层级结构,可以连接多个处理器和外设子系统。

APB是一个低功耗、低带宽的总线,主要用于连接低速外设和控制器。APB总线相对于AHB总线更简单,适用于功耗敏感的应用。

AMBA总线架构的优势在于其灵活性和可扩展性。通过使用AMBA总线,开发人员可以轻松地集成不同的处理器、存储器和外设,从而实现高性能、低成本的系统设计。此外,AMBA总线架构还提供了一些高级特性,如流水线传输、扩展性和硬件调试功能,使开发人员能够更好地优化系统性能和调试问题。

The AXI protocol:


。适合高带宽和低延迟的设计
。高宽带(Broadband)是指具有较高数据传输速率的网络连接,
。低延迟是指计算机系统或通信网络中的较短时间延迟。 它通常用于指网络数据包通过网络连接从发送计算机到接收计算机的往
返所需的时间。
。不需要复杂的桥即可提供高频操作
。可以满足多种组件的接口需求
。适合高初始访问延迟的存储器控制器
提供互联架构实现的灵活性
向后兼容AHB与APB接口
同时,该协议还拥有以下特点:
。分离的地址/控制和数据阶段(Separate address/control and data phases.)
。通过使用字节选通信号的方式支持非对齐数据传输(Support for unaligned data transfers,using byte strobes.)
既然这里提到了非对齐传输,那么就再多嘴一句,什么是非对齐传输。

非对齐传输:

1.1.1.1 突发长度


Burst length :指在一次突发传输中进行的数据传输次数,用AXLEN字段标识。由于标识值是从0开始得到,实际的突发长度=AxLEN+1
突发大小(burst size):指突发传输中的每次数据传输的字节数,用AxSIZE字段表示。
突发大小=2^AxSIZE


1.1.1.2非对齐传输


对齐传输是指地址的[1:0]=0,所以从第三位开始,地址也就是4的倍数,0x00,0x04,0x08等,都是对齐的,
AHB总线只支持对齐传输,而AXI协议支持地址的非对齐传输。在AXI传输中,只需要在传输时给出首地址,其后的传输地址都是由首地
址和突发大小,突发类型决定的。
在第一笔数据的传输时,如果首地址不是对齐的,那么主设备会在第一笔传输中对数据进行填充,直到首次传输填充至地址对齐。然后
再用WSTRB信号将填充的数据标记位无效。这样!之后的传输地址也就都是对齐的了。

图中传输的首地址是0x01,是非对齐的。AXI协议会对0x00地址进行填充,并且用WSTRB信号标记。这样传输的首地址就是0x00.随后
笔的传输自然也就对齐了!
需要注意的是,这笔突发传输的第一笔有效数据,在master端和slave端都是3bytes!因为第-byte的数据已经被标记无效了(图中灰
色,e,发送数据644234-1234-1234-1234,实际写入的数据是64'+1234-1234-1234-1200)!该地址的数据是被填充以满足传输地加对齐的需求!
使用突发传输时只需要传输起始地址Uses burst-based transactions with only the start address issued允许地址信息提前于实际数据传输发送分离的读写数据通道,这可以提供低损耗的DMA
支持发出多个未完成的地址Support forissuing multiple outstanding addresses.
皮持乱序传输完成Support for out-of-order transaction completion.
允许简单添加寄存器阶段以提供时序收敛AXI协议同时包含了低功耗操作所需的信号扩展,也包含了AX14-Lite协议,该协议是AX14的子集,有着更简单的控制寄存器接口和组件。

1.2 AXI Architecture


AXI协议基于突发传输,定义了下列独立事务(一个事务可能包含多次传输)通道:
原文:The AXl protocol is burst-based and defines five independent transaction channels
主机对从机的读操作:
。Read address, which has signal names beginning with AR.读地址通道
Read data, which has signal names beginning with R.读数据通道
主机对从机的写操作:
Write address, which has signal names beginning with Aw.写地址通道
Write data, which has sianal names beginning with W写数据通道
Write response, which has signal names beginning with B.写响应通道
An address channel carries control information that describes the nature of the data to be transferred. The data is transferred between
master and slave using either.
地址通道携带描述被传输数据性质的控制信息,数据在主设备和从设备间通过以下方式传输:
写数据通道从主设备传输数据到从设备,在写传输时,从设备使用写响应通道通知主设备传输完成。
[AXI议原文] A write data channel to transfer data from the master to the slave. in a write transaction, the slave uses the write response
channel to signal the completion of the transfer to the master.

(Tips:可以把AXIVIP当成MASTER,RTL代码对应就是SLAVE)

1.2.1支持out of order传输

1.2.1.1 Cachable和bufferable
一个master发出一个读写request,中间要经过很多个buffer,最终才能到memory,这些buffer的添加是为了outstanding,timing,perfommance等
BUFFER有2中类型:FIFO,仅仅是保存发送request或者返回response给上一级。还有一种bufier,在接受了上一级的request之后立刻给上一级返回response.告诉上一级这个操作结束了!而实际上这个操作没有发到下一级bufer.更没有给memor,有人可能就问,wite可以这样做,read 的时候则不行。其实read一样也有buferable.如果此时的buferable的write data channel有此read需要的数据,就可以直接返回。而不去访问memory.如果没有把request发到下一级:
总之,所有的访问都要经过这些buffer,是否bufer在于何时由谁回response,在于是否要把request送到最终的memory。


Cacheable
interconnect其实只是一个路由的功能,内部有bufer,但没有cache.而是在这个访问从master发起request到送到最终的memory这个过程中,可能会经过一些cache.cacheable代表了是不是要去这个cache中查找自己需要的数据,要不要更新cache,你说的利用cache来提高性能。有些操作是要求绝对non-cacheable的。比如device内部寄存器的访问。这些都是MMR(memory mapped register存储器映射寄存器),只能用non-cacheable AXI五个channel所有的信号,可以是master-innection,.也可以是interconnect-slave,也可以直接是master-slave。


outstanding
(面试会被经常问到的点)
简单的说,如果没有outstanding,或者说outstanding 能力为1,AXl master行为如下:
读操作:读地址命令->等待读数据返回-->等待读数据返回-->读地址命令-->等待读数据返回
写操作:写地址命令-->写数据-->等待写响应返回->写地址命令-->写数据-->等待写响应返回
如果outstanding 能力N>1的话,则:
读操作:可以连续发N个读地址命令,这期间如果读数据没有返回,则需要等待读数据返回。如果有读数据返回,则返回了几个,那么仍可以接着发几个。也就是说。在路上的读命令(或者是读数据)最多可以是N。多说一点,可以看出,如果数据返回的比较缓慢,那么IP雷要等待,效率就会很低。为了提高效率,有必要提高outstanding能力。以弥补总线上的延时。但也不能无限制的发,会阻塞总线,把其他IP给堵住。

AXI协议是基于burst的传输,定义了5个独立的传输通道:

  读地址通道

  读数据通道

  写地址通道

  写数据通道

  写响应通道

AXI 每个通道在master和slave之间的交互都是通过ready/valid 握手机制进行交互的。因此每个通道都有一组ready/valid 信号。

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

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

相关文章

Amcor 如何借助 Liquid UI 实现SAP PM可靠性

背景介绍 安姆科是塑料行业的全球领军企业,该企业认识到 SAP 工厂维护(SAP PM)对于确保高效的维护管理的重要性。 在诸如制造业等高度依赖机械设备的行业中,SAP PM是一种通过数据驱动决策来最大限度减少停机时间、降低间接成本、…

【C语言】预处理(预编译)详解(下)(C语言最终篇)

文章目录 一、#和##1.#运算符2.##运算符 二、预处理指令#undef三、条件编译1.单分支条件编译2.多分支条件编译3.判断符号是否被定义4.判断符号是否没有被定义 四、头文件的包含1.库头文件的包含2.本地头文件的包含3.嵌套包含头文件的解决方法使用条件编译指令使用预处理指令#pr…

宠物空气净化器哪个牌子好?有没有噪音低的宠物空气净化器推荐?

如今随着社会竞争越来越激烈,不少人开始焦虑内耗,但为了能更好的生活,养宠物便成为不少人的排忧解乏的方法。 我也不例外,作为一名996社畜,天刚亮就出门,天黑很久才回家,所以选择养猫来陪我度过…

C++设计模式创建型模式———生成器模式

文章目录 一、引言二、生成器/建造者模式三、总结 一、引言 上一篇文章我们介绍了工厂模式,工厂模式的主要特点是生成对象。当对象较简单时,可以使用简单工厂模式或工厂模式;而当对象相对复杂时,则可以选择使用抽象工厂模式。 工…

创作三周年:在忙碌中寻找灵感与快乐

目录 机缘 收获 技能的提升 粉丝的积累 正向的反馈 同行的伙伴 日常 运动 旅行 生活 憧憬 结语 机缘 不知不觉已经成为创作者3年了,这一路走来,有过高峰和低谷,但始终让我坚持的,是最初那份简单的初心:我…

C#从零开始学习(用户界面)(unity Lab4)

这是书本中第四个unity Lab 在这次实验中,将学习如何搭建一个开始界面 分数系统 点击球,会增加分数 public void ClickOnBall(){Score;}在OneBallBehaviour类添加下列方法 void OnMouseDown(){GameController controller Camera.main.GetComponent<GameController>();…

分布式搜索引擎elasticsearch操作文档操作介绍

1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c;…

软件系统安全保证措施,质量保证措施方案(Word原件套用)

系统安全保证措施是构建稳固防御体系的核心&#xff0c;旨在全方位保障信息系统的安全性。以下是对这七项措施的简要概述&#xff1a; 一、身份鉴别&#xff1a;采用多种认证方式&#xff0c;如密码、生物识别等&#xff0c;确保用户身份的准确无误&#xff0c;防止非法入侵。 …

玩转Docker | 使用Docker部署捕鱼网页小游戏

玩转Docker | 使用Docker部署捕鱼网页小游戏 一、项目介绍项目简介项目预览 二、系统要求环境要求环境检查Docker版本检查检查操作系统版本 三、部署捕鱼网页小游戏下载镜像创建容器检查容器状态下载项目内容查看服务监听端口安全设置 四、访问捕鱼网页小游戏五、总结 一、项目…

局域网 docker pull 使用代理拉取镜像

局域网 docker pull 使用代理拉取镜像 1、需求&#xff1a; 我有win主机&#xff0c;上面装有代理可连接dockerhub&#xff1b;我另有linux主机&#xff0c;直接pull因墙失败&#xff0c;想走win的代理访问dockerhub拉镜像&#xff1b;两台主机在同一个局域网中&#xff1b; …

c语言中结构体传参和实现位段

结构体传参 有两种方法: #include<stdio.h> struct S {int data[1000];int num; }; //结构体传参 void print1(struct S s) {printf("%d\n",s.num); } //结构体地址传参 void print2(struct S *ps) {printf("%d\n",ps->num); }int main() {pr…

2024年10月HarmonyOS应用开发者基础认证全新题库

注意事项&#xff1a;切记在考试之外的设备上打开题库进行搜索&#xff0c;防止切屏三次考试自动结束&#xff0c;题目是乱序&#xff0c;每次考试&#xff0c;选项的顺序都不同 这是基础认证题库&#xff0c;不是高级认证题库注意看清楚标题 高级认证题库地址&#xff1a;20…

HTML3D旋转相册

文章目录 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐

Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具

文章目录 Depcheck 是什麽核心功能&#x1f4da;检测未使用的依赖&#x1f41b;检测缺失的依赖✨支持多种文件类型&#x1f30d;可扩展性 安装与使用1. 安装 Depcheck2. 使用 Depcheck Depcheck 的应用总结项目源码&#xff1a; Depcheck 是什麽 来看一个常见错误场景&#x1…

Chrome和Firefox哪款浏览器的密码管理更安全

在当今数字化时代&#xff0c;浏览器已成为我们日常生活中不可或缺的工具。其中&#xff0c;谷歌Chrome和Mozilla Firefox是两款广受欢迎的浏览器。除了浏览网页外&#xff0c;它们还提供了密码管理功能&#xff0c;帮助用户保存和管理登录凭证。然而&#xff0c;关于哪款浏览器…

Camp4-L0:Linux 前置基础

书生浦语大模型实战营Camp4-L0:Linux前置基础 教程地址&#xff1a;https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/linux任务地址&#xff1a;https://github.com/InternLM/Tutorial/blob/camp4/docs/L0/linux/task.md 任务描述完成所需时间闯关任务完成SSH连接与…

C++之多态的深度剖析

目录 前言 1.多态的概念 2.多态的定义及实现 2.1多态的构成条件 2.1.1重要条件 2.1.2 虚函数 2.1.3 虚函数的重写/覆盖 2.1.4 选择题 2.1.5 虚函数其他知识 协变&#xff08;了解&#xff09; 析构函数的重写 override 和 final关键字 3. 重载&#xff0c;重写&…

如何从iconfont中获取字体图标并应用到微信小程序中去?

下面我们一一个微信小程序的登录界面的制作为例来说明&#xff0c;如何从iconfont中获取字体图标是如何应用到微信小程序中去的。首先我们看效果。 这里所有的图标&#xff0c;都是从iconfont中以字体的形式来加载的&#xff0c;也就是说&#xff0c;我们自始至终没有使用一张…

Linux shell编程学习笔记87:blkid命令——获取块设备信息

0 引言 在进行系统安全检测时&#xff0c;我们需要收集块设备的信息&#xff0c;这些可以通过blkid命令来获取。 1 blkid命令的安装 blkid命令是基于libblkid库的命令行工具&#xff0c;可以在大多数Linux发行版中使用。 如果你的Linux系统中没有安装blkid命令&#xff0c;…

RuoYi-Vue 使用开发 人员管理-查询功能

说明&#xff1a;这里仅仅开发列表显示 与 查询功能&#xff0c;剩下的添加、修改等可能会遇到报错&#xff0c;后面有机会&#xff0c;会单独写一篇文章教学处理 1.了解开发需求 作为示例的二级开发&#xff0c;这里的人员管理&#xff0c;管理的是 部门信息&#xff0c;员工…