在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 617|回复: 8

[求助] AMBA AHB中Slave出现Error回应时,为什么要两个周期,回到IDLE状态是必要操作吗?

[复制链接]
发表于 2025-7-14 03:16:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×



918365ca-edff-49cf-ba2b-9231091b3d9c.png
上图来自AMBA手册,为什么需要一个周期让master进入IDLE状态呢?直接进行进入NONSEQ状态开始下一次传输不行吗?就像正常情况下一次传输完成后,紧接着进入NONSEQ状态开始下一次传输那样。

发表于 2025-7-14 09:55:52 | 显示全部楼层
英文看不懂吗?

因为流水线的原因,slave返回错误的时候,下个周期的地址阶段已经产生,所以需要额外的一个周期使总线取消随后的操作。

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2025-7-14 12:44:21 | 显示全部楼层


   
sme-ic 发表于 2025-7-14 09:55
英文看不懂吗?

因为流水线的原因,slave返回错误的时候,下个周期的地址阶段已经产生,所以需要额外的一 ...


看的懂,但我就是这点不理解,为什么取消传输需要进入IDLE,直接开始后面一次NONSEQ不行吗?
回复 支持 反对

使用道具 举报

发表于 2025-7-15 08:30:12 | 显示全部楼层


   
日晨难再 发表于 2025-7-14 12:44
看的懂,但我就是这点不理解,为什么取消传输需要进入IDLE,直接开始后面一次NONSEQ不行吗?
...


你还是没有理解2级流水线的机制。


ERROR的第一个周期(T3锁存)是对地址A的响应(T2锁存的HRADY=0,因此是等待周期,其OKAY信号无效),第二周期(T4锁存)除用于给出IDLE周期外,还表示地址B的响应也无效!

如果没有第二个ERROR周期,那波形如下所示:

2025-07-15_8-24-15.png

看出问题了吗?T4锁存的状态阶段是OK,表示其对地址B的响应应该为有效!这样就和2个ERROR阶段的结果相冲突。
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2025-7-16 18:54:47 | 显示全部楼层


   
sme-ic 发表于 2025-7-15 08:30
你还是没有理解2级流水线的机制。


感谢前辈解答,按照您的理解,第二个ERROR周期是有必要的,那么可否设计为第二个ERROR周期的同时直接进入NONREQ,而不是用一个IDLE周期填充?这样做看似能节省一个周期。主机在发现HREADY低且ERROR高后,第二个周期就开始新的传输(该周期的ERROR信号为高,HREADY也为高),这样就不需要等待IDLE。
回复 支持 反对

使用道具 举报

发表于 2025-7-18 09:07:03 | 显示全部楼层


   
日晨难再 发表于 2025-7-16 18:54
感谢前辈解答,按照您的理解,第二个ERROR周期是有必要的,那么可否设计为第二个ERROR周期的同时直接进入 ...


从逻辑上来说,可以。

从规格定义上来说,不可以。
因为AHB协议就是这么定义的。

举个例子,18岁为成年人,这就是规则。如果定义为17岁,那么17岁就是成年人。

UART协议,定义了8位、9位格式,那能不能设计5、6、7位呢?
SPI协议,通常8位MCU里设计成8位格式,但许多32位MCU,设计成4~16位格式,有问题吗?

哪怕是AHB,现在也有了AHB5。那么,在AHB5出来之前,如果你设计的AHB协议扩充了现在AHB5的部分,那在当时,它就不是标准的AHB协议。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-18 23:55:02 | 显示全部楼层


   
sme-ic 发表于 2025-7-18 09:07
从逻辑上来说,可以。

从规格定义上来说,不可以。


再次感谢前辈解答,我明白了
回复 支持 反对

使用道具 举报

发表于 2025-7-21 17:43:33 | 显示全部楼层
说一下我的理解,slave作为一个从设备,自己是不能决定发生错误时master的行为的。所以需要提前发出error信号,也就给了master一拍的反应时间,决定是中断传输,还是继续传输,master具体的行为是可以依据自己的需要修改的。
回复 支持 反对

使用道具 举报

发表于 前天 16:34 | 显示全部楼层


   
sme-ic 发表于 2025-7-15 08:30
你还是没有理解2级流水线的机制。


您好,我有个问题想请教一下:
如果AB两个地址属于同一次突发,A地址引发错误将此次突发取消能理解。

但如果两次传输不属于同一次突发,均为单次传输,对A地址的访问是有问题的,但对B地址的访问是正常的,那岂不是把A和B两个传输都取消了,那后续主机是否还得重新对B地址发传输请求?


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-8-6 04:32 , Processed in 0.018281 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表