AXI协议

article/2025/10/18 14:32:47

文章目录

  • 前言
  • 一、通道信号
  • 二、AXI 握手机制
  • 三、读写Timing
    • 3.1 写数据
    • 3.2 读数据
  • 四、通道间的依赖关系
    • 4.1 写地址通道( AW )
    • 4.2 写数据通道( W )
    • 4.2 写响应通道( B )
    • 4.3 读数据( R )
  • 五、信号详细解释
    • 5.1 ACLK和ARESETn
    • 5.2 Burst传输
    • 5.3 Protection Level Support
    • 5.4 Cache Support
    • 5.5 Response响应
    • 5.6 Write Data Strobe
    • 5.7 Atomic 访问

前言

AXI是一个并行总线,其主要特点包括:

  • 读写通道分离;
  • 支持多次对数据操作的请求(multiple outstanding address),一般支持8、16、32个outstanding;
  • 写地址和数据之间不是严格的先地址再数据,有些可能是先数据再地址;
  • 支持不对齐的数据传输;
  • 支持乱序访问;
  • burst传输时不需要像AHB那样每笔传输都指定它的burst类型和地址,只需要指定首地址和对应的属性;

一、通道信号

AXI 有5个单向事务通道,包括 Write Address Channel (AW)、Write Data Channel (W)、Write Response (B)、Read Address Channel (AR)和、Read Data ( R) 通道。每个通道的信号如下:

在这里插入图片描述

二、AXI 握手机制

AXI有5个channel,每个channel的传输都是基于valid 和ready信号来完成握手,这种握手方式在AMBA总线中被大量的使用。

握手的过程如下:

  • 发送方将要发起传输的数据准备好,先发送 valid 信号给接收方;
  • 如果接收方能够接收传输,就会发送 ready 信号给发送方;
  • valid和ready都为高后,发送方发送 transfer;

注意:

  • VALID 和 READY信号并不需要同时拉起,可以发送方想发数据,就先拉起 valid,也可以接收方有接受能力,就先准备好ready 。也就是说 VALID 可以早于READY,也可以晚于 READY,也可以同时拉起。
  • 发送方不一定是master,接收方也不一定是salve。如,读数据通道(R)中,发送方就是slave,发送RVALID,master是接收方,发送RREADY。

握手信号间的约束关系:

  • 为了避免死锁问题,协议规定:当 valid 信号被拉高后,不能随意地不经过 ready 信号握手,就将 valid 拉低。就是发送方可以根据自己的需求随时发起传输,不用判断接收方是否能够有能力接收,同时发送方一旦发起传输,就不能随意中止;
  • 对于接收方,如果没有准备好接收就可以不拉高READY,这样就可以反压发送方的传输了,即便接收方在拉高READY后,只要发送方没拉高VALID,接收方还可以拉低READY信号;
  • 发送端不能等ready拉高之后,才决定是否拉高valid。也就是说你想发数据就发,不用管ready是不是被置位了。否则如果你valid等ready,而接收端ready在等valid,这就形成了一个组合环,系统就被挂住了。
  • 接收端可以等valid拉高,才拉高ready;

三种握手时序,如下:

  • 第一种:valid先拉起,ready后拉起。传输等了一拍ready信号,两拍完成传输(T3完成)。
    在这里插入图片描述
  • 第二种:ready先拉起,valid后拉起。传输没有等待,一拍完成传输(T3完成)。
    在这里插入图片描述
  • 第三种:ready 和 valid 同时拉起。传输要在时钟上升沿,并且ready 和 valid 同时为高才开始,所以在T2时刻才发起传输。
    在这里插入图片描述

三、读写Timing

3.1 写数据

写操作的流程图如下,
在这里插入图片描述

single传输时,有下面的时序图:
在这里插入图片描述
解释上图:

  • 先是AW通道发送地址,当valid和ready同时为高时,完成地址传输
  • W通道觉得可以发送数据时(后面会说通道间的依赖),通过握手信号的完成,将数据发送出去,同时WLAST信号拉高;
  • B通道收到WLAST信号拉高,就返回一个response,并在握手完成时,完成发送response信号;

Burst传输时,有下面的时序:
在这里插入图片描述
解释上图:

  • AXI在一次burst传输中,只需要在AW通道发送一次首地址;
  • W通道相应的将数据写入,一个burst中的最后一个数据发出后,就将WLAST信号拉高;
  • B通道收到WLAST信号拉高,即一个burst transaction完成时,才返回一个response,并在握手完成时,完成发送response信号。

