AXI协议详解

article/2025/10/18 9:26:05

AXI协议详解

Created: July 11
Tags: ARM

amba_axi_protocol_spec.pdf

AMBA_axi.pdf

AXI基础简介

AXI总共分为5个通道,写地址,写数据,写应答,读地址,读数据(读应答在读数据中体现)

特点:独立的地址数据通道,通道传输为单方向。可同时做数据读写。

有三种传输模式,地址固定(fixed),地址等量增加(incr),地址等量增加循环(wrap),

每个AXI组件使用一个时钟信号ACLK,所有输入信号在ACLK上升沿采样,所有输出信号必须在ACLK上升沿后发生。

AXI使用一个低电平有效的复位信号ARESETn,复位信号是异步复位,同步释放

  • 什么是burst传输的意思?

    突发传输。连续传输

  • FIXED模式下传输首地址后就可以不停传输数据吗?

    是的,在配合每次传输的byte数,就可以确定下一个传输的地址。

  • 突发传输不能跨4KB边界?

    因为AXI4协议规定主机上寄存器块的最小分块单元为4K Byte,每个从机的开始映射地址都是4KB的边界。这也影响了AXI4的一个读写规则,那就是一个burst传输不能跨越4KB的界限,否则就会引入将数据错误写入其他从机的风险。注意这个4KB的界限指的是MASTER的地址界限,例如一个burst中不能越过0xXXXX_X000的地址位。FFF=4095,

    就是1024个寄存器,*4byte =4KB。

  • 非对齐传输。

    非对其传输指当传输的目标地址(byte)与寄存器的边界(word对齐)未对齐时,可以使用非对齐传输,例如一个传输在0x3地址开始,而不是0x0或者0x4,非对其传输只会影响一个burst传输中的第一笔数据,可采用WSTRB信号来表示第一个data中的哪几个byte是有效的,其余的数据还是正常的burst传输。

  • 复位期间对接口有如下要求:valid(表示地址/数据/应答输出有效信号)驱动到低电平

    ①主机ARVALID,AWVALID,WVALID为低电平;

    ② 从机接口必须驱动RVALID,BVALID为低电平;

    ③ 所有其他信号可以被驱动到任意值。

    在复位后,主机可以在时钟上升沿驱动ARVALID,AWVALID,WVALID为高电平

• 读取地址,其信号名称以AR 开头。

• 读取信号名称以 R 开头的数据。
• 写入地址,信号名称以AW 开头。
• 写入信号名称以 W 开头的数据。
• 写入响应,其信号名称以 B 开头。

Write/Read address signal (功能信号都相似,可放在一起讨论)

awid/arid写地址ID.
awaddr/araddr写地址,给出一次突发传输的写地址
awready/aready从对主的写地址做出有效应答,表示已准备好可接收数据
awvalid/arvalid有效信号,表示当前传输的地址控制信号有效
awsize/arzize该信号指示每次Burst传输的byte大小。就是数据位宽,如011=8*8byte=64 bit
awlen/arlen一次传输任务中的传输数据包个数,在INCR传输类型下可以传输1至256个数据包,在其他传输类型下只能传输1-16个数据包,特别地,WRAP传输类型下只能传输2,4,8或16个固定的数据包个数。因此AWLEN与ARLEN的位宽为8位,其中LEN=0代表传输一个数据包,
eg: len = ed = 238个数据包,size = 0,就是1byte。则这次总共需要传输数据个数为 238 *1byte
awburst/arburst突发类型
awlock/arlock总线锁信号。AXI3协议中用于锁定从机,占用总线,AXI4中取消了相关支持,留下一位信号用作指示传输为正常传输(1’b0)还是独有传输(1’b1)
awcache/arcache内存类型,表明一次传输是怎样通过系统的。
awprot/arprot保护类型,表明一次传输的特权等级和安全等级。

AWSIZE/ARSIZE:传输数据包大小,位宽为3位,(Bytes=2^Burst_size):

AxSIZE传输字节数AxSIZEAxSIZE
3’b00013’b10016
3’b00123’b10132
3’b01043’b11064
3’b01183’b111128

AWBURST/ARBURST: 传输类型,位宽为2位,具体含义如下

AxBURST传输类型
2’b00固定(FIXED)
2’b01递增(INCR)
2’b10回环(WRAP)
2’b11未定义

FIXED传输为地址固定传输,所有传输都会写在同一个地址中。主要应用在FIFO的传输中,因为FIFO为先入先出,只需要往同一个地址写数据即可。

INCR传输为地址递增传输,可根据具体的配置有固定长度递增和非定长递增。大部分的数据传输都是使用这种方式,尤其是在内存访问中,可以大大提高效率。

