24、master 重建被终止的burst 传输时,是否有限制?
唯一的限制是,master 需要使用合法的burst组合来重建被终止的burst传输。例如,如果一个master 执行8拍burst传输,但在完成3次传输后就失去了对总线的控制。这时其余的5次burst传输可以使用SINGLE burst传输,和INCR4 burst传输,也可以使用5拍INCR burst传输。
为简单起见,建议master 使用INCR burst传输来重建剩余的传输。
25、 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响应没有任何意义。
26、AHB中的wrapping burst可以和总的传输字节数对齐么?
可以,此行为符合AHB协议。
以四拍传输大小为4字节的wrapping burst传输为例(共传输16字节)。如果传输的起始地址是0x30,则burst传输的四次地址为0x30、0x34、0x38和0x3C。尽管HBURST被设置为WRAP4,但实际上不会发生wrap,当然这也是AMBA AHB协议允许的。
27、master 应该在什么时候拉高和拉低locked 传输中的HLOCK信号?
HLOCK信号至少在locked 传输的地址阶段开始之前至少一个周期拉高,以便arbiter能够在地址阶段开始时采样到HLOCK信号。
在locked传输的最后一次传输的地址阶段,master 应该拉低HLOCK信号。
28、master 什么时候应该拉低HBUSREQ 信号?
对于一个未定义长度的burst 传输(INCR),master 必须保持其hbusreq信号的拉高状态,直到它开始了burst 传输中最后一次传输的地址阶段。
对于定义长度的burst 传输,一旦获得了第一次总线传输的授权,master 就可以拉低hbusreq信号。可以这样做的原因是,arbiter可以计算burst传输中的传输数量,并保持授予给定master总线权限,直到burst传输完成。
29、在一次locked 传输后,arbiter 什么时候才可以授予另一个master 总线权限?
arbiter 总是在locked 传输结束时授予该master 一拍额外的传输,即master 在locked 传输的最后一次传输的数据阶段会在拉低HMASTLOCK 信号执行一次传输的地址阶段。
在此期间,仲裁器可以将HGRANT信号更改为新的master,但如果上次locked 传输的数据阶段接收到SPLIT 或RETRY 响应,则master将驱动HGRANT信号给正在执行locked 传输的master(RETRY 响应场景)或者授权给Dummy master(SPLIT 响应场景)。
30、master 可以在burst传输期间拉低HLOCK吗?
AHB SPEC要求在burst传输期间所有控制信号(除HADDR和HTRANS外)保持不变。
因此,HLOCK必须在burst传输期间保持高,并且只能在最后一次的地址阶段拉低。
31、当master 没有请求但是被授予总线权限时,master 可以执行非IDLE以外的传输吗?
是的。master 没有请求总线时,可以执行IDLE以外的传输。在这种情况下,仍然建议master 拉高其请求信号,以便arbiter 在传输进行期间不会将总线的权限授予给其他的master 。
32、如果默认情况下当前master 被授予了总线权限,那么在启动非idle传输之前,它必须拉高hbusreq多少个周期?