AXI协议容易忽视的细节

多处翻译官方文档IHI0022E_amba_axi_and_ace_protocol_spec.pdf

基本的读写操作

握手协议

AXI具有5个独立的通道,每个通道都使用相同的VALID和READY的握手过程去传输地址、数据、控制信息等。双向握手带来的好处是主机和从机都可以控制传输的节奏。请求方的VALID信号的发出表示着地址、数据、控制信号的信息是有效的。应答方的READY信号的发出表示可以接收上述信号。仅仅当VALID信号和READY信号同时为高电平时,传输才正式发生
在这里插入图片描述

在T1之后,准备好地址、数据、控制信号VALID,在T2被采样,T3时刻时采样READY信号,完成一次握手,在完成握手之前请求信号将一直保持到T3,一旦VALID拉高请求方就必须等待握手的发生。请求方不可以在valid未拉高之前去判断READY信号。
在这里插入图片描述 在请求地址、数据、控制信号未准备好时,可以提前将应答READY拉高,当T3的上升沿时采样完成握手
在这种情况下传输只占用了一个周期的时间。应答方可以在未拉高VALID前等待VALID信号,如果READY已经拉高,则允许应答方在请求方VALID有效之前取消READY拉高

在这里插入图片描述在T1上升沿之后,请求和应答分别拉高对应信号,在T2上升沿信号的采样,完成握手。

通道信号规则

通道握手信号

每一个通道都有自己单独的VALID和READY握手信号
在这里插入图片描述

写地址通道

通信主机可以拉高AWVALID信号来表示地址和控制信号有效,当该信号拉高后必须要保持到从机拉高AWREADY的上升沿之后才能拉低。默认的情况下AWREADY可以为高或低,规范建议的情况为高(规范不建议默认AWREADY为低,因为这使得至少需要两个周期来传输,一个周期用来判断AWVAID,一个周期用来拉高AWREADY),当AWREADY为高的情况下从机必须可以接收任意的主机发来的有效信号。

写数据通道

在写操作期间,通信主机可以拉高WVALID信号来表示当前总线上的数据是有效的,当WVALID信号拉高,该信号就必须保持到从机拉高WREADY的上升沿之后才能拉低。默认情况下从机的WREADY可以为高,仅当从机有可以单周期处理数据的能力,主机必须要拉高WLAST信号,当突发的过程中写入最后的数据。

写响应信号

从机可以拉高BVALID信号,当驱动一个写响应时,当该信号拉高后必须保持到主机BREADY的上升沿之后才能拉低,BVALID信号可以默认为高,但是仅仅当主机可以在一个周期之内写入响应信号

读地址通道

在读操作期间,主机可以拉高ARVALID信号当地址和控制信号有效,当该信号拉高后必须保持到从机拉高ARREADY的上升沿之后才能拉低。默认情况下ARREADY信号可以为高电平或者低电平,规范建议高(规范不建议默认ARREADY为低,因为这使得至少需要两个周期来传输,一个周期用来判断ARVAID,一个周期用来拉高AREADY),当ARREADY为高的情况下从机必须可以接收任意的主机发来的有效信号。

读数据通道

从机可以拉高RVALID信号当读数据在总线上有效,当该信号拉高后必须保持到主机拉高RREADY的上升沿之后才能拉低。主机使用RREADY信号来表面接收数据,默认RREADY可以为高,仅仅当主机可以立刻读取的数据的情况下,从机必须在突发的最后一次传输时拉高RLAST信号

通道之间的关系

通道与通道直接需要遵循以下关系:
1.写响应通道必须在写突发最后的写传输后进行
2.读数据通道必须在读地址完成后进行
3.通道握手必须符合定义的依赖项
除此之外,通道与通道之间不存在任何关系。
这就意味着,写入的数据可以在写入地址之前产生,也可能产生在同一周期内

通道握手信号之间的依赖关系

为了防止死锁情况,必须遵守握手信号之间存在的依赖关系规则
1.请求方的VALID信号不能依赖于应答方的READY信号
2.应答放可以等待检测到VALID信号后再拉高READY信号,也可以在等待VALID之前拉高READY信号,这会带来更高的效率。
下图表中单箭头指向的信号可以在箭头开始信号之前或者之后变化。双箭头指向信号只能在判断箭头开始信号之后变化

