AHB 协议学习之Slave Response

学习摘自数字芯片实验室

Slave transfer responses

master在开始一个传输后,不能主动取消,slave开始控制传输的进度。

slave必须提供一个response信号HRESP,指示传输的状态。

0 表示OKAY。传输已成功完成或者slave需要额外的周期才能完成。HREADY信号指示传输是需要插入额外周期还是成功完成。

1 表示ERROR。传输过程中发生错误时,必须向master发出错误信号。此时的response需要两个周期才能完成,在第二个周期拉高HREADY信号。
下表显示传输response的HRESP和HREADY信号。
在这里插入图片描述

这意味着slave可以通过以下三种方式结束传输过程:

•立即完成转移

•插入一个或多个等待状态来完成传输

•发出错误信号表示传输失败

Transfer done

当HREADY为HIGH且HRESP为OKAY时,意为传输成功完成。
Transfer pending

在这里插入图片描述

slave设备可以使用HREADY信号插入适当数量的等待状态。然后拉高HREADY信号,响应OKAY,表示转移成功完成。

当slave设备插入多个等待状态时,它必须输出HRESP为OKAY。

通常,每个slave必须具有预定的最大等待周期数。 这使我们可以计算访问总线的延迟。

一般建议slaves不要插入超过16个等待状态,以防止单次访问锁定总线大量的时钟周期。 但是,这个recommendation不适用于某些设备,例如boot ROM。这种类型的设备通常只在系统启动期间被访问,如果等待周期超过16个等待状态对系统性能的影响可忽略不计。

ERROR response

slave使用ERROR响应来指示传输错误,例如尝试写入到read-only内存位置。

虽然可以在一个周期中给出OKAY响应,但ERROR响应需要两个周期。 要启动ERROR响应,slave将HRESP拉高,将HREADY拉低以指示ERROR延长一次额外的周期。 在下一个周期中,HREADY被拉高以结束传输,此时HRESP保持高电平。

ERROR响应需要双周期的原因是由于总线的流水线特性。当slave发出ERROR响应时,下一个传输的地址已经被广播到总线上了。two-cycle响应给master提供了足够的时间取消下一次访问并将HTRANS [1:0]驱动到IDLE。

如果slave需要两个以上的周期来提供ERROR响应,可以在传输开始时插入更多的等待状态。 此时,HREADY为LOW,response必须设置为OKAY。

在这里插入图片描述

T1-T2 slave插入等待状态并提供OKAY响应。

T2-T3 slave发出ERROR响应。 这是ERROR响应的第一个周期, HREADY为LOW。

T3-T4 slave发出ERROR响应。 这是ERROR的最后一个周期, HREADY为HIGH。master将传输类型改为IDLE。 这取消了预期的对地址B的数据传输。

T4-T5 slave响应OKAY。

如果slave提供ERROR响应,则master可以取消剩余的burst传输。 但是,这不是严格要求的,master继续完成剩下的burst传输也是可以的。

发布了32 篇原创文章 · 获赞 2 · 访问量 1511

猜你喜欢

转载自blog.csdn.net/qq_36248682/article/details/105349735