ADC SAR Logics Timing Analysis


写在前面

最近在做SAR逻辑的版图优化工作,遇到了一些奇怪的问题,在总结错误之后,将SAR逻辑的工作原理以及时序分析记录在这里,以供之后进行查阅。

SAR逻辑做Retiming的动机以及时序

在SAR ADC中,对比较器输出结果做Retiming之后,再输出给寄存器进行寄存,这样保证了寄存器输出拨动CDAC的时刻不存在先后,避免了有的比较器输出结果比较缓慢,在判断过程中,迅速判断出结果的比较器波动CDAC从而影响有的比较器的结果。

其时序如下所示,

采样跟随时钟拉低代表ADC正在进行Tracking,其拉高后表示Tracking阶段结束,进入到转换阶段,该时钟拉高后,比较器的Self Clock被拉高,这时,比较器结束默认的复位状态,准备接受来自CDAC输出的需要进行比较的数据,这时CDAC被拨动,进入到Reset Phase。

经过30ps~60ps左右的时间,三个比较器根据其输入大小异步地产生三个输出,当三个输出都准备好后,SAR逻辑判断并驱动寄存器和比较器的自时钟进行翻转,寄存器的Self Clock先进行翻转,通知输出到寄存器的数据可以被释放到寄存器的输入,这时,三组数据同时进入到寄存器中,寄存器复位状态在跟随相的时候就已经被解除了,所以,寄存器一检测到输入,便立即开始进行锁存操作,寄存根据输入判断得到得三组结果。

在寄存器得到输入后$10$~$20ps$左右的时间,比较器开始进行复位操作,经过大概$30ps$左右,SAR逻辑检测到比较器复位完成后,便驱动Self Clock进行翻转,先翻转寄存器,再翻转比较器。寄存器翻转之后,触发本级的寄存器的读入时间窗口关闭,并驱动下一级的读入窗口开启,由于此时比较器已经完成了复位,所以下一级寄存器打开也不会导致同一Cycle的数据被读入两级的寄存器中。

比较器翻转后,从复位状态进入了比较状态,开始了下一个周期的比较。

上述内容不断重复,直到最后的数据被读入到寄存器中,触发ED信号,使自时钟关闭,便结束了一个样本的转换操作。

现在来分析一下时间是如何分配在ADC的转换时序中的,假设采样跟随时钟拉低的时刻为零,经过大概$250ps$左右的时间后,采样跟随过程完成,时钟被拉高,驱动比较器Self Clock进行翻转,进入到比较状态,经过至少30ps左右的时间,三个比较器逐步产生结果,再经过$30ps$左右的时间,三个比较器的结果经过Retiming的逻辑被释放到寄存器的输入,同时,三个比较器,开始进行复位操作,经过$40ps$左右的时间,被释放到寄存器的输入寄存后输出至CDAC进行拨动CDAC的操作,一个SAR Cycle大概$130ps$左右的时间仅剩下$30ps$左右的时间剩下给CDAC进行建立了。

分析一下上述过程,其中由CDAC输出到比较器产生输出的时间我们没法进行控制,但是我们可以取消Retiming来获取$30ps$的时间。

SAR逻辑不做Retiming的动机以及时序

在绘制版图后,由于REF建立时间变慢,导致最终的输出还没建立好就进行了比较,一方面是由于REF的建立时间变慢,另一方面还因为CDAC拨动的时刻太慢了,理应在比较器出结果之后就立刻进行拨动,但是经过Retiming以及逻辑后,延迟了$30ps+40ps=70ps$的时间,总共SAR逻辑的时间只有$170ps$左右,CDAC建立的时间仅仅留了一半不到,如果在极限情况下,SAR逻辑的时间只有$130ps$,那么留给CDAC建立的时间仅仅只有30ps了,对于CDAC来说,建立将变得十分困难,因为REF是按照170ps左右的时间进行设计的,因此,这大大超出了REF BUF的能力。

下面给出不做Retiming的时序图,

这幅图中消去了比较器输出到寄存器的Delay,这个Delay主要由Retiming引起的,长度大约为$30ps$,消去了这个时间之后,CDAC拨动的时间就会提前$30ps$,但比较器进行比较的时间保持不变,因为比较器开始比较的时间不取决于寄存器的输出,而是取决于比较器的输出。这样,CDAC的建立就多出来了$30ps$的时间。

但是这个方案有一定的问题,因为寄存器Self Clock在比较器输出结果的时候仍然是低,这时候,一旦寄存器输出结果了,就会马上触发Q信号,告诉下一级寄存器要开始寄存结果了,这就会导致不仅仅本级的寄存器寄存了结果,下一级的寄存器也寄存了相同的结果,导致时序出错。

这时我们仅仅需要改变寄存器的时钟,使其检测到输入的时候,寄存器的Self Clock拉高状态即可,很显然,我们可以直接让比较器Self Clock和寄存器的Self Clock为同一个时钟,即可满足这一需求,如下的时序图所示,

当然这样的时序图仍然存在潜在问题,那就是寄存器还没有关闭之前,比较器就进行了复位,输出到寄存器的数据就发生了变化,会影响寄存器寄存的结果,但是就仿真而言,这样的情况并不会发生。

最后

到这里,关于SAR逻辑的时序分析就结束了,这里探讨了使用Retiming的好坏,以及对应的时序应该做如何的调整。到这里我才深刻理解了为什么SAR逻辑有两个环路,其实,这两个环路有所交叠,由比较器产生结果的时刻开始,两个Self Clock就开始驱动两个部件完成不同的任务,比较器需要完成复位,寄存器需要对比较器的输出结果进行寄存,这就要求比较器需要在寄存器寄存结果后才进行复位操作,防止出现数据还没有被寄存就被复位的情况,同时寄存器的输出去拨动CDAC,产生对应的输出,等待比较器复位完成后,驱动两个Self Clock进行翻转,一方面驱动寄存器关闭,另一方面驱动比较器进行下一次比较。

至此,我理解了整个SAR逻辑的工作过程,感觉调电路更有方向了!


文章作者: 南航古惑仔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 南航古惑仔 !
  目录