3.2 读数据

读操做的流程如下,
在这里插入图片描述

single传输时,有下面的时序图:
在这里插入图片描述
解释上图:

  • 在valid和ready握手成功时,完成读数据的传输,并返回response

Burst传输时,有下面的时序:
在这里插入图片描述
解释上图:

  • 读多个数据时,和写数据一样,只需要发送一次首地址;
  • 最少一个时钟周期完成一个数据的读取,每次握手完成返回一个response;

四、通道间的依赖关系

4.1 写地址通道( AW )

规定:

  • 主端在驱动地址和控制信号时,就需要把 AWVALID 同时拉起;
  • AWVALID信号一旦拉起,必须要保持到时钟上升沿,并且AWREADY拉高之后才可以释放;

注意:协议中建议不讲AWREADY的默认值设为低电平。因为这会迫使传输至少需要两拍才能完成,一拍拉起valid,一拍拉起ready。而默认值设为高电平,只要valid拉高就可以发,当然这需要从端始终支持一拍接收一个数据。

4.2 写数据通道( W )

规定:

  • WVALID信号可以比AWVALID信号先置位

也就是对于master而言,可以先发要写入到slave的数据,再发送地址。对于slave而言,要做好准备,很有可能是先收到数据,再收到地址命令。有这种需求是因为在一个大型的设计中,你不可避免的需要在总线通路上加一些buffer和寄存器来做时序上的收敛。如果你在AW通道上插入了寄存器,很有可能会先导致slave先收到数据,再收到地址,或者也有可能同时收到地址和数据。一般为了保证数据不要堵在总线上,可以设置slave先把这个数据存起来,不要放在总线上。

4.2 写响应通道( B )

规定:

  • BVALID信号在拉高前,WLAST必须要已经发出去

协议规定,至少要收到最后一个transfer,salve才能去发送响应。但对于AXI3 和 AXI4 的区别在于:

  • AXI3 要求 BVALID信号在拉高前,必须要收到WLAST的数据;
  • AXI4 要求 BVALID信号在拉高前,不仅要要收到WLAST,还要收到对应的地址。

4.3 读数据( R )

规定:

  • ARADDR再没发完之前,RVALID信号不可以被拉高

也就是说必须要先收到地址,才能读数据。只有收到了读地址通道的命令,才可以去读数据。

五、信号详细解释

5.1 ACLK和ARESETn

对于ACLK信号,要求:

  • 所有的输入信号都在时钟上升沿采样;
  • 所有的输出信号只能在时钟上升沿改变;

对于ARESETn信号,要求:

  • 低有效复位;
  • 异步复位、同步释放;
  • 主端要驱动 ARVALID, AWVALID 和 WVALID 信号为低, 从端要驱动RVALID 和 BVALID 为低,其他信号可以是任意值。

5.2 Burst传输

Burst传输中的相关信号有:

信号描述
AxLEN[3:0]指定每个burst中具有1~16个传输,AXI3
AxLEN[7:0]指定每个burst1中具有1~256个传输,AXI4
AxSIZE[2:0]每个传输中的有效数据位宽
AxBURST[1:0]包括FIXED(00) 、INCR(01)、WRAP(10) 类型

注:AxLEN表示AWLEN或ARLEN,其他的也是类似。

AxBURST[1:0] 信号中,不同的bits位:

AxBURST[1:0]类型描述
'b00FIXED每个传输的地址都是相同的,用于对同一个地址的重复访问,比如访问FIFO
'b01INCR地址递增
'b10WRAP地址递增回环,即地址递增到某个边界值会跳转到起始值,一般对cache做操作
'b11reserved保留域

协议中规定:

  • WRAP 类型的burst的长度必须为2、4、8 或16;
  • 一个burst的地址空间不能跨越 4KB,否则有可能访问到其他slave;
  • burst只要发出,就不能提前终止;

5.3 Protection Level Support

信号描述
AxPROT[2:0]定义事务的保护属性,包括 privilege, security level, and access

AxPROT[2:0] 信号中,不同的bits位:

Bits类型描述
0Privileged模式指定访问模式
10:secure ; 1:Non-secure决定传输是 secure 还是 non-secure ,secure的transfer可以访问secure或non-secure的memory空间
2Instruction表明传输是指令还是数据

5.4 Cache Support

信号描述
AxCACHE[3:0]可以配置 bufferable、Cacheable / Modifiable、、

详细的定义如下:

