摘 要:在FPGA芯片的发展中,为实现FPGA强大的功能和性能,在FPGA芯片上内置灵活、性能良好的锁相环来进行时钟管理。基于上述需求设计了一款应用于FPGA中的锁相环电路,该电路主体结构采用的是数模混合的三阶电荷泵锁相环电路,通过采用双环路和动态调节CP输出电流的电路结构扩大了输出时钟的频率输出范围、降低相位噪声、缩短PLL锁定时间,设计出的芯片功能和性能有了明显提高。
关键词:FPGA器件;锁相环;电荷泵锁相环;双环路;快速锁定;相位噪声
1 引言
锁相环作为时钟管理模块的核心,能够通过频率合成产生满足各种需要的时钟频率,并且它还具有输入抖动滤波、零延迟缓冲以及相位匹配等功能,对多相时钟域系统的设计提供了很大的帮助。随着FPGA芯片的功能越来越强大,为了使设计人员在基于FPGA的系统中构建功能强大、性能高的设计,需在FPGA芯片上内置灵活、性能良好的锁相环来进行时钟管理。电荷泵锁相环CPPLL(Charge Pump Phase Locked Loop)是一种常见的锁相环电路,不仅在理论上可实现静态相位误差为零,并且它引入了鉴频鉴相器,增加了PLL锁定捕获范围,并且拥有高速、低抖动、低功耗的特性[1]。
为了实现输出时钟频率范围大、相位噪声低,加快PLL的锁定时间,CPPLL常采用双环结构。双环路CPPLL分别由Fine Loop和Coarse Loop两个环路构成,其中Coarse Loop的VCO增益高,Fine Loop的VCO增益低,这样在相同控制电压范围内比单环锁相环获得更宽的频率输出范围;同时与整数型单环锁相比实现更低的相位噪声,相比分数型单环锁相具有更好的杂散抑制。所以,双环CPPLL具有快速锁定、低成本、高可靠性和良好的环境适应性等优点[2]。
为了进一步加快在低带宽模式下的CPPLL的锁定,提出了一种可动态调节的双环CPPLL电路,在PLL电路建立过程中,动态调节CPPLL电路的带宽,通过增加CP的输出电流Icp来加快CPPLL的锁定速度,当CPPLL进入锁定状态后,恢到原来设计的Icp值。这样,锁定状态下CPPLL的环路参数和性能指标为原设计值,满足预期的设计要求。
图1 快速锁定双环路CPPLL锁相环原理框图
2 CPPLL系统建模
2.1 Dual Loop PLL系统介绍
锁相环中VCO的增益Kvco决定了PLL的输出频率范围,越大的Kvco可以得到越大的频率输出范围,但同时较大的Kvco会将Charge Pump等前级电路产生的noise以增益Kvco进行同比例放大,影响PLL输出时钟的质量。为了获得比较大的输出频率范围,同时获得好的时钟输出质量和锁定速度,PLL采了Dual Loop结构来解决上述问题。Dual Loop PLL示意图如图2所示。
图2 Dual Loop PLL示意图
增益较小的VCO同一个二阶滤波器及Charge Pump,PFD等电路组成Fine Loop,VCO增益用Kof表示。增益较大的VCO在Fine Loop的基础上增加了一个一阶RC滤波器组成Coarse Loop,VCO增益用Koc表示,用来获取较大的输出频率范围。
相比传统的CPPLL系统,Dual Loop PLL的系统分析要复杂些,要先分别分析Fine Loop与Coarse Loop,然后将结果合成起来。一般情况下,电荷泵锁相环是用离散的系统来进行精确地描述,但离散系统比较复杂不易进行计算,当环路带宽不大于输入参考时钟频率的1/10时,离散系统可以用线性时不变系统进行近似,以便进行模型参数的计算。
Icp代表Charge Pump的电流,图2中PFD+CP的传输函数Hpd(s)为Fine Loop VCO的传输函数Hvco_f(s)为 ,Coarse Loop VCO的传输函数Hvco_c(s)为,粗调环路滤波器和细调环路滤波器传输函数分别为 Hlf_c和 Hlf_f,如式(1)和(2)所示。
Hf是Fine Loop从PFD到VCO输出端的传输函数,Hc是Coarse Loop从PFD到VCO输出端的传输函数,分别如式(3)和(4)所示。
Hf与Hc相加则得到了整个PLL环路的前馈传输函数传输函数Ht,如式(5)所示。
则该双环路PLLFine Loop开环传输函数Gf、Coarse Loop开环传输函数Gc以及整个PLL的开环传输函数Gt分别为:
Fine Loop 有一个极点ωr和一个零点ωz,ωz<<ωr,并且在原点处有两个极点。Coarse Loop在原点处有两个极点,并在ω3和ωr处各有一个极点。Fine Loop与Coarse Loop的交点处的频率为了PLL的环路带宽表现Fine Loop的特性,ωe应该小于ωz。图3所示为Gf、Gc以及Gt的幅频曲线。
图3 双环路PLL开环增益幅频曲线
2.2 环路参数确定
PLL的环路带宽选择取决于PLL的用途,当PLL用作频率合成器时,要考虑PLL的高通特性,选取一个较大的带宽滤掉VCO产生的低频噪声,而当PLL用作滤波功能时,考虑PLL的低通特性,要选取一个较小的带宽滤掉输入时钟的噪声。PLL有高带宽与低带宽两种模式,分别对应上述两种功能。需要注意的是为了确保环路稳定性,环路带宽需小于等于输入频率的1/10[3]。
根据设计要求,VCO的输出频率范围为400M到1G,而SMIC40nm工艺,核心电源电压为1.1V,采用的Charge Pump仿真可得到控制电压输出范围为0.49 V-0.85V,考虑一定的裕度,将Koc的典型值取为2G/V,Kof的典型值取为0.5G/V,其中Kof决定Dual Loop PLL的环路带宽。确定了Kof后,综合考虑版图面积及系统需求确定C2的大小。设计者利用matlab对环路系统进行了建模和分析,目标为环路带宽为0.5M-6M,相位裕度为60度以上,阻尼系数为0.707-1左右,最后确定参数Icp=12uA,R2=2.45K(电阻网络的根值),此时系统相位裕度均可达到60度以上,从而保证了系统的稳定性,最后系统波特图为图4。为了缓解电荷泵造成的电压跳动,设计者引入电容Cr,另为保证系统环路性能,设计者需满足ωe<ωz<ωc<ωr、1.5ωn<ωc<2.5ωn,且环路带宽要小于等于输入频率的1/10。
图4 M=64时的波特图分析
3 电路设计
3.1 CPPLL基本电路设计
(1)PFD 设计
鉴频检相器采用三态鉴相器的结构[4],由带复位信号的两个D触发器实现,具体结构如图5所示,图中的delay buffer是用来增加输出脉冲的宽度,以消除电荷泵因up、dn脉冲宽度不够而无法打开所形成的死区。
图5 PFD电路结构图
(2)可编程环路设计
PLL的可编程环路设计是通过环路滤波器电阻R2与Charge Pump电流Icp电路参数的变化实现的,R2与Icp可随着M值的不同而进行改变。这样环路带宽变化从而实现环路的高/低带宽设计,同时保证阻尼系数、相位裕度跟着调整,确保了PLL环路稳定性。环路可编程结构如图6所示。
图6 可编程环路示意框图
(3)电荷泵(Charge Pump)
PLL电路中,电荷泵的性能常受到一些非理想特性(如非理想电流源带来的电流失配、寄生电容引入的电荷注入和电荷分享误差以及MOS开关有限的开启速度)的影响而导致PLL环路产生静态相位误差以及输出时钟抖动。电荷泵电路采用电流转向结构(如图7所示),以解决电荷泵电荷分享与注入、电流匹配的问题和提高开关开启速度[5]。
图7 电荷泵单元核心CP_cell的结构图
该设计的电荷泵采用可编程结构,电荷泵由四个基本的CP_cell单元组成,CP_cell单元的充放电由 up1-4、down1-4 信号控制,up1-4、down1-4 信号是鉴相器中寄存器四组控制位的输出(Program Icp),一共有15种不同的配置,输出电流为四个单元输出的总和。
(4)压控振荡器电路
该设计中的压控振荡器采用Dual Loop环形振荡器结构,其延迟单元结构如图8所示,电路本质上是两个Delay Cell的并联,PM0与PM1分别是两个Delay Cell的偏置电流源,电流比例1:4,分别对应Fine Loop与Coarse Loop。这样它们的增益Kvoc_f与Kvoc_c比就是1:4,Kvoc_c大,可加快锁定速度和增大频率输出范围,Kvoc_f小,这样保证了环路带宽,且降低了PLL输出时钟的相位噪声。
图8 延迟单元结构电路图
3.2 快速锁定电路设计
通过前文的系统建模可知PLL环路的带宽参数主要由Fine Loop决定,而Fine Loop是一个三阶环路,但由于Cr远远小于C2,所以可以用二阶模型来对环路的固有频率和阻尼系数进行估值[6]:
此外,可以用阻尼系数与固有频率的乘积近似环路单位增益带宽:
闭环传递函数经过拉氏变换,可以得到频率阶跃响应时域公式[7]:
其中,△f为起始频差,△为实际输出频率偏离标称工作频率的误差容忍值。从式(11)可看出PLL环路锁定时间与环路单位增益带宽成反比,环路带宽越大环路锁定时间越短;而环路带宽又与电荷泵电流Icp、电阻R2成正比,与反馈分频系数M成反比。
由于FPGA中的PLL已有锁定检测电路,设计者可直接用这个模块来作为环路加速锁定的控制电路,通过控制电荷泵电路开启的数目来增大PLL锁定过程中电荷泵输出电流来加快环路锁定速度。Param_Icp为可编程电荷泵电流值Icp的设置参数,Param_R2可编程电阻值R2的设置参数,Param_Icp、Param_R2随M值变化而变化;CP_UP_DN(即up1-4、down1-4) 为实际送到 CP的控制输入,CP_CTRL模块根据Arb_Icp模块输出信号Arb_out的高、低以及Param_Icp来确定CP实际所输入的控制信号。当LOCKED信号有效时(即LOCKED=1),Arb_Icp输出高电平,CP_UP_DN为Param_Icp设定的输出,这样PLL的性能指标就为所设计的值;当LOCKED信号无效(即LOCKED=0)且PLL为低带宽模式(BW_LH=0)时,Arb_Icp输出低电平,控制CP_UP_DN输出信号,增大CP电路的输出电流Icp,使参数与同等高带宽条件下的值近似相等,使电路在既获得较大的环路带宽的情况下又不至于因输出电流过大导致环路的不稳定,从而降低环路锁定所需的时间。具体的加速电路结构如图9所示。
图9 PLL加速锁定电路结构框图
这样,PLL在低带宽模式下未锁定时电荷泵输出电流增加,锁定后输出电流减小并恢复到环路的原设计值,即不影响PLL电路锁定状态下电路的带宽、稳定性等性能,又实现了PLL的快速锁定。
3.3 仿真验证结果
PLL快速锁定电路采用SMIC40nm CMOS工艺搭建,并使用spectre进行仿真验证。M=32,低带宽模式下仿真得到环路锁定阶段电荷泵输出电流为48.3μA,锁定后电荷泵输出电流为12.3μA。图10为快速锁定PLL电路与普通PLL锁定时间的仿真结果对比结果图,增加了快速锁定补偿电路的锁相环与传统电荷泵锁相环相比,其建立时间和锁定时间减少了近一半。
4 相位噪声分析
图11所示为设计所述双环路PLL的相位噪声模型[8-9]。在环路中相应节点添加了相关的噪声源PN_ref、PN_pcl_f、PN_pcl_c、PN_vco 和 PN_div;其中PN_ref表示输入参考时钟的等效噪声源,PN_pcl_f和PN_pcl_c分别表示为从PFD到A点和B点的等效噪声源,PN_vco表示VCO的等效噪声源,PN_div表示分频模块的等效噪声源。每个等效噪声源的传输到该双环路PLL输出端的噪声传递函数如下:
图10 PLL锁定时间的仿真结果
图11 相位噪声建模图
若计 Sref(s)、Spcl_f(s)、Spcl_c(s)、Svco(s)、Sdiv(s)分别表示 PN_ref、PN_pcl_f、PN_pcl_c、PN_vco 以及PN_div的等效噪声功率谱密度,则各噪声源等效到输出端的噪声 Sref_out(s)、Spcl_f_out(s)、Spcl_c_out(s)、Svco_out(s)、Sdiv_out(s)分别为:
图12为M=1环路带宽双环路PLL的输出相噪曲线。
图12 双环路PLL输出相噪曲线
5 测试结果
5.1 PLL jitter测试
由于该CPPLL电路包含于JYX3-FPGA芯片,所以测试是基于JYX3-FPGA而进行的,jitter的测试结果是PLL、输出通路以及IO端口电路jitter值的总和。测试时PLL的输入频率为450MHz,反馈分频器的分频比等于1,低带宽模式。
测试结果如表1所示,得到PLL的随机抖动(random jitter)在13ps左右,jitter值的高斯分布图如如13所示。
表1 PLL jitter测试结果
5.2 锁定时间的测试
PLL锁定时间是指PLL复位信号开始至PLL锁定之间的时间间隔,通过输入以一周期较大的时钟作为复位信号(RST),RST信号与锁定输出信号LOCKED上升沿之间的延时就为锁定时间。测试结果如表2所示,从测试结果可看出,相同测试条件下快速锁定CPPLL的锁定时间比初始的PLL锁定时间要短很多。
图13 PLL jitter测试结果
表2 CPPLL锁定时间的测试结果
6 结束语
介绍了一种快速锁定双环路CPPLL的设计,并用到了JYX3-FPGA中,实现了FPGA芯片关于时钟管理的需要,并满足了设计要求,包括频率输出范围、相位噪声、锁定时间等。