AXI 3.0 (1)

article/2025/9/14 0:54:53

一、AXI简介

AMBA3.0中新增加了一种总线——AXI(Advanced eXtensible Interface,高级扩展接口)。

AMBA AXI 协议的目标是高性能、高频的系统设计,其包含了若干特性。

  • 适合高带宽和低延迟的设计

  • 提供高频操作,无需使用复杂的桥

  • 满足各种组件的接口要求

  • 适合具有高初始延迟的存储控制器

  • 为互连架构实现提供灵活性

  • 向后兼容现有 AHB 和 APB 接口

AXI 协议的关键特征有:

  • 分离的地址/控制和数据通道

  • 使用字节选通的方式实现非对齐传输(byte strobes选通byte有效)

  • 采用基于突发的传输,主机只提供起始地址(brust传输)

  • 分离的读写数据通道,提供低成本的 DMA 访问

  • 支持发送多个 outstanding 地址(注:outstanding 是指,地址和数据传输并没有严格的先后要求,即在处理两个不同的事务时可以不必等待一个 transaction 处理完之后再处理另一个,大大提高系统处理效率)

  • 支持乱序(out-of-order transaction)传输(注:out-of-order 是指,数据传输时可以根据不同 ID 而对顺序没有要求,但是相同 ID 的 transaction(事务) 必须按顺序传输。所以重要的是通过 ID 来区分,而 outstanding 则与 ID 无关)

  • 易于通过添加寄存器达到时序收敛(满足时序要求)

二、AXI架构

AXI 协议是基于突发(burst)的。

每个事务在地址通道上都具有地址和控制信息,来描述要传输的数据特性。

在主机和从机之间传输的数据,使用一个到从机的写数据通道,或一个到主机的读地址通道。

在写事务中,所有数据流是从主机到从机的, AXI 协议有一个附加的写响应通道,可以让从机通知主机写事务完成。

AXI 协议允许:

  1. 允许在实际数据传输之前发送地址信息

  2. 支持多个 outstanding 传输

  3. 支持乱序(out-of-order)传输

读操作

对于读操作,主机(master)通过AR通道发送读事务地址,从设备(slave)通过R通道返回给主机所需要的数据,如下图:

写操作

对于写操作,主机通过AW通道发送写事务地址,并通过W通道把数据发送给从设备,而从设备接收到数据后,需要通过B通道返回一个响应给主机,整个过程结束。

AXI的五个通道是单方向的,这样做的好处是可以对每个通道单独优化,而且当经过复杂的片上网络时,能够优化时序减少延迟。


AXI支持突发(burst)传输,乱序(out of order)传输,极大地提高了数据吞吐能力,在满足高性能要求的同时,又减少了功耗。

读和写的不同之处,一是数据方向不一样,读数据没有响应通道。

2.1通道定义

每个独立的通道都采用的VALID/READY握手机制。正是因为有了这个机制,发送方(Source)和接收方(Destination)才都有能力控制传输。

发送方通过职位VALID信号,来告诉接收方,自己已经将地址、数据或控制信息信息准备好;

而接收方通过置位READY信号,来告诉发送方,自己准备好了接收数据。只要有任何一方没准备好,传输就不能进行。

读数据通道和写数据通道都包含一个 LAST 信号来表示一个事物中最后一个数据项的传输何时发生。

注意:发送方不总是主机,比如读数据通道上,发送方就是从设备,主机是接收方。

AXI有五个独立的事务通道,分别是:

读地址(Read Address,简称AR)

读数据(Read Data,简称R)

写地址(Write Address,简称AW)

写数据(Write Data,简称W)

写响应(Write response,简称B)

读和写地址通道

读和写事物都各自有自己的地址通道。地址通道用于传送一次传输所需的所有地址和控制信息。

