FPGA的异步复位与同步复位

FPGA的异步复位与同步复位

博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来投稿,谢谢!

引言

在做FPGA或者数字IC电路设计的时候,无法避免的一个问题就是电路的复位设计,电路的复位方式一般分为两种,异步复位跟同步复位。两种不同的复位方式都有各自的优缺点,本文就是介绍这两种方式的对比,为FPGA设计者或者数字IC设计工程师在选复位方式的时候不再疑惑。

同步与异步

在介绍同步复位与异步复位的区别及优缺点之前先介绍同步与异步的概念。
同步复位:同步是指与时钟同步,在满足时钟沿(上升沿或者下降沿)触发条件下检测复位信号是否有效,如果有效则在下个时钟沿触发的时候生效。
异步复位:异步是指与时钟无关,在任何情况下,一旦检测到复位信号有效则马上覆位整个系统电路。
也就是可以说异步复位跟同步复位的第一个区别就是:同步复位在复位信号在有效的时候还要等待下一个时钟才能生效。而异步复位则是马上生效。

同步复位

同步复位的电路设计

在上面我们已经知道同步复位是指与时钟同步,在满足时钟沿(上升沿或者下降沿)触发条件下检测复位信号是否有效,如果有效则在下个时钟沿触发的时候生效。具体的同步复位电路设计如下图所示:
在这里插入图片描述
同步复位电路设计图如下图所示,可以看得到其实同步复位是用了一个与门,与上了输入信号再给了D触发器的。这种复位设计触发方式有好有坏。通过与门控制输入达到同步在时钟沿时才能有效复位的设计,但是增加了路径延迟,消耗电路余量。
在这里插入图片描述
同步复位的功能仿真图如下所示:当rst_n=0的时候,输出b不会马上被复位,而是要等待到下一个时钟沿才能生效。同时在后面可以可得到对于短暂的复位,如果复位脉冲的宽度不大于一个时钟周期直至到下一个时钟沿的话,那么复位就会无效,计数器继续工作。这样子同步复位就有好处也有无处了,如果对于短暂的假复位,电路不会复位受到影响而继续工作,但是万一是真复位又没有保持直至下个时钟沿就会复位电路失败。
在这里插入图片描述

同步复位的优缺点

同步电路的优点:
1:同步复位在综合的时候会综合出一个比较小面积的触发器(相对于异步复位来言),因为复位信号想通过一个cell门来于输入与之,再一并给触发器的(不过有时候在现如今的大规模芯片设计里面,节省一个cell或者一个触发器的面积对电路来说可能不是很有意义);
2:同步复位在做电路仿真的时候比较容易;
3:同步复位可以保证电路是100%是同步电路;
4:同步复位可以保证在时钟沿有效的时候来采,所以时钟工作时会减少因为复位而带来的毛刺对系统造成亚稳态的影响;
同步电路的缺点:
1:同步复位的复位脉冲宽度要保证足够长到被下一个时钟沿采集捕捉到,才能有效复位电路;
2:大部分的库元件都是直接含有异步复位端,同步复位的话就如上面说的,要用cell门来与上输入成为组合逻辑,从一定情况的浪费了资源;
3:如果芯片或者FPGA有三态总线的话,则复位方式就很重要了。为了防止内部三态总线发生竞争冲突,三态总线在芯片通电的时候,该芯片的电源上必须有一个异步复位端。

异步复位

异步复位的电路设计

上面我们已经知道异步是指与时钟无关,在任何情况下,一旦检测到复位信号有效则马上覆位整个系统电路。具体的异步复位电路设计如下图所示:
在这里插入图片描述
异步复位的电路设计图如下所示,复位端直接于触发器连接,在rst_n复位信号来的时候可以马上覆位电路。这种异步复位也是有好有坏,直接利用触发器本身可以马上覆位电路,不增加数据路径长度;但是复位有可能复位在时钟沿的附近而造成亚稳态。
在这里插入图片描述
异步复位的功能仿真图如下所示:当rst_n=0的时候,输出d马上被复位,不需要等待到下一个时钟沿才能生效。对于异步复位这种立刻生效的功能也有好有坏。那就是像对于后面的那种短暂的假复位,电路也会被马上覆位而重新开始工作。
在这里插入图片描述

异步复位的优缺点

异步电路的优点:
1:异步复位的最大优点就是供应商的库元件里面带有含异步复位端的触发器,数据路径可以保证被清掉;
2:异步复位不带cell门去与输入,所以容易布局布线,并且减少了数据路径上的延迟;
3:异步复位可以被马上覆位不用等待一个时钟周期。
异步电路的缺点:
1:异步复位不利于仿真,因为在做仿真的时候,许多输入都要等待一个时钟沿来触发,而异步复位并不care;
2:异步复位最大缺点就是因为异步复位有可能随时发生在时钟沿的附近而导致亚稳态(在上一条博客中已经解释过了);
3:异步复位如果其复位源存在一些短暂而虚假的复位脉冲就会产生毛刺甚至导致系统亚稳态。

异步复位同步释放

对于一些经典的设计方法是“异步复位,同步释放”,这种电路设计RTL代码如下所示:
在这里插入图片描述
异步复位同步释放的电路设计图如下所示:在这里插入图片描述

复位抖动的消除

对于上面所述的一样,如果复位存在抖动或者存在假复位的现象,而我们想要避免消除这种想象。可以采用下面这种复位电路设计方式,将复位信号进行延迟后再与,延迟计数的同时,使复位信号与时钟同步(异步复位,同步释放),不仅可以避免复位存在的抖动或者假复位,同时避免了单纯异步复位带来的亚稳态的危险。
在这里插入图片描述
这种电路设计的RTL代码图如下所示:
在这里插入图片描述

总结

1:同步复位的主要优点就是减少毛刺避免亚稳态,容易仿真,但是浪费资源且不易综合分析;
2:异步复位的主要优点就是节省资源,易综合分析跟布局布线,但是容易造成亚稳态跟生成毛刺;
3:复位的改进设计方式有多种方式较多采用的是异步复位,同步释放的设计方法。

参考文献

Synchronous Resets ? Asynchrous Resets? I am so confused! How will i ever know which to use ? Clifford E Cummings Don Mills

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章