读传输依赖

在这里插入图片描述

1.主机不能在ARRVALID拉高之前去等待从机的ARREADY
2.从机可以在ARRVALID拉高之后去拉高ARREADY
3.从机可以在ARRVALID拉高之前去拉高ARREADY
4.从机必须要等到ARRVALID和ARREADY都拉高之后,才能去拉高RVALID表示总线上读取的数据是有效的
5.从机不可在RVALID拉高之前去等待RREADY信号
6.主机可以在等待RVALID拉高之后去拉高RREADY
7.主机可以在等待RVALID拉高之前去拉高RREADY

写传输依赖

在这里插入图片描述1.主机不可以依赖AWREADY和WREADY来产生对应的AWVALID和WVALID
2.从机可以在AWREADY没有拉高之前,去等待AWVALID和WVALID
3.从机可以在AWVALID和WVALID拉高之前去拉高AWVALID
4.从机可以在WREADY没有拉高之前,去等待AWVALID和WVALID
5.从机必须等待WVALID和WREADY都拉高才可以去拉高BVALID
6.从机必须等待WLAST拉高之后才可以拉高BVALD
7.从机不可以在BVALID拉高之前去等待BREADY
8.主机可以在拉高BREADY之前等待BVALID
9.主机可以在bvalid拉高之前拉高BREADY

AXI4写响应依赖关系

AXI3与AXI4的区别在于AXI4协议中规定写响应通道必须在写通道和写地址 通道都结束之后才能回响应,进一步避免deadlock。
在这里插入图片描述
1.主机不可以依赖AWREADY和WREADY来产生对应的AWVALID和WVALID
2.从机可以在AWREADY没有拉高之前,去等待AWVALID和WVALID
3.从机可以在AWVALID和WVALID拉高之前去拉高AWVALID
4.从机可以在WREADY没有拉高之前,去等待AWVALID和WVALID
5.从机必须等待AWVALID、AWREADY、WVALID、WREADY都拉高才可以去拉高BVALID
6.从机必须等待WLAST拉高之后才可以拉高BVALD
7.从机不可以在BVALID拉高之前去等待BREADY
8.主机可以在拉高BREADY之前等待BVALID
9.主机可以在bvalid拉高之前拉高BREADY

传输结构

地址结构

AXI协议基于突发传输,主机开始发送地址和控制信号给从机,从机需要计算地址进行后续的突发传输。按照协议规定一次突发不超过4KB大小,这可以防止一次突发传输跨越两个从机,所以从机在地址划分时候需要最小4KB的地址增量

突发长度

突发长度由ARLEN[7:0]和AWLEN[7:0]决定
AXI-3支持1~16突发,在所有的突发模式,突发长度 = AXLEN[3:0] + 1
AXI-4支持1~256突发长度在INCR模式下,支持在其他模式下支持1-16的长度突发。突发长度 = AXLEN[7:0] +1
突发需要遵循以下规则:
1.在回环模式下突发,突发的长度只能为2、4、8、16
2.一次突发不能超过4KB的边界
3.不能提前终止突发(可以通过禁用位字节选通来间接停止数据的传输)

突发大小

突发大小表示可以在一次突发过程中传输多少个字节,突发长度由ARSIZE[2:0]和AWSIZE[2:0]决定。

在这里插入图片描述

突发类型

AXI有三种突发类型
1.固定突发:对于每次突发,突发的地址都是固定的,多用与fifo结构中。
2.自增突发:在递增突发中,每个传输的地址都是上一个地址的增量,增量的值取决于突发的大小,在突发大小为4的增量传输中,每次增量为4,多用于可以正常顺序访问的内存。
3.回环突发:回环突发首先自增突发,若地址达到上限地址将会复位到最初始地址。初始地址要与突发大小对齐,且突发的长度只能为2、4、8、16
在这里插入图片描述
突发种类由ARBURST[1:0]和WRBURST[1:0]决定

传输数据处理