AXI 协议支持以下机制:

  • 长度可变的突发,每个突发中的数据传输个数可以从 1 到 16 个

  • 突发中一个数据传输的大小可以是 8-1024 bits

  • 回环,增量或固定长度突发模式

  • 使用独占或锁定访问的原子操作

  • 系统级高速缓存和缓存控制

  • 安全和特权访问

读数据通道

读数据通道用于从从机向主机返回读数据和任何读响应信息。读数据通道包含:

  • 数据总线,宽度可以是 8, 16, 32, 64, 128, 256, 512 或 1024 bits

  • 一个表示读事物完成状态的读响应信号

写数据通道

写数据通道用于从主机向从机传输写数据,包括:

  • 数据总线,宽度可以是 8, 16, 32, 64, 128, 256, 512 或 1024 bits

  • 每 8 bits 数据一个字节选通信号,用来表示数据的哪个字节有效WSTRB[3:0]

写数据通道的信息通常是被缓存的,以便主机在没有得到从机前一次写事物确认的情况下可以执行新的写事物。

写响应通道

从机使用写响应通道来响应写传输。所有写传输都要求在写响应通道上返回完成信号。

对每个突发,完成信号只产生一次,而不是突发中每个单个的数据传输都会产生一次完成信号。

2.2典型系统

三、信号

3.1全局信号

名称

来源

描述

ACLK

Clock source

全局时钟信号。所有信号都在时钟的上升沿采样。

ARESETn

Reset source

全局复位信号,低电平有效。

3.2写地址通道信号

名称

来源

描述

AWID[3:0]

主机

写地址 ID。该信号为写地址组信号的 ID tag

AWADDR[31:0]

主机

写地址。在一个写突发事务中,写地址总线给出了第一个传输的地址。

AWLEN[3:0]

主机

burst长度。突发长度给出了一个突发中准确的传输个数。

AWSIZE[2:0]

主机

burst大小。该信号表示突发中每个传输的大小。

AWBURST[1:0]

主机

burst类型。brust的类型和大小决定了突发中每个传输的地址是怎么计算的。

AWLOCK[1:0]

主机

锁定类型。

AWCACHE[3:0]

主机

Cache类型。这信号指明事务的可缓存、可高速缓存、write-through、write-back、allocate attributes信息。

AWPROT[2:0]

主机

保护类型。

AWVALID

主机

写地址有效。该信号表示有效写地址和控制信息准备好:

1 = 地址和控制信息有效。0 = 地址和控制信息无效 ,

这个信号会一直保持,直到AWREADY变为高。

AWREADY

从机

写地址准备好。这个信号用来指明从机已经准备好接受地址和控制信息了。

1 = 从机准备好,0 = 从机没准备好

3.3写数据通道信号

名称

来源

描述

WID[3:0]

主机

写 ID tag。该信号为写数据传输的 ID tag。

WID 值必须和写事务的 AWID 值相同。

WDATA[31:0]

主机

写数据。写数据总线可以是 8、16、32、64、128、256、1024bits宽

WSTRB[3:0]

主机

写选通信号。该信号表示 memory 中哪个字节通道被更新。

写数据总线的每8 位具有一个写选通位。

WLAST

主机

最后一次写。该信号表示一个写突发中的最后一次传输。

WVALID

主机

写有效。该信号表示写数据和选通信号有效:

1 = 写数据和选通信号有效 ;0 = 写数据和选通信号无效

WREADY

从机

写准备好。该信号表示从机可以接收写数据:

1 = 从机准备好;0 = 从机没有准备好

3.4写响应通道信号

名称

来源

描述

BID[3:0]

从机

响应 ID tag。该信号是写响应的 ID tag。

BID 值必须和从机响应的写事物的AWID 值相同。

BRESP[1:0]

从机

写响应。该信号表示写事物的状态。

允许的响应有:OKAY,EXOKAY,SLVERR 和 DECERR。

BVALID

从机

写响应有效。该信号表示一个写响应有效:

1 = 写响应有效;0 = 写响应无效

BREADY

主机

响应准备好。该信号表示主机可以接收一个写响应:

1 = 主机准备好;0 = 主机没有准备好

3.5读地址通道信号

名称

来源

描述

ARID[3:0]

主机

读地址 ID。该信号是读地址组信号的 ID tag。

ARADDR[31:0]

主机

读地址。读地址总线给出了一个读突发事物中的第一个传输的地址。主机只提供突发的第一个地址,和地址一起被发送的控制信号决定了突发中剩余传输的地址是怎么计算的。

ARLEN[3:0]

主机

突发长度。该信号给出一个突发中准确的传输个数。

该信息决定了与地址相对应的数据传输次数。

ARSIZE[2:0]

主机

突发大小。该信号表示突发中每个传输的大小。

ARBURST[1:0]

主机

突发类型。

突发类型和突发大小决定了突发中每个传输的地址是怎么计算的。

ARLOCK[1:0]

主机

锁定类型。

ARCACHE[3:0]

主机

cache 类型。

ARPROT[2:0]

主机

保护类型。

ARVALID

主机

读地址有效。该信号表示,当为高时,读地址和控制信息有效,并会保持稳定,直到地址确认信号 ARREADY 拉高。

1 = 地址和控制信息有效;0 = 地址和控制信息无效

ARREADY

从机

读地址准备好。该信号表示从机准备好接收地址和相应的控制信号:

1 = 从机准备好;0 = 从机没有准备好

3.6读数据通道信号

名称

来源

描述

RID[3:0]

从机

读 ID tag。该信号是从机产生的读数据组信号的 ID tag。

RID 的值由从机产生,必须与从机响应的读事物的 ARID 值相同。

RDATA[31:0]

从机

读数据。

RRESP[1:0]

从机

读响应。该信号表示读传输的状态。

允许的响应有:OKAY、EXOKAY、SLVERR 和DECERR。

RLAST

从机

最后一次读。该信号表示一个读突发中的最后一次传输。

RVALID

从机

读有效。该信号表示请求的读数据有效,并且可完成读传输:

1 = 读数据有效;0 = 读数据无效

RREADY

主机

读准备好。该信号表示主机可以接收读数据和响应:

1 = 主机准备好;0 = 主机没有准备好


http://chatgpt.dhexx.cn/article/CNdPpJju.shtml

相关文章

Apache axis2 + Eclipse 开发 WebService

一、简介 Apache Axis2是下一代 Apache Axis。Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis2 的动力是探寻模块化…

Axis2与Web项目整合

一、说明: 上一篇介绍了通过使用Axis2来发布和调用WebService,但是是把WebService发布在Axis2提供的项目中,如果我们需要在自己的Web项目中来使用Axis2发布WebService该怎么做呢? 本篇即介绍在Web项目中使用Axis2来发布WebService. 二、具体…

Axis2中文手册

中文原文 http://tenn.javaeye.com/blog/100736 英文原文 http://ws.apache.org/axis2/1_0/userguide.html 概述 这个说明文档涉及以下内容:  如何使用 axis2 创建 web service 和客户端程序  如何定制一个模块 (Module) 并在 web service 中使用它  Sam…

axis2的使用(转载)

通过axis2发起WS请求时添加SOAP header 首先要获得一个ServiceClient对象,因为这个对象是org.apache.axis2.client.Stub里面定义的,所以你生成的stub里面应该直接就可以使用这个对象,或者调用stub的_getServiceClient()方法来获取这个对象。 …

SpringBoot2 整合 AXIS2 服务端和客户端

文章目录 一、AXIS2服务端1. 版本选型2.导入依赖3. services.xml4.Axis2配置类5.服务接口6.服务接口实现类7. FileCopyUtils工具类8. 测试验证 二、AXIS2服务端2.1. 客户端类2.2. 服务调用测试开源源码. 一、AXIS2服务端 1. 版本选型 阿健/框架版本spring-boot2.5.5axis21.7.…

WebService之Axis2系列教程(一)Axis2的下载、安装和使用

