多处翻译官方文档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:无法通过总线互联的地址分配找到对应的从机文章来源:https://www.toymoban.com/news/detail-464062.html
读写响应发生在每一次的传输,而不是只正对于一组突发事件,在一组突发传输中可以发生不同响应信号,比如在读16突发中,可以发生15次OKAY信号和一次SLVERR信号。所以要求就算是DECERR响应信号,从机也必须发出对于主机请求的错误信号。文章来源地址https://www.toymoban.com/news/detail-464062.html
到了这里,关于AXI协议容易忽视的细节的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!