WRAP传输为地址环回传输,在一定长度后会回环到起始地址。主要应用在Cache操作中,因为cache是按照cache line进行操作,采用wrap传输可以方便的实现从内存中取回整个cache line。

AWLOCK/ARLOCK:这个信号在AXI3协议中用于锁定从机,占用总线,但在AXI4中取消了相关支持,仅留下一位信号用作指示传输为正常传输(1’b0)还是独有传输(1’b1)。

AWPROT/ARPROT:指明访问是否被允许,位宽为3位,与slave相关,不同的访问回产生不同的Respect。

AxPROT功能
AxPROT[0]0/1非优先访问/优先访问
AxPROT[1]0/1安全访问/非安全访问
AxPROT[2]0/1数据访问/指令访问

AWCACHE/ARCACHE:该信号指明了总线中的存储类型,信号位宽为4位

AWQoS/ARQoS:Quality of Service, 位宽为4位,手册中并没有固定该信号的确切用途,但是建议将该信号用于优先级声明信号,值越高代表优先级越高。

**AWREGION/ARREGION:**区域标记,位宽为4位。4位的区域标记信号可以标记16个区域。当从机有很多分离的地址空间时,使用这个信号可以仅仅使用一个物理总线就能实现多个逻辑总线的功能。经典的应用是一个外设控制寄存器与数据寄存器分离的时候,使用该信号可以在不对地址解码的情况下访问到两块地址空间

例如,当一个外设控制寄存器的地址空间为0x0000 - 0x00FF,数据寄存器的地址空间为0x1000 - 0x1FFF,就可以将地址位设置为12位(0x000-0xFFF),控制寄存器的区域标记为4’b0000,数据寄存器的区域标记为4’b0001,实际寻址的地址为区域标记+地址位,其中区域标记位作为高位加在地址位前就可以了,可理解为优先级更高的ID。

Writer/Read data signal

rid一次传输的id tag. AXI4取消了对Wid的支持,所以写通道的写顺序必须与写地址通道保持一致
wdata/rdata读写数据
wuser/ruser用户自定义信号
wvalid/rvalid有效信号,表明通道传输数据有效
wready/rready表明从机可以接收写数据/读数据和响应信号
wlast/rlast表示此次传输是最后一个突发传输
写事务传输的最后一个数据。与最后一个写数据的WVALID信号同步拉高。只有当WLAST由高变为低,一个传输任务才完成。在此之前无法中断传输过程。RLAST信号也类似。
wstrbWSTRB为写选通信号,指示当前传输的有效数据段。有效数据段单位是8bit,也就是32bit数据位宽的总线的WSTRB信号会有4位,WSTRB[3]指示WDATA[31:24]的有效性。
rresp读响应信号,表明读传输的状态

Writer resp signal

BID写响应ID tag
BRESP写响应,表明写传输状态
BUSER用户自定义
BVALID写响应有效
BREADY表明主机能够接收写响应

AXI_Write

在这里插入图片描述

写通道分为写地址,写数据,写应答三个通道,三个通道数据互不干扰,但有一定的先后顺序。

下图单箭头表示无先后依赖关系,双箭头表示有先后依赖关系。

在这里插入图片描述

  1. 三个通道的vaild和ready信号没有先后关系,vaild可以先于或晚于或同时与ready信号拉高。
  2. 写数据通道的数据可以先于写地址通道数据出现在总线上。
  3. 写通道的写顺序必须与写地址通道保持一致
  4. 因为axi通道分离,所以可支持outstanding操作,即不需要等待前一笔传输完成就可以发送下一笔操作。master不需要等待前一笔操作A响应完成就可以发送下一笔操作请求B,这样可以有效提升通路利用率,提升系统性能
  5. 传输地址和传输数据都是在valid和ready信号同时为高时传输。

下面来分析一笔axi 写传输操作:
在这里插入图片描述

  • T0时刻:mst发出写地址信号,同时vaild信号拉高。但ready信号并没有拉高(这时候允许ready信号为高)
  • T1时刻:slv采样到写地址和vaild信号,将ready信号拉高,对写地址通道做一次握手。
  • T2时刻。mst采样到slv的ready信号为高。握手成功。并驱动写数据通道传输数据。同时vaild拉高。表示数据有效。开始一次burst传输。
  • T3时刻slv开始采样mst传输的数据。只有在valid和ready同时为高的时候采样数据才有效。
  • T8时刻mst发送最后一笔burst出书的数据,同时WLAST信号拉高,表示此次Burst发送数据完成
  • T9时刻,mst采样到所有数据和WLAST信号,并给出resp信号,同时拉高valid信号。READY信号早已拉起
  • T10,slcv采样到resp并valid ready信号有效,一次burst传输完成。