Axis2是目前比较流行的WebService引擎。WebService被应用在很多不同的场景。例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。WebService还经常被使用在SOA中&#x…

Axis2 webservice学习总结

一、学习课件目录: Axis2(WebService)培训资料1 - 百度文库 (baidu.com) WebService大讲堂之Axis2 - 百度文库 (baidu.com) 二、学习总结: Web Service是构建互联网分布式系统的基本部件,它是一个应用程序,它向外界暴露出一个…

小白轻松使用axis2构建webservice

引言: 使用axis2是来实现webservice接口是比较常见的,就我来说,如果要学一个首次接触东西,简单了解相关基础概念后,就希望自己能够简单快速的实现一个例子,在学习一门开发语言的时候,一个hello…

模板引擎 Velocity语法

Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用 由java代码定义的对象。作为一个比较完善的模板引擎,Velocity的功能是比较强大的&…

velocity 模板语法

velocity 模板语法 前言1. 访问1.1 变量1.2 属性1.3 方法 2. 指令2.1 #set 创建变量2.2 #if/#elseif/#else 分支控制2.3 #foreach 循环控制2.4 #include - 引入本地文件,文本展示2.5 #parse - 引入本地文件,velocity 解析后展示2.6 #stop - 停止模板解析…

finalize() 原理

finalize 方法的作用是: 如果对象在进行可达性分析后发现没有与 GC Roots 相连接的引用链,那他将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行 finalize 方法。 注意:当对象没有覆盖 finalize 方法&#xf…

finalize()

注:本文的目的并不是鼓励使用finalize方法,而是大致理清其作用、问题以及GC执行finalize的过程。 1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。fina…

java finalize方法详解

1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。finalize()与C中的析构函数不是对应的。C中的析构函数调用的时机是确定的(对象离开作用域或delete掉)&…

java中finalize()方法

finalize 垃圾回收机器(Garbage Collection),也叫GC,垃圾回收器主要有一下特点: 当对象不再被程序所使用的时候,垃圾回收器将会将其回收垃圾回收是在后台运行的,我们无法命令垃圾回收器马上回收资源&…

Finalize详解

finalize()方法详解,前言,finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。 finalize的作用: (1)finalize()与C中的析构函数不是对应的。C中的析构函数调用的时机是确定的…

finalize的理解

finalize的理解 一般的回答:它是Object中的一个方法,子类重写它,垃圾回收时候方法会被调用,可以再其中进行一些资源的解释和清理工作。 优秀的回答:将资源的释放和清理放在finalize方法中是非常不好的,影…

Java FX swt_DOC-13-08 JavaFX与SWT的协作性

DOC-13-08 JavaFX与SWT的协作性 本章展示了如何在SWT应用程序中加入一个JavaFX场景图,以及如何使SWT和JavaFX控件协作。 介绍 如果你开发SWT应用程序,你知道SWT使用本地操作系统的控件,而且并不能简单的配置来使用高级GUI特性,比如…

Java SWT 表格Table如何动态显示信息

让Table显示信息用到的是TableItem类。创建一个TableItem类对象,通过调用该对象的setText( new String[ ] )方法可以显示一行数据,循环调用则可以显示多条不同的数据。 一、步骤: 1. 创建Table类 。最好将Table类设置为全局变量。并且设置该表格有多少列…

Java ——SWT利用DateTime获取日历控件

1、话不多说,先看效果图: 19是我选择的日期,其他功能就不一一介绍了,这个看你们自己。 2、Test01界面: Test01代码如下: package test; import org.eclipse.swt.widgets.Display; import org.eclipse.swt…

shell swt 样式_SWT之路:SWT图像显示

简明现代魔法 -> Java编程语言 -> SWT之路:SWT图像显示 SWT之路:SWT图像显示 2009-10-03 程序演示 还是先用SWT Desiner创建界面程序。然后创建一个Display对象和Image对象,和一个GC对象。类org.eclipse.swt.graphics.GC是一个封装了所…