读写数据总线需要处理总线上不同大小的传输,以及处理非对其的传输。

写选通信号strobes

WSTRB[n:0]在为高时发出信号,指定数据总线中包含有效信息的字节选通,写入数据总线每8个位都有一个写选通,WSTRB[n]对应于WDATA[(8n+7):8n]。当WVALID为低电平时,WSTRB可以为任意值 ,规范建议改信号为低或者保持之前的值。

部分位宽传输控制

当主机传输数据比总线宽度窄时,地址和控制信息将确定传输的位置,在自增突发和回环突发中,每次传输的选用不同的选通信号。在固定突发中,每次传输选用固定的选通信号。
8bit数据在32bit总线位宽的自增传输传输和32bit数据在64bit总线位宽传输示意图:
在这里插入图片描述
在这里插入图片描述

Byte invariance

Byte invariance 称为字节不变性,在计算机系统中存在大端存储(在memory中高位地址存低位,低位地址存高位)和小端地址(在memory中大端地址存高位,低位地址存低位)

在这里插入图片描述
在这里插入图片描述
在AXI协议中不考虑大端和小端模式,默认小端传输即地址0对应的byte一定是放到小端总线的data[7:0] 进行传输的。

非对齐传输

AXI支持不对其的传输,对于多个字节的传输可能会出现地址不对齐的情况,例如从非32bit对齐的地址进行32bit的传输,会跨越两个32bit的地址边界。
主机需要做响应的处理,将非对齐的地址传输进行对齐处理,地址对齐处理之后将不需要传输的字节通过位选通信号WSTRB来进行屏蔽。
例如:

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

读写响应

AXI协议为读写提供响应,对于读取事物,来自从机的响应通过读取数据通道上发出信号。对于写入事物,响应的信息在写响应通道发出。
响应信号为RRESP[1:0]和BRESP[1:0]
OKAY(大多数事物的响应):
1.正常访问成功
2. 独占访问失败
3. 独占访问的从机不支持独占访问
EXOKAY:表示独占操作完成
SLVERR
访问已经到达从机,但是从机无法响应,可能出现的情况包括:
1.FIFO出现上溢或下溢
2.传输大小不支持
3.对只读区域进行写操作
4.从机超时
5.访问powered-down的从机
DECERR:无法通过总线互联的地址分配找到对应的从机

在这里插入图片描述
读写响应发生在每一次的传输,而不是只正对于一组突发事件,在一组突发传输中可以发生不同响应信号,比如在读16突发中,可以发生15次OKAY信号和一次SLVERR信号。所以要求就算是DECERR响应信号,从机也必须发出对于主机请求的错误信号。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AMBA协议是指Advanced Microcontroller Bus Architecture(高级微控制器总线结构)协议,其中包括多个不同的总线协议,用于在现代SoC(系统级芯片)设计中实现高效的内部通信。其中,AMBA的第四代是AXI(Advanced eXtensible Interface)协议AXI协议是AMBA协议中的一种,被广泛应用于现代SoC设计中。它提供了一种高性能,灵活且可扩展的总线接口,用于在处理器、外设设备和内存之间进行高效的数据传输。AXI协议具有多个特性,包括支持高带宽、流水线设计、分层模型和端到端数据保护等。 AXI协议的主要特点包括: 1. 高带宽:AXI协议支持高频率的数据传输,能够满足现代SoC设计对于大量数据的处理需求。 2. 流水线设计:AXI协议使用流水线技术,可以同时进行多个传输操作,提高了总线的效率和吞吐量。 3. 分层模型:AXI协议采用分层的结构,可以灵活地连接多个从属设备,并支持多个处理器之间的共享内存访问。 4. 端到端数据保护:AXI协议引入了一些机制,如校验和和错误检测,以确保数据在传输过程中的完整性和可靠性。 总的来说,AMBA协议中的AXI协议是一种用于现代SoC设计的高性能、灵活和可扩展的总线接口协议,通过提供高带宽、流水线设计和端到端数据保护等特性,满足了现代SoC设计对于高效数据传输的需求。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [AMBA协议- AXI协议指南(1)](https://blog.csdn.net/ygyglg/article/details/129937804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值