四、握手
4.1握手过程
所有的五个通道都是通过相同的VALID/READY握手处理来传输地址、数据和控制信息。
双向握手的机制意味着主机和从机之间传输数据时,都可以控制传输的速率,只有当VALID和READY同时为高电平时,传输才会发生。
发送方(Source)产生VLAID信号来指明何时数据或控制信息有效。
接收方(Destination)产生READY信号来指明已经准备好接受数据或控制信息。
发送方的VALID信号和接收方的READY信号并不需要同时置位,可以发送方先准备好,也可以接收方先准备好。也就是说VALID可以早于READY,也可以晚于READY,也可以同时置位。对应的就是下面三种情况。
1.VALID先
源设备发出数据或控制信息,并驱动 VALID 信号为高。从源设备发出的数据或控制信息保持稳定,直到目标设备驱动 READY 信号为高,表示目标设备接收数据或控制信息。箭头标示出了传输发生的时间。
2.READY先
目标设备在数据或控制信息有效之前驱动 READY 为高。这表示只要数据或控制信息有效, 目标设备就可以在一个单周期内接收数据或控制信息。箭头标示出了传输发生的时间。
3.同时
源设备和目标设备在同一个周期内表示源设备和目标设备都可以传输数据或控制信息。在这种情况下,传输立即发生。箭头标示出传输发生的时间。
4.2通道之间关系
地址、读、写以及写响应通道之间的关系是灵活的。
-
读数据必须在接收到读地址信号之后
-
写响应必须在一次写事务的最后一个写数据之后
-
通道握手信号之间的依赖关系
4.3通道握手信号之间的依赖
为了避免死锁,协议规定发送方的VALID不能依赖接收方的READY;
反过来,接收方的READY可以等待,也可以不等待发送方的VALID。
单箭头(无依赖关系)
双箭头:(依赖关系)
读传输的依赖关系
当发生一次读传输时,
读地址通道中,主机(master)是发送方,而从机(slave)是接收方;
在读数据通道中,主机是接收方,从机是发送方,这时的依赖关系是:
-
从机可以先等待 ARVALID 被断言,之后从机再断言 ARREADY
-
从机必须等待 ARVALID 和 ARREADY 都被断言之后,从机才能断言 RVALID 来返回读数据
写传输的依赖关系
对于写传输来说,
在写地址和写数据通道上,主机是发送方,从机是接收方;
在写响应通道,主机是接收方,从机是发送方,这时的依赖关系是:
-
从机必须先等待 WVALID 和 WREADY 被断言,之后从机才能断言 BVALID
五、地址选项
本章讲述了 AXI 突发类型,以及计算突发中传输的地址和字节通道。
-
关于地址选项
-
突发长度
-
突发大小
-
突发类型
-
突发地址
5.1 关于地址选项AXI
突发传输通俗来讲,就是一次只需要提供首地址,即可传输约定长度的数据。
例如,首地址0X00,突发长度为8,那么一次就可以往地址0x00-0x07中一共写入8个数据。
一次突发传输不能跨越 4KB 边界即0x1000
5.2 突发长度(Burst length)数据个数
AWLEN 和 ARLEN 信号规定了每个突发中的数据传输次数。
对于回环突发,突发长度必须是 2、 4、 8 或 16 个传输。
每个传输必须通过 ARLEN 或 AWLEN 确定传输次数。
突发传输不能在完成所有数据传输前提前结束
5.3 突发大小(burst size)每一拍数据大小
表 4-2 展示了 ARSIZE 或 AWSIZE 信号是怎样确定一个突发中,每拍(beat)或每个数据传输中要传输的最大数据字节数的。
5.4 突发类型(burst type)
AXI 协议定义了三种突发类型,描述如下:
-
固定长度突发(FIXED)
-
增量突发(INCR)
-
回环突发(WRAP)
5.4.1 固定长度突发
每次传输事务的地址均为同一地址。
该类型适合对同一地址进行反复操作,例如写入或者读出FIFO,其操作地址就是固定的。
5.4.2 增量突发
在一个增量突发中,每个传输的地址都是在前一个传输地址的基础上递增的。增量值取决于传输大小。
例如,突发中每个传输的大小是 4bytes,则每个传输地址是前一个地址加 4。
5.4.3 回环突发
回环突发类似于增量突发,突发中每个传输的地址按增量递增的。
但是在回环突发中,当达到较大的地址边界时,地址会卷回到较小的地址。回环边界是突发中每个传输的大小乘以突发中总共传输的次数。回环突发需要遵循两个限制:
-
起始地址必须对齐到传输大小
-
突发长度必须是 2、 4、 8 或 16
5.5 写选取(Write strobes)WSTRB[3:0]
WSTRB 信号中的单个 bit 置起,表示对应位置上的字节有效。(选通信号)
WSTRB[0] 为 1 WDATA[7:0]有效;WSTRB[1] 为 1 WDATA[15:8]有效
这个信号是用来实现掩码功能的,对于我们的一般应用,直接一直将其拉高,表示当前传输数据全部有效即可。
5.6 读、写响应(Read and Write response)
响应值包括:
OKAY (0b00):正常访问成功。表示已成功完成正常访问
EXOKAY (0b01):专属访问成功。
SLVERR (0b10):从设备错误。已成功访问从设备,但从设备希望向发端主设备返回错误条件(例如,数据读取无效)。
DECERR (0b11):解码器错误。通常由互连组件生成,用于指示传输事务地址处没有任何从设备
六、例子
6.1读突发(四个传输)
注意:控制信号:突发长度和类型等省略了
主机驱动地址和控制信号,从机在一个周期后接收地址。
在地址出现在地址总线上之后,读数据通道上发生数据传输。从机保持 VALID 信号为低,直到读数据有效。
在突发中最后一个数据传输,从机断言 RLAST 信号来表示最后一个数据项已被传输。
6.2写突发
当主机在写地址通道上发送了一个地址和控制信息时,突发过程开始。
之后,主机通过写数据通道发送每个写数据。当主机发送最后一个数据时, WLAST 信号拉高。当从机接收完所有的数据之后,会驱动一个写响应给主机来表示写事物完成。