Bits类型描述
0Bufferable/Non-bufferable可以选择是否先将这个transaction存到 buffer 中,可能这个 transaction 还没有到达接收方,buffer可以先返回response给发起端 ,提前结束这个transaction
1Cacheable / Non-cacheable决定是否可以把多个transfer进行整合
2Read-Allocate/No Read-Allocate
3Write-Allocate/No Write-Allocate

5.5 Response响应

信号描述
RRESP[1:0]对read burst中的每个transfer返回response
BRESP[1:0]对write burst整个transaction 返回response

response的类型包括:

Bits类型描述
00OKAY正常访问成功 , 也可以指示 Exclusive 访问失败
01EXOKAYExclusive 访问成功,在后面 Atomic操作中会详细介绍
10SLVERRslave返回给master的错误信息,可以自定义哪些情况需要返回 error
11DECERR返回译码错误,比如burst访问地址空间超过4KB

5.6 Write Data Strobe

WSTRB[x:0] 来指定数据每个byte(8 bit)是否有效。

比如,64 bit 的数据,即 8 Byte,当

  1. 假如最低位 Byte 数据 有效,则WSTRB为0x01;
  2. 假如最低两 个 Byte 数据 有效,则WSTRB为0x02;
  3. 其他以此类推

5.7 Atomic 访问

假如有两个 transaction 准备往同一个地址写数据 ,为了保证写入的数据要么是第一个transaction 或者第二个 transaction 的,肯定不希望在某个时刻,有一半数据是第一个transaction 的数据,一半数据是另一个transaction的数据。所以这个时候就需要使用到 Atomic 访问,有两种实现Atomic 的方式,下面分AXI4和AXI3支持的特性展开。

在AXI4中,如下:

AXLOCK类型描述
0Normal正常访问
1Exclusive

在AXI3中,如下:

AXLOCK[1:0]类型描述
00Normal正常访问
01Exclusive同AXI4
10Locked一个master 访问 某个slave的总线通道就会被 locked 住 ,当别的master也想访问这个slave时就无法访问
11Reserved保留域

Locked 和 Exclusive的区别?

  1. Locked 会对总线性能影响很大,因为当一个 master 想访问这个 slave 时,这个通道会被 locked 住。如果其他master 也都想访问这个 slave,请求也都发出来了,大家都访问不到,相当于对总线层面上锁住了,那对性能的影响就会很大。所以现在的处理器很少采用,AXI4 中也不支持 locked 操作。
  2. Exclusive区别于 Locked 的一点是它不会把master访问某个slave的通道锁住,Exclusive访问机制可以提供信号类型的操作而不需要总线专供特定master使用。 这意味着信号量类型的操作不会影响总线访问延迟或最大可实现带宽。

http://chatgpt.dhexx.cn/article/8fP8Wsx0.shtml

相关文章

AXI 总线详解

综述 本文我们详解AXI,在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议。其中三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地…

AXI总线概述

AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA3.0中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AMBA4.0将其修改升级为AXI4.0。 AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.…

AXI协议学习笔记~~

AXI总线简介 ​  AXI属于AMBA(The ARM Advanced Microcontroller Bus Architecture)家族的一员,AXI协议在AMBA3.0版本中开始出现,并在后续的AMBA4.0,AMBA5.0中持续更新,对应为 AXI3,AXI4,AXI5。 ​   …

AXI 系列 之 AXI概述

目录 AXI简介 AMBA总线的演进图 AXI overriew AXI读写通道 AXI读取传输 事务 AXI 写入传输事务 AXI 概念解读 burst传输 FIXED模式下传输首地址后就可以不停传输数据吗? 突发传输不能跨4KB边界? 非对齐传输 复位期间对接口有如下要求&#xf…

AXI接口协议学习总结

AXI接口协议学习总结 下面将AXI接口协议学到的相关内容整理如下 一、AXI接口协议定义 AXI是Advanced eXtensible Interface的缩写,译为高级可扩展接口协议,是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)高级…

【AXI】解读AXI协议双向握手机制的原理

