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传输也是可以的。
本文转载自公众号:芯片数字实验室
原文链接:
https://mp.weixin.qq.com/s/ebwZTDdkjPSy\_IFCayfa7w
未经作者同意,请勿转载!
推荐阅读
想了解更多芯片设计前端及后端的技术内容,欢迎关注芯片数字实验室专栏。AMBA协议相关文章请关注AMBA 协议集专栏。