注意项:

  • 写数据通道的数据信息被认为是缓冲(buffered)了的,“主”无需等待“从”对上次写传输的确认即可发起一次新的写传输。写通道包括数据总线(8/16…1024bit)和字节线(用于指示8bit 数据信号的有效性)
  • Burst传输:多个数据传输,一个burst内部可以被打断的。 Valid信号是源,一个数据传输,一旦valid信号为高就不能拉低,直到此次传输完成。slave的ready信号可以中断,但是最终还是要高起来传完一个burst. 对于master来说,一旦开始传数,一个burst之间的valid应该是不会低的
  • READY 信号很自由,可以等待 VALID 信号到来再做响应,但也完全可以在 VALID 信号到来前就置高,表示接收端已经做好准备了。READY 信号与 VALID 不同,接收方可以置起 READY 之后发现:其实我好像还挺忙,然后拉低 READY 信号。只要此时 VALID 信号没有置起,这种操作是完全可以。
  • 上图写时序中,Wdata可以早于Awaddr出现在接口上。写响应信号必须出现在与其相关联的写事务最后
  • 在写回应BVALID有效前,必须要使得写地址通道与写数据通道的握手信号均有效,且写数据通道的WVALID信号必须为最后一个写入数据的有效信号。BREADY信号可在BVALID信号前后有效。而写地址通道与写数据通道的四个握手信号之间无必须要求的时间前后关系。

AXI_Read

在这里插入图片描述

读架构没有读响应信息,读响应信息指明读事务的完成。读取每个数据过后均会进行读回应。写传输过程中只会在一个Burst完成的时候进行写回应。写应答与谢写数据流相反,读应答与读数据流同相。

在这里插入图片描述

同写数据通道一样。读地址通道和读数据通道的valid和ready也没有先后关系,但是读地址和读数据有先后关系(废话)读数据操作需要在给出读地址操作之后才能执行,但读数据通道与读地址通道中的握手信号无规定的先后顺序。设备必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。

在这里插入图片描述

  • T0时刻:mst读地址通道给出读地址并将valid拉高。
  • T1时刻:slv检测到读地址和vaild信号,将ready信号拉高。
  • T2时刻:mst采样到valid和ready信号同时为高,第一笔读地址通道握手完成。同时mst驱动第二笔读地址到读地址通道总线上。
  • T3时刻:slv读出第一笔读地址burst传输的读数据驱动到总线,同时拉高RVALID信号,等待mst接收并完成握手。同时slv读地址通道采样到第二笔读地址总线数据,拉高ARREADY信号。等待mst握手。
  • T4时刻:mst采样到AREADY和ARVALID信号同时为高,第二笔读地址传输完成。等待
  • T8时刻:完成第一次burst读数据的最后一笔数据,并拉高Rlast信号,表示第一笔读Burst完成。

:Q&A

  • AXI3与AXI4之间的区别是什么?

    1、AXI3只支持多达16拍的burst 。而AXI4支持高达256拍的burst 。

    2、AXI3支持write interleave。AXI4不支持write interleave(去掉了wid)

    3、AXI3支持locked 传输,AXI4不支持locked 传输

    4、AXI4支持QoS,AXI3不支持QoS。

  • 为什么没有单独的read 响应通道?

    VALID/READY握手机制只允许一个方向的数据流,所以对于读事务,数据(data和resp)从slave流向master,而对于写事务,数据从master流向slave,所以就需要单独的响应通道

  • 为什么在burst 写中,不是每拍都有写响应。但是在burst 读中,每拍都有一个单独的读响应?

    所有的AXI信道只在1个方向传递信息 ,所以才需要一个单独的写响应通道。在大多数应用中不管slave能不能接受完整的数据这个burst传输都会执行完成,slave无需在每一拍都返回ERROR响应

  • 如何终止burst 传输?

    不能。AXI不能够提前终止burst传输。对于写事务,master可以完成burst 传输,通过WSTRB信号丢弃掉无效数据即可,对于读事务同样也可以将读回的数据丢弃。

  • master 可以在burst 传输中间给WLAST吗?

    不行。只有在burst 传输的最后一拍才能拉高WLAST,在burst传输的中间拉高WLAST是违反协议的行为。此外,许多slave设计不会使用WLAST信号,而是自己计数,所以master拉高WLAST也不会提前终止burst传输。

  • Slave能在burst传输完成之前置起rlast么?

    和上题一样,slave在burst传输的未完成就拉起RLAST是违反协议的行为。master同样也有可能不依赖RLAST

  • 既然WLAST和RLAST可能不被使用,那为什么需要支持这两个信号?

    为了支持所有的master和slave,无论其是否依赖这两个信号传输数据。

  • Exclusive 读写事务是什么?在哪里使用?

    如果一个内存区域被多个master共享,某个master需要希望确保在没有其他master更改共享内存的情况下完成读然后写的序列,就可以使用Exclusive 传输

  • 读取事务是否有可能在一个周期内完成?

    需要至少1个时钟周期传递地址(从master到slave),然后至少1个时钟周期传递数据(从slave到master)。

  • axi slave是如何支持Exclusive 访问的?

    假设 AXI Master1(M1)已经启动了对地址位置12h100到12h10F的exclusive 读写。那么相应的salve将开始监视由M1给出的这些地址。如果此时该地址被其他master执行写操作,此时会返回Exclusive error

  • 发送给slave的读写地址和读写数据是如何关联的?

    AR总线和AW总线是独立的,不管读写请求的地址是否顺序发出的,响应的数据都可能是无序的,他们之间是通过awid和arid对应配对的(axi3)axi4去掉了wid,所以写通道的写顺序必须与写地址通道保持一致


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

