13

story · 2020年05月26日

AHB 协议学习之Slave Response

Slave transfer responses

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

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

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

1  表示ERROR。传输过程中发生错误时,必须向master发出错误信号。此时的response需要两个周期才能完成,在第二个周期拉高HREADY****信号。

下表显示传输response的HRESP和HREADY信号。

526.png

这意味着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。
526.png

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 协议集专栏。
推荐阅读
关注数
7870
内容数
81
Arm AMBA协议集,APB,AHB,AXI,CHI等相关公开课回放及文章
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息