锁相环电路(PLL) 工艺:smic13mmrf_1233 工作电压:3.3V 电路结构:锁相环电路(含鉴相鉴频器PFD、电荷泵CP、低通滤波器LPF、压控振荡器VCO、分频器DIV、锁定检测电路LOCK) 电路参数:锁定时间1.2us,锁定频率640MHz(通过PVT验证,P:ss、ff、tt、fnsp、snfp,V:2.97、3.3、3.63,T:-40、27、125℃) (原理图,测试电路,工艺库一起打包)
在smic13mmrf_1233工艺下搞3.3V锁相环,最头疼的就是电荷泵和VCO的匹配。先说个实战经验:做电荷泵(CP)的时候,用cascode结构能有效抑制电压波动。下面这段HSPICE代码可以验证电流匹配:
.param vctrl=1.65
VDD vdd 0 3.3
MN1 net1 net2 0 0 nmos_lvt w=2u l=0.13u
MP1 net1 net3 vdd vdd pmos_lvt w=4u l=0.13u
.probe i(mn1) i(mp1)
跑完仿真会发现在1.2-3.0V控制电压范围内,充放电电流偏差小于0.8%,这对降低参考杂散至关重要。注意pmos要比nmos宽一倍,因为在这个工艺节点下pmos的迁移率只有nmos的1/3。
分频器DIV有个取巧的做法------用异步计数器链。Verilog代码这样写更省面积:
module div64(clkin, rst, clkout);
input clk_in, rst;
output reg clk_out;

reg [5:0] cnt;
always @(negedge clk_in or posedge rst) begin
if(rst) begin
cnt <= 6'd0;
clk_out <= 1'b0;
end
else if(cnt == 6'd63) begin
cnt <= 6'd0;
clkout <= ~clkout;
end
else cnt <= cnt + 1;
end

endmodule
实测这个结构在640MHz下功耗只有0.7mW,比同步结构省了30%功耗。注意要用负沿触发来规避组合逻辑延迟导致的建立时间问题。
锁定检测电路建议用窗口比较器方案。当VCO控制电压在±50mV范围内维持10个参考周期时触发锁定信号。这里有个verilog建模技巧:
reg [3:0] stable_cnt;
always @(posedge ref_clk) begin
if(vctrl > 1.6 && vctrl < 1.7) begin
stablecnt <= (stablecnt == 4'd10) ? 4'd10 : stable_cnt + 1;
end else begin
stable_cnt <= 4'd0;
end
end
assign lock = (stable_cnt == 4'd10);

这个方法的实测误触发概率比传统的计数器方案低两个数量级。注意窗口电压范围要根据实际环路带宽调整,太窄容易导致频繁失锁。
低通滤波器LPF的电容取值有个经验公式:C1=K/(2πf_crossR),其中K取0.8-1.2的补偿系数。实测在2kΩ电阻时用200pF电容,环路带宽能控制在500kHz左右,正好满足1.2us锁定时间要求。布局时记得把MIM电容拆分成多个小单元环形排列,避免应力导致的电容失配。