异步复位同步撤离

单纯的同步复位需要依赖于时钟,因此在进行复位时需要将门控时钟打开,这样功耗会较高,同时复位路径上会引入组合逻辑的cell,对于数据路径的话,它会多logic cell,这样会进一步的挤压timing_path的setup窗口。

单纯的异步复位,因为复位和时钟沿都决定寄存器Q端输出的状态,所以会有亚稳态问题,在进行复位时,有亚稳态倒还好,因为最终都是要复位掉的,所有寄存器最终都会固定在一个状态,但是在撤离的时候产生亚稳态的话就会比较麻烦,最后可能会导致有些寄存器解复位掉了,有些寄存器仍处于复位状态,这样解复位后的初始状态就不如期望的那样,引起功能错误。

因此就有一个异步复位同步撤离的电路方案,该方案中复位信号都还是接在了寄存器的复位端,只是在撤离的时候会是在时钟边沿产生的复位信号。主要关注撤离时的状态

 

 对于异步复位的这几级寄存器,它复位端接的复位信号肯定是异步,因此在复位撤离的那个时刻,若违反recovery time或removal time,那么第一级寄存器由于复位和不复位的状态不一致,因此可能会出现亚稳态,但是第二级寄存器复位和不复位状态下,Q端都会输出0,所以不会产生亚稳态,如果有第三级寄存器的话,第三级寄存器也不会有亚稳态。这就和异步信号输到D端一样,第一级会产生亚稳态,后面的几级寄存器会降低这个亚稳态概率,保证最后一级寄存器输出端仍是亚稳态的概率很低,这就是为什么需要至少两拍的原因。

当解复位信号由第二级寄存器传出来到系统中的寄存器时,这时就可以通过DC工具来检查recovery time 和removal time保证每一个解复位都不会产生亚稳态。

 

异步复位同步释放案例

如何选择同步复位和异步复位

 

一个想法:在使用同步复位时,如果我先开时钟再复位,然后关掉时钟,在解复位时再开时钟再解复位,这样就可以减少系统在复位期间的功耗了,不过还是不好解决复位电路上有组合逻辑cell的问题

在使用异步复位时,先解复位再开时钟,这样不就可以避免亚稳态了吗?不一定非要用异步复位同步撤离。

 

posted @ 2020-07-01 00:26  daixy  阅读(1571)  评论(0编辑  收藏  举报