相关文章

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;工作和生活之…

关于海明码,我悟了

目录&#xff1a; 话在前面差错控制编码差错控制编码的分类 检错码纠错码 奇偶校验码海明码 校验位的位置码字格式校验位的确定校验位的校验规则(重点)海明编码示例 检错和纠错 什么是码距海明码的码距海明码的检错与纠错能力海明码的检错与纠错能力理解 总结考题最后参考链接…

SVPWM原理

SVPWM原理 空间矢量的定义PWM逆变器基本输出电压矢量SVPWM的实现 SVPWM已经是非常成熟且应用范围最为广泛的PWM调制方式之一了&#xff0c;所以本文也只是常规的原理介绍。 空间矢量的定义 交流电动机绕组的电压、电流、磁链等物理量都是随时间变化的&#xff0c;如果考虑到它…

foc学习笔记2——svpwm

foc学习笔记2——svpwm 写在前面&#xff1a;如今网上关于foc的文章和教程很多&#xff0c;但初学者往往会被那些专业且复杂的公式搞晕&#xff0c;不知道自己到底在学什么。本文尽量少列公式&#xff0c;多解释用途&#xff0c;所以不会有公式的推导过程&#xff0c;会更加注重…

二、SVPWM

二、SVPWM 1. 介绍 SVPMW是将逆变器和电机看作一个整体&#xff0c;用八个基本的电压矢量合成期望的电压矢量&#xff0c;建立逆变器功率器件的开关状态&#xff0c;并依据电机磁链和电压关系&#xff0c;实现对电机恒磁通变压变频调速。 三相无刷电机的三项排除三项全部为1和…

SVPWM调制中非零基础矢量的幅值是2/3Udc还是Udc?

1:、三相电压空间矢量的合成 设直流母线侧电压为Udc&#xff0c;逆变器输出的三相相电压为UA、UB、UC、其分别加在空间上互差120的三相静止平面坐标系上&#xff0c;可以定义三个相电压UA(t)、UB(t)、UC(t)、他们的方向始终在各自的轴线上&#xff0c;而大小随着时间按正弦规律…

Matlab SVPWM仿真模型

文中涉及的仿真模型可在公众号 iFTrue未来已来 中获取&#xff1a; 请扫描下方二维码关注微信公众号&#xff1a;iFTrue 未来已来 在公众号后台回复以下关键字获取SVPWM仿真模型&#xff1a;SVPWM模型 「 iFTrue 未来已来 」 目录&#xff1a; 1.1 基于C语言的SIMULINK仿真模…

SVPWM调制的simulink仿真

1、SVPWM的生成 在FOC矢量控制中&#xff0c;Id、Iq 经过PID输出Vd、Vq。Vd、Vq经过反park变换成Vα、Vβ。再Vα、Vβ合成空间参考矢量Uref。那么怎么根据Vα、Vβ确定Uref所在扇区&#xff0c;然后确定所在扇区两个非零基础矢量的作用时间呢。 1.1、传统的计算方法 1.1.1、…

电机专用SVPWM算法实现

SH33F2811包含三相电机的空间矢量脉宽调制&#xff08;Space Vector Pulse Width Modulation&#xff0c;SVPWM&#xff09;算法&#xff0c;对应于交流感应电机或永磁同步电机中的三相电压源逆变器的功率器件的一种特殊的开关触发顺序和脉宽大小的组合。这种开关触发顺序和组合…

小猫爪:PMSM之FOC控制04-SVPWM

小猫爪&#xff1a;PMSM之FOC控制04-SVPWM 1 SVPWM的引出2 SVPWM的原理3 SVPWM的推导4 仿真END 1 SVPWM的引出 在Park变换那一节&#xff0c;说到了可以通过控制Eq(Iq)和Ed(Id)来控制电机。而电流我们并不能直接控制&#xff0c;只能简介通过控制输出电压来控制电流&#xff0c…