文献标识码:A
DOI:10.16157/j.issn.0258-7998.182211
中文引用格式:孟博,颜河,管金凤. 时钟模块自动修调电路设计[J].电子技术应用,2019,45(5):14-16,22.
英文引用格式:Meng Bo,Yan He,Guan Jinfeng. Design of auto trim circuit for clock generation module[J]. Application of Electronic Technique,2019,45(5):14-16,22.
0 引言
集成电路的生产过程中,制造工艺会有一定的偏差,造成生产出的时钟模块的输出不符合要求[1]。因此需要通过改变trim值调节时钟模块的相关参数,将其输出频率修调至目标频率范围,从而提高芯片良率[2-3]。
进行修调时,当输出频率在目标频率范围之内时,认为修调成功,不再改变trim值,否则继续修改trim值直到修调成功或者达到最大修调次数。改变trim值的方法通常有两种。一种是遍历法,一种是二分法。假设trim值是N bit。使用遍历法时,trim值每次改变1,最大修调次数是2N;使用二分法时,trim值每次改变2n,n为小于N的整数,最大修调次数是N。
遍历法控制简单,当遍历了所有的trim值时,能找到最优的trim值,但测试时间较长。相比遍历法,二分法中每次trim值的改变都会排除当前可取trim值范围内一半的trim值,整个过程中只取几个特殊的trim值,因此测试时间短,但存在可能找不到最优trim值的问题。当只要求把时钟频率修调到目标范围内且不需要寻找到最优trim值时,使用二分法可以节省较多的测试时间,降低测试成本,且N值越大,节省的时间越多。
本文利用二分法设计时钟模块的自动修调电路,可以对时钟模块进行快速修调,降低测试成本。
1 二分法原理
二分法常用于求函数零点的近似值,原理是:取函数f(x)零点所在区间[a,b]的中点,比较区间中点处的值f((a+b)/2)和0的大小,根据比较结果用(a+b)/2代替a或者b,重复上述步骤,使区间的两个端点逐步逼近零点,进而就可求得零点近似值。该方法的使用条件是:函数f(x)在区间[a,b]上连续且f(a)·f(b)<0。
将二分法应用到时钟模块的修调中,假设时钟模块可取的trim值范围是[trim_l,trim_h],时钟频率和trim值的关系是f(trim),目标频率范围是[fl,fh]。根据二分法的使用条件,可知,当[f(trim_l)-fh]·[f(trim_h)-f1]<0时,可以使用二分法来求满足条件的trim值。
另外,由于trim值是离散的,当 trim的step大于目标频率的变化范围时,可能不存在使时钟模块的输出处于目标频率范围内的trim值,如图1所示。
图1中trim step大于目标频率的变化范围,导致每个trim值都无法对应到目标频率范围内,找不到满足要求的trim值。因此设定的目标频率变化范围应该大于trim step并且在芯片正常工作要求的范围之内。
2 自动修调电路设计
自动修调电路主要由脉冲同步器Syn、计数器Counter、比较器Compare、修改trim值模块Adjust组成。修调电路的构造以及和外部ATE、时钟模块OSC的连接关系如图2所示,pulse是ATE提供的慢速脉冲,clk是需要修调的时钟,trim_value[N-1:0]是OSC模块的trim值。
修调电路的工作原理如图3所示,图中c1是在ATE提供的脉冲高电平期间对clk进行计数的计数值;c2是脉冲个数计数器。为了简化电路设计,不采用比较clk实际频率和目标频率范围的方法判断是否修调成功,而是将目标频率范围[fl,fh]转化成计数器c1的目标取值范围[Llimit,Hlimit],如果计数结束时c1的值在[Llimit,Hlimit]之间,则认为修调成功。本文假设OSC输出时钟频率随着trim值的增加大致呈增加趋势。
trim的初始值设为中间值2N-1,c1和c2的初始值设为0。
修调电路接收ATE提供的慢速脉冲pulse和OSC的输出时钟clk。在pulse的高电平期间对clk计数,高电平结束后,将计数值c1与设定的计数值上下限比较。比较结果有三种情况:(1)c1大于Llimit并且小于Hlimit,说明OSC输出频率处于目标频率范围,修调成功;(2)c1大于上限Hlimit,说明OSC输出频率高于目标频率范围,将trim值向降低OSC输出频率的方向调整;(3)c1小于Llimit,说明OSC输出频率低于目标频率范围,将trim值向增高OSC输出频率的方向调整。比较结果为(2)和(3)两种情况时,调整trim值之后重复上述步骤。如果输入N次慢速脉冲后仍然没有修调成功,那么认为不能通过改变trim值将时钟模块的输出频率修调到目标范围,修调失败。
3 慢速脉冲同步和测量误差
ATE输出的pulse和OSC输出的clk是异步关系,所以需要将pulse同步到clk时钟域之后使用。同步电路用两级级联的寄存器实现,如图4所示。
假设pulse宽度等于(m+n)T,其中m为任意正整数,n为小于1的任意实数,T为clk的周期。同步后的pulse_syn相对同步前的pulse脉冲宽度会有所改变,最大误差是pulse_syn的脉宽比pulse的脉宽近似多一个clk周期或者少一个clk周期,因此clk的计数结果cnt1与m+n的最大差值的约等于±1。
以m=2为例对同步前后的脉冲宽度进行分析,如图5所示。
当n=0时,pulse可能会被2或者3个clk上升沿采集到。被两个上升沿采到时,不会发生亚稳态,同步前后的脉冲宽度不变,如图5(a)所示;被三个上升沿采到时,脉冲的前后沿都会发生亚稳态,亚稳态稳定结果的随机性使得同步前后的脉冲宽度不同[5],如图5(b)~图5(e)所示。
从图5中可以看出当同步前的脉冲宽度等于2倍clk周期时,同步后的脉冲宽度可能是1、2、3个clk周期,同步造成的脉宽误差最大是1个clk周期。当n≠0时,pulse可能被 2个或者3个或者4个clk上升沿采集到,分析方法同n=0,同步后脉宽最大误差约等于1个clk周期。
下面分析因为脉宽变化导致的clk频率测量误差。
同步之前的脉冲宽度为:
由式(5)可知,ATE提供的脉冲宽度越宽,频率测量误差越小。
增加脉冲宽度可以减小测试误差,但同时也会增加测试时间,因此需要在测试误差和测试时间之间进行平衡。
另外,为了保证trim值的每次改变都能有效地体现出来,不被脉冲同步所造成的误差掩盖,在脉冲宽度不变的情况下,trim值最低位的改变应使计数器c1的值至少改变2。为了满足该要求,设脉冲宽度最少应该是b s。假设OSC的trim step是a Hz,那么:
式中单位是秒。
通过上述分析,可知慢速脉冲的宽度应该由测量误差和trim step共同决定。
4 仿真结果
根据二分法原理设计时钟模块自动修调电路,被修调的时钟模块的频率和trim值是单调增加的关系,trim位宽为5,trim step大约是fstep=1.5%×2 MHz。目标频率是ftarget=2 MHz,接收的频率范围是ftarget±2%,即1.96 MHz~2.04 MHz,要求测量误差小于±1%。由式(1)、式(5)得到的最小脉冲宽度为100/(1.96×106)≈51.02 μs;由式(6)得到的最小脉冲宽度为2/fstep=2/(2×106×0.015)≈66.7 μs。因此最小脉冲宽度为66.7 μs。为了减少测量误差且测试时间在承受范围内,此处选择500 μs的脉冲宽度。计数器c1的上下限分别对应于2.04 MHz和1.96 MHz,它们的值分别是1 020和980。仿真结果如图6所示,为了方便观察,将c1的值转化模拟波形显示。图6(a)中在输入第3次脉冲后success信号变高,表示自动修调成功。修改时钟模型后再次进行仿真,如图6(b)所示,在最大修调次数,即输入第5次脉冲后fail信号变高,表示时钟模块的输出偏离目标范围太多,无法通过修调使其输出频率满足要求。
从仿真结果可以看出,对于trim位宽为5的时钟模块,设计的自动修调电路能够在不多于5次输入脉冲后给出修调结果。
5 结论
对集成电路的时钟模块进行测试时,需要寻找处于目标频率范围的trim值。为了减少测试时间,设计自动修调电路,修调电路使用二分法改变trim值,二分法相对遍历法具有更快的收敛速度,trim值的变化范围越大,二分法在测试时间上的优势越明显。ATE提供的最小脉冲宽度应该由允许的测量误差和trim step共同决定。
参考文献
[1] 葛南,陈东坡.ATE测试中的Bandgap Trim技术研究[J].微电子学与计算机,2015,32(4):70-78.
[2] 葛南.DC_DC Buck芯片ATE测试中的Trim技术研究[D].上海:上海交通大学,2015.
[3] 李侠.离线式开关电源控制芯片功率器件及部分子电路设计[D].成都:电子科技大学,2011.
[4] 李文昌,王继安,李威,等.修调技术在高精度集成电路中的实现[J].微处理机,2006(1):1-2.
[5] 吴厚航.深入浅出玩转FPGA [M].北京:北京航空航天大学出版社,2010.
作者信息:
孟 博1,2,颜 河1,2,管金凤1,2
(1.北京智芯微电子科技有限公司 国家电网公司重点实验室 电力芯片设计分析实验室,北京100192;
2.北京智芯微电子科技有限公司 北京市电力高可靠性集成电路设计工程技术研究中心,北京100192)