最近要设计一个单master控制两个slave的小系统,如下图所示。
小系统框图
结果在综合和nlint的时候报出了组合逻辑回环的问题。
后来检查了一下代码,发现组合回环路径如下:
组合回环路径
在BUSMATRIX(图中的BM1和BM2)中和返回给其master的hreadyout和其收到的htrans是组合关系。其组合路径就是图中的1和4。为了避开这种组合路径我之前设计不敢直接用返回的hreadyoutm,耍了个小聪明,使用了另一个端口的hreadyout,结果就出现了如上图的巨大组合回环路径。
之所以使用hreadyout来组合控制HTRANSM是为了解决以下场景:
Master访问BM1然后马上切换去访问BM2。访问BM1的数据phase和访问BM2的地址phase就重合了。为了在重合的时候将BM2的trans发送到BM2,就需要用BM1的ready来组合控制(在BM1的数据phase还未完成时,时不能将BM2的trans发下去,后面解释原因)。于是就产生了上面的组合回环路径。
也就是说直接在BM1的地址phase和数据phase都不然BM2的trans发下去。BM2需要在BM1的数据phase结束后的一个再讲trans发下去,这样就必须在BM2的数据phase的最后一个周期(此时ready1拉高)时,将trans,haddrs等信息保存下来。因为在当这个时候,回复给CPU的ready是有效的&#x
一个AMBA协议相关组合逻辑回环的问题
最新推荐文章于 2024-08-26 11:35:27 发布