解读AXI协议双向握手机制的原理 一、写在前面二、AXI 双向握手机制简介2.1 信号列表2.2 双向握手目的2.3 握手过程2.3.1 CASE1(READY信号先于VALID信号改变)2.3.2 CASE2(READY信号与VALID信号同时改变)2.3.3 CASE3(REA…

带你快速入门AXI4总线--AXI4-Full篇(1)----AXI4-Full总线

写在前面 AXI4系列链接:带你快速入门AXI4总线--汇总篇(直达链接) 1、什么是AXI4-Full? AXI 表示 Advanced eXtensible Interface(高级可扩展接口),它是由 Arm 定义的接口协议,包含在…

通信协议(AXI)

一、AXI简介 SoC片上总线尚处于发展阶段,不像微机总线那样成熟,目前还没有统一的标准,因此各大厂商和组织纷纷推出自己的标准,以便在未来的SoC片上总线标准中占有一席之地。ARM公司就在1995年推出了自己的总线——AMBA&#xff0…

AXI协议详解

AXI协议详解 Created: July 11 Tags: ARM amba_axi_protocol_spec.pdf AMBA_axi.pdf AXI基础简介 AXI总共分为5个通道,写地址,写数据,写应答,读地址,读数据(读应答在读数据中体现) 特点&a…

AXI协议规范超详细中文总结版

AXI协议规范中文翻译版 来源:https://github.com/lizhirui/AXI_spec_chinese 综述 本文参考分析整理总结了AMBA AXI and ACE Protocol Specification文档的AXI总线协议规范部分,错误之处欢迎指出。 AMBA AXI协议支持高性能高频的系统设计,该协…

虞美人·寄公度

我在阳台上抽烟,我抽了一半,风抽了一半,我没有和风计较,可能风也有烦恼凭栏倚,吞云烟。半入清风、半入喉,清风也染人间愁生活除了眼前的苟且,还要有诗和远…

柳永8首绝美词句

他是白衣卿相,是才子词人。 他有傲人的才华,却仕途失意。 他眠花宿柳,写下流传千古的词章。 他是才子柳永。 今天,给大家介绍他的8首词,体会柳永的人生起伏。 1、《雨霖铃 寒蝉凄切》 寒蝉凄切,对长亭晚…

千灯照碧云,越夜越星沙

(题图摄影:邓建辉) 文 | 弘乐、陈曦 来源 | 螳螂财经(ID:TanglangFin) “晚上去红记吃小龙虾啊!”准备下班的李强拿着电话呼朋唤友。和他一起下楼的同事伍娟听到了,忍不住摇头说:…

《红楼梦》诗词鉴赏(精选)

石上偈 无材可去补苍天,枉入红尘若许年。 此系身前身后事,倩谁记去作奇传? 【诗词简注】 偈(ji记),佛经中的唱词,也泛指佛家的诗歌。 倩(qing庆),央求 【诗词鉴赏】 《红楼梦》的作者…

HDFS核心理论学习记录

标题HDFS理论学习第一天 一、HDFS优缺点 1、优点 高容错性:数据会保存多个副本适合处理大数据:能够处理GB,TB甚至PB级别的数据能够处理百万规模的数据数据廉价不吃配置 2、缺点 不适合低延时数据访问,文件存储是放在磁盘中读…

HDFS——命令、工作机制

1. HDFS前言 设计思想 分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析; 在大数据系统中作用: 为各类分布式运算框架(如:mapreduce&…

单元测试(学习笔记--ITCAST黎活明)

第一步在项目中的AndroidManifest.xml中加入以下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?><manifest xmlns:android"http://schemas.android.com/apk/res/android"package"com.jluzhsoft.test"android:vers…

spring aop获取目标对象的方法对象及方法上的注解

spring aop获取目标对象的方法对象&#xff08;包括方法上的注解&#xff09; 这两天在学习权限控制模块。以前看过传智播客黎活明老师的巴巴运动网视频教程&#xff0c;里面就讲到权限控制的解决方案&#xff0c;当时也只是看看视频&#xff0c;没有动手实践&#xff0c;虽说看…

spring aop获取目标对象的方法对象

这两天在学习权限控制模块。以前看过传智播客黎活明老师的巴巴运动网视频教程&#xff0c;里面就讲到权限控制的解决方案&#xff0c;当时也只是看看视频&#xff0c;没有动手实践&#xff0c;虽说看过几遍&#xff0c;可是对于系统中的权限控制还是很迷茫&#xff0c;所以借着…

赢在下班后,告别一无所有

工作几年后&#xff0c;为什么有些人财务自由&#xff0c;而有些人&#xff0c;仍一无所有&#xff1f; 其间差别&#xff0c;就在于&#xff1a;八小时之外的思维模式不同。 大部分的人&#xff0c;觉得八小时之内是工作&#xff0c;八小时之外是生活&#xff0c;工作和生活之…