锁相环PLL-1.9Ghz电路 锁相环电路参数: 输出频率1.92GHz,采用LC_VCO 输入参考频率30MHz 分频器是64分频 电荷泵电流100uA 非常适合新手学习

最近在折腾射频电路的时候,突然发现1.9GHz附近的频段真是个神奇的存在——5G、WiFi6、蓝牙都在这个区域蹦迪。今天咱们就手搓一个1.92GHz的锁相环电路,用最直白的语言和代码带新手入门。

先看核心配置:

  • VCO类型:LC结构(电感电容的组合,高频场合的老演员)
  • 参考时钟:30MHz晶振(比我家挂钟准多了)
  • 分频比N=64(小学数学题预警)
  • 电荷泵电流:100μA(别小看这点电流,能量大着呢)

先整点实在的,Verilog分频器代码走起:

module div64(
    input clk_in,
    input rst,
    output reg clk_out
);
reg [5:0] counter;

always @(posedge clk_in or posedge rst) begin
    if(rst) begin
        counter <= 6'd0;
        clk_out <= 1'b0;
    end
    else if(counter == 6'd63) begin  // 0到63共64个周期
        counter <= 6'd0;
        clk_out <= ~clk_out;        // 每次翻转产生分频
    end
    else begin
        counter <= counter + 1;
    end
end
endmodule

这个计数器每计满63次就翻个跟头,最终输出频率=30MHz/64=468.75kHz。别急着关页面,重点在后面——这个频率要和VCO输出分频后的信号做相位比较,就像让两个跑步的人保持步调一致。

锁相环PLL-1.9Ghz电路 锁相环电路参数: 输出频率1.92GHz,采用LC_VCO 输入参考频率30MHz 分频器是64分频 电荷泵电流100uA 非常适合新手学习

说到VCO,LC结构的调频特性可以用这个Python代码模拟:

import numpy as np

def lc_vco(control_voltage):
    L = 10e-9  # 10nH电感
    C_varactor = 0.5/(control_voltage+0.1)  # 变容二极管模型
    return 1/(2*np.pi*np.sqrt(L*C_varactor))

print(f"{lc_vco(0.8)/1e9:.2f} GHz")  # 输出1.92GHz左右

这个简化模型展示了电压如何控制频率。实际电路中,变容二极管的C-V曲线可能更复杂,但原理相通——电压升高→电容减小→振荡频率升高。

电荷泵是PLL的动力核心,100μA的电流设定直接影响锁定速度。举个栗子,当相位差存在时:

// 伪代码表示充放电过程
if(ref_clk_phase > fb_clk_phase){
    charge_pump_current = +100e-6; // 向上泵送
} else {
    charge_pump_current = -100e-6; // 向下抽取
}

这个电流给环路滤波器充电,就像给自行车打气——充太快会爆胎(环路震荡),充太慢追不上(锁定时间过长)。用Python算个合适的RC值:

I_cp = 100e-6
Kvco = 300e6  # VCO增益300MHz/V
N = 64
f_ref = 30e6
omega = 2*np.pi*f_ref/N/10  # 取1/10参考频率为带宽

C = I_cp*Kvco/(N*omega**2)  # 电容计算
R = np.sqrt(2)/(omega*C)     # 电阻计算
print(f"R={R:.1f}Ω, C={C*1e9:.1f}nF")  # 典型值约R=1.2kΩ, C=22nF

这个滤波器就像给系统装了个减震器,既允许快速响应又不至于振荡。新手常见坑点:电容值过小会导致纹波过大,过大又会让响应变慢。

最后给个调试建议:用频谱仪观察VCO输出时,如果看到频率在1.92GHz附近"呼吸"(轻微波动),别慌,这是环路正在收敛的表现。拿个螺丝刀微调下电感间距,当频谱突然"啪"地稳定下来时——恭喜,你的PLL成功锁定了!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