| ||
我们在PLL中,MMD常常会使用retiming将MMD的输出噪声优化,但,如果不合理设计,你的retiming可能会亚稳态。
有人可能会说,我直接使用打两拍,是不是就可以解决这个问题,其实不然。打两拍虽然可以解决亚稳态问题,但是并不能让MMD的分频正确。因为出现亚稳态后,稳定在电平1还是电平0是随机的,所以当第二个触发器打拍的时候,采样的值是不确定的,因此最终分频比也会有区别。
要分析这个问题,我们首先要考虑,需要怎样才不会发生亚稳态,答案就是要让触发器在合适的地方采样,静态时序分析给我们提供了依据。
要让触发器正确采样,需要满足两个重要的式子,也就是我们常说的建立时间检查和保持时间检查。
这里贴一下静态时序分析书中的图
用式子表示就是Tlaunch + Tck2q +Tdp < Tcapture + Tcycle -Tsetup
这个式子也能计算时序电路中的最大工作频率,我们的电路设计,经常会涉及到最高工作频率,为什么会考虑减小组合逻辑延时,换速度setup时间小的触发器,其实就是源于此。
保持时间检查的式子是
Tlaunch + Tck2q + Tdp > Tcapture + Thold
你会发现,保持时间检查的式子不包含CLK的周期,这个式子会比建立时间检查用的少,但也挺重要的。
回到MMD中,如下图所示,当2/3分频的级联数太多时,如果最后的MMD输出要等待最后一级经过多个与门才到最终的retimer,那么在上述中的式子,Tdp(组合逻辑延时)会变的非常大,而VCO的频率往往会比较高,所以会很难满足建立时间检查,亚稳态往往就会发生,MMD的分频比就会出现错误。
除了多级的组合逻辑延时的问题,还有一个问题是,当你的MMD分频比范围很大时,有可能在某个分频是4个与门延迟,在某个分频又是6个与门的延时,加上PVT的因素,这个组合逻辑延时的范围会变得很大,这个时候,你的建立时间检查就更难保证了。
笔者看到的论文中,主要有三种方法:
这种方法适合用于特定的两个触发器组成的MMD。
这个是高通公司的一个论文。从截图就可以看出年代久远,VLSIC-2004 A 4GHz Fractional-N synthesizer for IEEE 802.11a
他的2/3分频cell是上一篇我提到的2个触发器的的2/3分频,也就是下图中的2/3分频cell
截取之前我发过的时序图,下面分别是是两个2/3分频cell级联电路图,3切换到4分频的时序图,你会发现,CLKOUT的上升沿和下降沿都是随着Q0(F1的N)的上升沿和下降沿变化。
也就是说,不管你的电路级联了多少级,你的CLKout输出延时总是只有一个dff和一个与门,这就更好控制了。当然,占空比可能会比较差,所以在高通的论文中使用了其他信号作为复位,保证合适的占空比。
这种方法的基本思路就是如果没有良好的时序,我就创造良好的时序关系。在分频输出加入合适的buffer增加延时,通过数字校准选择合适的buffer。
这个方法适用于任何MMD。
论文是TCAS-2 Low-Power Divider Retiming in a 3–4 GHz Fractional-N PLL.来自米兰理工的一个fellow的论文
基本思路就是,尽量将分频输出的div 经过buffer后对其vco的下降沿,这样就能保证延时后的输出肯定不会在vco上升沿变化。当然,vco下降沿对延时后的div信号采样可能会产生亚稳态,但是我可以用打两拍啊,这个校准算法的数据传输时发生错误其实不会影响我的MMD输出分频。
这个方法还有一个优点是,可以只使用一个retiming DFF,功耗不会很高,校准结束之后,校准部分就可以关闭。
基本思路就是,既然我一个周期不能满足,那我通过流水线方法,将多个组合逻辑分在多个clk中进行处理。
论文是JSSC-2023 A 20-GHz PLL With 20.9-fs Random Jitter 拉扎维学生的论文
这个论文的MMD用的就是典型的两个latch组成的论文,因为这个2/3分频确实会一级 一级传导,所以不得不考虑处理长链路的延时问题
他这个方法使用了多级打拍,最后才用VCO的输出打拍,真是复杂!
不过基本思路其实就是流水线方法。最后给大家看一下有retimer和没有retimer的噪声区别。
在这个论文中相差了16dB,vco/2频率大概是10GHz。差别还是比较大的。
想问一下大家会用哪种?我个人比较喜欢偷懒,用第一种或者第二种吧,第二种做了一次,后面改频率范围好像不用做了?大家有更简单的方法吗?教教我!
1.VLSIC-2004 A 4GHz Fractional-N synthesizer for IEEE 802.11a
2.TCAS-2 Low-Power Divider Retiming in a 3–4 GHz Fractional-N PLL