异步复位我们知道是释放的时候存在亚稳态的危险,所以通常做法就是给异步复位信号加同步器。如下图所示:
上图中异步复位从引脚进来,被连在触发器的异步清零端,第二级触发器输出masterrst_n被同步地移除。后端显示的是同步化的异步复位信号的分布,一般推荐使用全局布线资源,或者regional clock网络资源。
前面有文章介绍在多时钟域异步复位信号需要在各个时钟域重新进行同步化,下面是一个示意图:
如上图所示,灰色触发器为异步复位信号的同步器,蓝色触发器则为用户逻辑,我们看到系统异步复位在顶层被同步化,同步化的复位信号进入每个时钟域后被其进入的时钟域的时钟再次同步化。
可以注意module-c跟module-a,b的区别,module-c在第二级同步寄存器使用了上下沿,这是因为有些设计的需要。
上面多时钟域异步复位信号的同步化是基于各个时钟域没有严格的相互关系,那么我们考虑这么一种情况,假如各个时钟域之间存在一定的时序关系呢,比如复位先后的关系,这时候我们可以采用下面的复位同步化结构:
很显然复位的时候a时钟域先复位,其次是b时钟域,最后c时钟域。需要确保的一点是在复位期间各时钟域之间没有数据交换。
我们可以再次引申一下,我在设计一个复杂的系统时候,上述最后一个复位结构也应该适合板级复位结构。假如存在这种先后关系,可以假设板子上有a、b、c三个芯片,可以将a设为master,a产生系统复位进入a后被a时钟同步化,a输出该同步化复位信号给b,同理不进行类似处理等等。
文章评论(0条评论)
登录后参与讨论