AXI 协议为读写事务都提供了响应信号:
- 对于读事务,slave在读数据通道上示意响应信息。
- 对于写事务,在写响应通道上示意响应信息。
响应由以下信号表示:
- 读传输的 RRESP[1:0]
- 写传输的 BRESP[1:0]
响应类型包括:
-
OKAY 正常的访问成功。表示正常访问已成功,也可以表示独占访问失败。
-
EXOKAY 独占访问成功。表示独占访问的读写部分已成功。
-
SLVERR 从设备错误。当访问已成功到达从设备,但从设备希望向原始主设备返回错误条件时使用。
-
DECERR 解码错误。通常由互连组件生成,表示在事务地址处没有从设备。
下表显示了 RRESP 和 BRESP 信号的编码对应的响应类型。
RRESP[1:0] | BRESP[1:0] | 响应 |
---|---|---|
0b00 | 0b00 | OKAY |
0b01 | 0b01 | EXOKAY |
0b10 | 0b10 | SLVERR |
0b11 | 0b11 | DECERR |
对于写事务,整个突发只起一个响应信号,而不是突发内每次数据传输都起一个响应。
在读事务中,slave可以为一次突发中的不同传输发出不同的响应。例如,在 16 次读传输的突发中,从设备可能对 15 次传输返回 OKAY 响应,而对其中 1 次传输返回 SLVERR 响应。
协议规定,即使报告了错误,也必须执行所需数量的数据传输。例如,如果从slave请求 8 次传输的读取,但该slave有错误条件,slave必须执行 8 次数据传输,每次都带有错误响应。如果slave给出单个错误响应,不会取消突发的其余部分。
1. OKAY,正常访问成功
OKAY 响应指示以下任何一种情况:
- 正常访问的成功
- 独占访问的失败
- 对于不支持独占访问的从设备进行的独占访问
OKAY 是大多数事务的响应。
2. EXOKAY,独占访问成功
EXOKAY 响应表示独占访问的成功。
3. SLVERR,从设备错误
SLVERR 响应表示事务未能成功完成。
为了简化系统监控和调试,本规范建议错误响应仅用于错误条件,而不是用于信号正常的、预期的事件。从设备错误条件的示例包括:
- FIFO(先进先出队列)或缓冲器溢出或下溢条件。
- 尝试的传输大小不受支持。
- 对只读位置尝试写访问。
- 从设备中的超时条件。
- 对已禁用或已关闭电源的函数尝试访问。
4. DECERR,解码错误
DECERR 响应表示互连无法成功解码从设备的访问。 如果互连无法成功解码从设备的访问,它必须返回 DECERR 响应。本规范建议互连将访问路由到默认的从设备,并且默认从设备返回 DECERR 响应。
AXI 协议要求即使出现错误条件,事务的所有数据传输也必须完成。提供 DECERR 响应的任何组件都必须满足这一要求。