AMBA总线协议AXI——学习笔记

AXI4是一种高性能的接口标准,支持多种数据宽度和burst操作,提高数据吞吐量。协议包括AXI4、AXI4-Lite和AXI4-Stream,各有不同的应用场景。文章详细介绍了AXI4的信号,如时钟、复位、写地址、写数据、读地址和读数据通道,以及读写时序图、握手信号的类型和不同数据通道的约束。此外,还讨论了乱序传输、原子操作和非对齐传输等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

2023.3.25
2023.4.23


一、AXI4(Advanced eXtensible Interface)

1、定义

AXI:高级可拓展接口

  • 高性能、高带宽、低延迟
  • 单向通道体系结构
  • 独立的地址和数据通道
  • 支持多项数据交换。通过并行执行burst操作,极大地提高了数据吞吐能力。

2、AXI4、AXI4-Lite、AXI4-Stream协议对比

AXI4:高性能内存映射需求(如读写DDR、使用BRAM控制器读写BRAM等),为了区别,有时候也叫这个为 AXI4-Full;

  • 支持最多256个burst长度
  • 支持多个区域接口
  • 支持数据位宽 8 / 16 / 32 / 64 / 128 / 256 / 512 / 1024 bits

AXI4-Lite:用于简单、低吞吐量的内存映射通信(例如,与控制寄存器和状态寄存器之间的通信);

  • burst length的长度恒定1,不支持burst传输
  • 数据的访问或读取操作需要使用数据总线的全部,数据位宽为32/64位,
  • 所有的操作都是Non-modifiable和Non-bufferable的
  • 不支持独占访问

AXI4-Stream :高速流数据(视频、图像等流式数据);

  • 在同一互连中支持多数据宽度
  • 使用相同的共享线集支持单数据流和多数据流
  • 可以实现突发无限数量的数据

相同点

  • AXI4、AXI4-Lite和AXI4-Stream均使用Ready、Valid握手机制进行通信
  • AXI4 总线和 AXI4-Lite 总线都有 5 个通道(AXI4-Stream 取消了通道)

3、信号

下面介绍的是AXI4的信号

3.1 全局信号——时钟和复位信号

ACLK:时钟
ARESETn:低电平复位信号

复位要求

  • ARVALID、AWVALID、WVALID、RVALID、BVALID都必须为低电平,其他信号可以为任意值
  • 主机接口必须开始将ARVALID、AWVLAID或WVALID置高仅仅在ARESETn 信号变高后的ACK的第一个上升沿

在这里插入图片描述

3.2 写数据通路

在这里插入图片描述

3.2 写地址通道

——主要是busrt传输

AWVALID:握手信号
AWREADY:握手信号
AWADDR[12:0]:写地址
AWPROT:传输的特权等级和安全等级
在这里插入图片描述

AWSIZE[2:0]:数据大小
在这里插入图片描述

AWLEN[7:0]:burst的长度
在这里插入图片描述

AWID[3:0]:写地址ID
AWBURST[1:0]:burst类型,FIXED——用于FIFO访问(每次burst的地址不变),INCR——1~256,WRAP——回环突发,支持2/4/8/16
在这里插入图片描述

AWLOCK[1:0]:锁定类型,用BRESP或者RRESP来指示独占存取是否成功
主机在请求独占式存取时,设备可能返回的两个响应分别是EXOKAYOKAY。EXOKAY是指设备支持独占式存取,而OKAY是指设备不支持独占式存取。
在这里插入图片描述

AWCACHE[3:0]:Cache类型,指明事务的bufferable、cacheable、write-through或者write-back等信息
在这里插入图片描述

3.3 写数据通道

——主要涉及到窄传输非对齐传输
窄传输:传输数据宽度小于数据总线宽度,使用WSTRB来进行指示

WVALID:写有效,主机发送,握手信号
WREADY:写就绪,从机响应,握手信号,为1表示设备已经准备好接收数据
WDATA[31:0]:数据
WSTRB[3:0]:字节通道有效信号,WSTRB[n] 对应 WDATA[8n+7 : 8n]
WLAST:用来指示每个事务传输过程中的最后一个数据,表示当前事务传输结束
WID[3:0]:写ID tag,要和AWID的值匹配

3.4 写响应通道

BVALID:握手信号
BREADY:握手信号
BID[3:0]:响应ID,要和AWID的值匹配
BRESP[1:0]:反馈信号,OKAY指示正常传输,EXOKAY指示独占访问成功,SLVERR指示slave发生错误,DECERR指示译码错误,没有地址对应的slave
在这里插入图片描述

在这里插入图片描述

3.5 读地址通道

ARVALID:握手信号
ARREADY:握手信号
ARADDR[12:0]:读地址信号
ARPROT[2:0]:传输的特权等级和安全等级
ARID[3:0]:读地址ID
ARCACHE[3:0]
ARLEN[7:0]:burst的长度
ARLOCK
ARBURST[3:0]
ARSIZE[3:0]

3.6 读数据通道

RVALID:握手信号
RREDAY:握手信号
RDATA[31:0]:读数据
RRESP[1:0]:反馈信号
RLAST:用来指示每个事务传输过程中的最后一个数据,表示当前事务传输结束
RID[3:0]:读ID,必须和ARID匹配

3.7 低功耗接口信号

在这里插入图片描述

