这周老李带大家补上一个CDC里常考的基础知识点:Reset信号如何同步。
首先来复习一个更加基础的概念:同步reset和异步reset。
同步reset(synchronous reset)是说,当reset信号为active的时候,寄存器在下一个时钟沿到来之后被复位,时钟沿到来之前寄存器还是保持其之前的值。
异步reset(asynchronous reset)是说,当reset信号为active的时候,寄存器立刻被复位,与时钟沿到来与否没有关系。
注意这里老李没有说reset信号为1的时候,而是说active,因为有的时候是为1能够使寄存器复位,这个时候我们说high active,而有的时候是0能够使寄存器复位,这个时候我们说low active。
同步reset和异步reset的区别算是数字芯片设计的入门知识点,一般第一轮面试就会考察。如果这个问题回答不好的话,那么你在面试官心里的印象一定是低于平均值的。老李在这里带大家简单复习一下,如果你对下面这些内容已经烂熟于心,就直接跳过吧。
首先同步reset和异步reset最主要的区别,从定义上就可以看得出,同步reset需要时钟,而异步reset不需要时钟。如果说你的模块需要在没有时钟的时候复位,那只有异步reset能够做到,这也是绝大多数芯片的上电复位信号(PowerOn Reset)以及一些PHY比如USB的内部需要异步reset的原因。而在一些IP中,如果你可以等到时钟开始翻转之后再复位,时钟开始翻转之前内部即使没有复位也没有关系的话,那么就可以用同步reset。
其次一个差别,即同步reset信号在综合后,reset信号和其他的datapth信号一样