11

story · 2021年08月09日

AMBA AHB面试题连载(6~8)

18、HPROT的默认值建议是什么?

对于不需要这些保护信息的masters ,建议HPROT默认值为HPROT[3:0]=4‘b0011,即Non-cacheable, Non-bufferable, Privileged, Data Accesses

19、在复位过程中,AHB信号的状态是什么?

SPEC规定,在复位期间总线信号应处于有效电平(即逻辑“0”或者逻辑“1”),不能是X态或者高阻态。 当然,具体是高电平还是低电平由设计去把握,需要强制约束的是,HTRANS需要为IDLE

另外在复位过程中,需要确保系统中所有slave输出的HREADY需要为高,避免发生死锁,特别是针对多slave的系统。 在这里需要了解输出hready和输出hready的区别。

20、master 重建被终止的burst 传输时,是否有限制?

唯一的限制是,master 需要使用合法的burst组合来重建被终止的burst传输。例如,如果一个master 执行8拍burst传输,但在完成3次传输后就失去了对总线的控制。这时其余的5次burst传输可以使用SINGLE burst传输,和INCR4 burst传输,也可以使用5拍INCR  burst传输。

为简单起见,建议master 使用INCR  burst传输来重建剩余的传输。

21、 AHB如何处理LOCKed SPLITs?

当传输被SPLIT 时,arbiter 将该master 从仲裁选择中移除 ,直到slave 指示传输可以完成。当访问是LOCKed 时,访问不能被另一个master访问中断。

AHB系统能够同时处理这两个需求的唯一方法是在访问请求LOCKed 并且被SPLIT时授予一个 "dummy master" 仲裁。dummy master在锁定传输期间只执行IDLE传输。因为将仲裁授予任何其他的master 都将违反AHB LOCK相关的协议。

当所有的请求响应都处于SPLIT 状态时,也需要使用 dummy master 在此期间一直发送IDLE传输 。所以,建议支持split的slave要一直监测HMASTLOCK 输入信号,因为此时split响应没有任何意义。

22、AHB中的wrapping burst可以和总的传输字节数对齐么?

可以,此行为符合AHB协议。

以四拍传输大小为4字节的wrapping burst传输为例(共传输16字节)。如果传输的起始地址是0x30,则burst传输的四次地址为0x30、0x34、0x38和0x3C。尽管HBURST被设置为WRAP4,但实际上不会发生wrap,当然这也是AMBA AHB协议允许的。

23、master 应该在什么时候拉高和拉低locked 传输中的HLOCK信号?

HLOCK信号至少在locked 传输的地址阶段开始之前至少一个周期拉高,以便arbiter能够在地址阶段开始时采样到HLOCK信号。

在locked传输的最后一次传输的地址阶段,master 应该拉低HLOCK信号。

24、master 什么时候应该拉低HBUSREQ 信号?

对于一个未定义长度的burst 传输(INCR),master 必须保持其hbusreq信号的拉高状态,直到它开始了burst 传输中最后一次传输的地址阶段。 

对于定义长度的burst 传输,一旦获得了第一次总线传输的授权,master 就可以拉低hbusreq信号。可以这样做的原因是,arbiter可以计算burst传输中的传输数量,并保持授予给定master总线权限,直到burst传输完成。

25、在一次locked 传输后,arbiter 什么时候才可以授予另一个master总线权限?

arbiter 总是在locked 传输结束时授予该master 一拍额外的传输,即master 在locked 传输的最后一次传输的数据阶段会在拉低HMASTLOCK 信号执行一次传输的地址阶段。

在此期间,仲裁器可以将HGRANT信号更改为新的master,但如果上次locked 传输的数据阶段接收到SPLIT 或RETRY 响应,则master将驱动HGRANT信号给正在执行locked 传输的master(RETRY 响应场景)或者授权给Dummy master(SPLIT 响应场景)

26、master 可以在burst传输期间拉低HLOCK吗?

AHB SPEC要求在burst传输期间所有控制信号(除HADDR和HTRANS外)保持不变。

因此,HLOCK必须在burst传输期间保持高,并且只能在最后一次的地址阶段拉低。

27、当master 没有请求但是被授予总线权限时,master 可以执行非IDLE以外的传输吗?

是的。master 没有请求总线时,可以执行IDLE以外的传输。在这种情况下,仍然建议master 拉高其请求信号,以便arbiter 在传输进行期间不会将总线的权限授予给其他的master 。

28、如果默认情况下当前master 被授予了总线权限,那么在启动非idle传输之前,它必须拉高hbusreq多少个周期?

它可以立即启动一个非IDLE 传输。

29、HLOCK 信号和HMASTLOCK 信号之间的关系是什么?

在每个传输的地址阶段,arbiter 会采样master的HLOCK信号。如果此时HLOCK被拉高,则arbiter 将在传输的地址阶段拉高HMASTLOCK 信号。

30、 HGRANT信号什么时候可以改变?

HGRANT信号可以在任何周期中发生改变,可能出现以下情况:

1、有可能在当前传输完成之前拉高然后拉低HGRANT信号,因为HGRANT信号只有在HREADY为高时才由masters采样。

2、master 可以在没有请求总线的时候被授予总线 ,也可能在master请求的同一周期被授予总线。

31、为什么HADDR有时为arbiter的输入?

地址总线HADDR不需要作为arbiter 的输入。但在某些系统设计中,使用地址总线来确定在master之间切换的时间点可能很有用。例如,arbiter 可以被设计为在burst 传输边界改变总线所有权。

作者:XinXinHu
原文链接:
6——https://mp.weixin.qq.com/s/N9jjiYC0f-3sqnlTNUgQRg
7——https://mp.weixin.qq.com/s/BQQwFvL1w4AUcxJ7fiUnjQ
8——https://mp.weixin.qq.com/s/JKpavkdFobo7f\_xGWpp70w
微信公众号:
数字芯片实验室.jpg
授权转自数字芯片实验室公众号,请勿二次转载。

推荐阅读

更多数字IC设计技术干货等请关注数字芯片实验室专栏。
推荐阅读
关注数
12273
内容数
199
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息