3.8 数据通道信号总结

  • valid和ready在每个通道是成对出现的
  • 相比于写数据通道,读数据通道中多出了读响应信号,因而省去了单独的读响应通道。也就是说,读传输的响应信息是附加在读数据通道上的,写传输的写响应有专门的写响应通道
  • 如果是AXI4-lite版本,则信号只有最基本的valid、ready、addr、data、resp、strb
  • 突发式读写的地址不能超过4KB,防止一次burst跨越多个slave的情况

4、读写时序图

全部 5 个通道使用相同的 VALID/READY 握手机制传输数据及控制信息。

  • 传输源产生 VLAID 信号来指明何时数据或控制信息有效。
  • 目地源产生 READY信号来指明已经准备好接受数据或控制信息。
  • 传输发生在 VALID 和 READY 信号同时为高的时候。

对于master来说,写数据写地址读地址这三个是传输源,valid由master产生,并且等待slave端给出ready信号。
对于slave来说,写响应读数据这两个是传输源,他们先产生valid,等待master给出ready信号。

4.1 读burst

只发送一个地址,后面数据的地址在此基础上进行自增

在这里插入图片描述

4.2 读重叠burst

主机一开始传送了两个地址给设备。设备在完全处理完第一个地址的数据之后才开始处理第二个地址的数据。

在这里插入图片描述

4.3 写burst

主机把地址和控制信号发送到写地址通道,然后主机发送数据到写数据通道,发送完WLAST拉高一个周期。
当设备接收完所有数据之后他将一个写响应发送回主机来表明写事务完成
在这里插入图片描述

5、握手信号

  • valid和ready同时为高的时候进行数据传输

  • VALID信号一旦拉高,除非READY信号拉高接收数据完成,不会主动变低,否则的话表面此次传输失败了

5.1 VALID 先变高 READY 后变高

主机数据先有效,后从机可以接收数据时,拉高ready

在这里插入图片描述

5.2 READY 先变高 VALID 后变高

从机先准备好接收数据了,后主机数据才有效

在这里插入图片描述

5.3 VALID 和 READY 信号同时变高

表明数据有效的同时也可以进行采样

在这里插入图片描述

6、不同数据通道的约束关系

单箭头表示两者的先后顺序没有要求,双箭头表示前者必须先于后者

  • 写数据可以先于相应的写地址,也可以和写地址在同一个周期出现,但写响应必须在写事务的最后才出现
  • 读数据必须在读地址之后出现

6.1 读操作约束

在这里插入图片描述

6.2 写操作约束

写回复通路的信号传递一定晚于写数据通路

在这里插入图片描述

7、AXI outstanding

AXI outstanding:具有outstanding的能力,也就是发送出去的地址,不等数据响应,就可以发送下一次的地址。 可以把地址都发出去,再等待所有数据的响应,这是AHB和APB协议所不具有的。

8、乱序传输 Out of order

相同ID tag的事务必须有序完成,而不同ID tag可以乱序完成。

在这里插入图片描述

在AXI4协议中发现写乱序提升性能效果不大,因此去除了WID,即去除了写乱序的操作,但保留了读乱序操作。 (做过选择题,AXI4是没有WID的)

  • 不同主机的传输事务没有顺序要求
  • 同一个主机的不同ID事务,没有顺序要求
  • 相同的AWID和ARID的读写事务之间没有顺序要求,除非主机有顺序要求
  • 相同AWID的写事务必须按照顺序依次写入主机发送的地址内
  • 相同ARID分情况讨论:当从相同设备读相同的ARID时,设备必须确保读数据按照相同的地址顺序接受;当从不同的设备读相同的ARID时,接口处必须确保读数据按照主机发送的相同的地址顺序。

9、原子操作

如果有多个master对同一个地址进行读写操作时,可能会造成数据的错误读写

ID扩展操作:master给出数据到总线时,总线会对ID进行扩展,扩展内容目的是为了标记是由哪个master发出来的;因而slave返回数据或响应时总线可以根据扩展内容知道是哪个master发出来的并返还给他
在这里插入图片描述

9.1 锁存传输 Locked access

在某个master和slave传输期间,总线不会去响应其他master的读写请求。
等所有的lock操作结束之后,发送一个unlock的传输就行解锁。

  • 优点:可以解决访存冲突问题
  • 缺点:传输效率较低,阻碍其他master对其他slave的访问

9.2 独占传输 Exclusive access

目的:解决lock锁死效率较低的问题,由slave来反馈传输是否成功,master的访问是自由的

主机在请求独占式存取时,设备会返回两个响应分别是EXOKAY和OKAY。

  • EXOKAY是指设备支持独占式存取,而OKAY是指设备不支持独占式存取。
  • 如果一个设备不支持独占式存取,可以忽略信号ARLOCK[1:0]和AWLOCK[1:0]。他必须提供OKAY响应对正常式存取和独占式存取。
  • exclusive传输要求burst传输的起始地址要对齐

10、非对齐传输

AHB:对齐传输,例如32bit,按照0-4-8-c传输
AXI:对齐和不对齐传输都存在

在这里插入图片描述
非对齐传输:32bit的起始地址可以是7,但是后面的地址必须对齐,也就是AXI只允许一个burst的第一笔数据地址不对齐
要和WSRTB信号搭配使用。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值