Banerjee 鉴频鉴相器理论分析

本文基于 Dean Banerjee PLL Performance Simulation and Design 深度解析 第 3 章提炼。Banerjee 对 PFD 的分析涵盖了线性区特性、Cycle Slip 首次时间计算、连续时间近似及其局限性、离散采样效应以及死区问题。


前后关系

前置知识:

本书内部链条:

  • Ch.3(本文)→ Ch.17 (PFD 离散采样效应对锁定时间的影响) → Ch.28 (Cycle Slip 减少技术)
  • → Ch.11-13 (杂散分析中 PFD 非理想性的影响)

原理介绍

PFD 基本结构

PFD 比较 R 计数器和 N 计数器输出的上升沿,产生校正电流。由于电荷泵与 PFD 通常集成在同一芯片上,本书将二者视为一个模块。

φ_r ──→ (+) ──→ [PFD/CP] ──→ Z(s) ──→ [VCO] ──→ F_out
             ↑                              │
             └──────── [÷N] ────────────────┘

为电荷泵增益(mA/(2π rad)),VCO 增益 除以 s 后从频率转换为相位。

PFD 三种状态

PFD 输出端有三种状态:

  • Sourcing(源电流):上升沿来自 R 计数器
  • Sinking(沉电流):上升沿来自 N 计数器
  • Tri-State(高阻):无上升沿

相位误差分析

对于 和 同频不同相的情况,设 :

  • :无相位误差,理论上无输出(实际存在死区消除电路引起的微小校正脉冲)
  • :线性区,PFD 输出与相位误差成正比:
理论上正确的表达式包含 2π 因子(式 3.1),但由于 VCO 增益中也含 2π 因子可抵消,本书采用简化形式。 - **$|\Delta\phi| \geq 2\pi$**:PFD 输出复位后继续。相位误差以 $2\pi$ 为模折叠,当 PLL 无法快速校正时发生 **周期滑步(Cycle Slip)**,延长锁定时间。需注意 PFD **不会输出错误极性的电流**,只是输出不与全相位误差成比例。 ### PFD 极性 默认采用 **正极性**:R 计数器相位领先 N 计数器时输出正校正电流。若 VCO 为负调谐特性或间有反相运放,需要反转 PFD 极性。 ### PFD 时序状态机与 ns 级时序分析 PFD 核心由两个边沿触发的 D 触发器和复位逻辑组成。以下是 PFD 状态转换的详细时序行为。 #### 三态状态机 ``` ┌─────────────────┐ │ 复位 (RESET) │ │ UP=0, DOWN=0 │ └────────┬────────┘ │ ┌──────────┴──────────┐ │ │ 参考上升沿 反馈上升沿 │ │ ▼ ▼ ┌──────────┐ ┌──────────┐ │ 源电流态 │ │ 沉电流态 │ │ UP=1 │ │ UP=0 │ │ DOWN=0 │ │ DOWN=1 │ └────┬─────┘ └────┬─────┘ │ │ └────────┬───────────┘ │ 反馈上升沿/参考上升沿 (两者对齐时触发) │ ▼ ┌──────────┐ │ 复位 │ │ UP=0 │ │ DOWN=0 │ └──────────┘ (经复位延迟后回到复位态) ``` #### 复位路径传播延迟分析 从 UP 和 DOWN 同时为高到两者被复位为低,需经过以下路径:

t_{reset} = t_{AND,prop} + t_{OR,prop} + t_{DFF,clk-to-q} + t_{wire}

**典型延迟组成**(130nm CMOS 工艺): | 延迟元件 | 传播延迟(典型) | 工艺角影响 | |---------|--------------|----------| | 与门(AND2) | $50-150$ ps | $\pm 30\%$ | | 或门(OR2) | $50-150$ ps | $\pm 30\%$ | | DFF 时钟到输出 | $100-300$ ps | $\pm 40\%$ | | 互连线延迟 | $10-50$ ps | $\pm 20\%$ | | **总复位延迟** | **$210-650$ ps** | **$\pm 35\%$(典型)** | #### 时序关键约束 1. **复位脉冲最小宽度**:$t_{reset,min} > t_{prop,PFD} + t_{prop,CP}$,确保 CP 有足够时间响应 2. **死区消除条件**:复位延迟应保证即使 $\Delta\phi = 0$ 时,UP 和 DOWN 也同时为高 $\geq t_{CP,min}$ 3. **电荷泵开关时序**:UP 和 DOWN 的到达 CP 开关的时间差 $< 50$ ps 以避免电流过冲 4. **最高工作频率限制**:$F_{comp,max} < 1 / (2 \cdot t_{reset})$,否则 PFD 无法在下个参考周期前完成复位 #### 电荷泵开关时序不对称的测量与补偿 CP 的源/沉电流在开关瞬间存在导通/关断时间差,造成锁定点静态相位偏移:

\Delta\phi_{switch} = 2\pi \cdot \frac{\Delta t_{on} - \Delta t_{off}}{T_{comp}} \cdot \frac{I_{CP}}{2}

其中 $\Delta t_{on}$ 为源/沉导通时间差,$\Delta t_{off}$ 为关断时间差。 | 开关时序不对称度 | 静态相位偏移 | 参考杂散贡献 | |---------------|-----------|-----------| | $< 10$ ps | $< 0.1°$ | $< -100$ dBc | | $50$ ps | $\sim 0.5°$ | $\sim -85$ dBc | | $200$ ps | $\sim 2°$ | $\sim -70$ dBc | **工程规则**:CP 开关时序不对称应控制在 $< 50$ ps 以下,这要求 PFD/CP 版图设计中 UP 和 DOWN 路径的走线长度差 $< 15$ $\mu$m(延迟差 $< 0.1$ ps/$\mu$m × 15$\mu$m $\approx 1.5$ ps)。 --- ### 频率误差分析与 Cycle Slip 时间计算 当两个信号频率不同时,关键参数是首次周期滑步的时间: **假设条件**:时间周期足够长但 PLL 尚未做显著频率校正;R 计数器频率高于 N 计数器;两计数器初始相位对齐。 在参考周期数中表示的时间平均相位误差:

\Delta\phi = \begin{cases} 1 - f_n/f_r, & f_n < f_r \ f_r/f_n - 1, & f_n > f_r \end{cases}\tag{3.4}

t = \begin{cases} \frac{1}{f_r - f_n} \cdot \frac{f_r}{f_n}, & f_n < f_r \ \frac{1}{f_n - f_r} \cdot \frac{f_r}{f_n}, & f_n > f_r \end{cases}\tag{3.6}

当 $f_n = f_r$ 时结果为无穷大(不会发生周期滑步)。若计算出的时间远小于 PLL 理论上升时间 → 很可能发生周期滑步;若远大于 → PLL 可校正 VCO 频率避免滑步。 ### PFD 占空比特性 当 $f_r/f_n \rightarrow 1$ 时,PFD 占空比趋近 50%。当 $f_r/f_n = 2$ 时占空比为 1/3。测量 PFD 电流时建议 R 输入取高频、N 输入取低频以获得大占空比,理想方法是将 N 计数器去掉并设最大 N 值。 --- ### 连续时间近似(Continuous Time Approximation) 技术上 PFD 输出是脉冲宽度调制信号而非连续电流。**连续时间近似**将其等效为连续电流等于时间平均值,前提条件:**环路带宽不超过比较频率的 1/10**。该近似在多数情况下良好,但忽略了影响杂散/相位噪声/瞬态响应的离散采样效应。 #### 离散采样效应 - **杂散和相位噪声**:当环路带宽较宽时可能出现尖峰效应(Cusping);PFD 在更高比较频率下产生更多校正,噪声与 $10\log(F_{comp})$ 成正比 - **环路稳定性与瞬态响应**:环路带宽超过约 F<sub>comp</sub>/3 时可能导致不稳定乃至失锁 --- ### PFD 死区(Dead Zone) 当相位误差极小、PFD 理论导通时间接近器件门延迟时,PFD 输出出现附加噪声。这段工作区间称为 **死区**。现代 PLL 通常内置死区消除电路,确保电荷泵始终保持一定的导通时间以避免工作在此区域。 ### 死区的定量分析 #### 死区产生的物理机制 当相位误差极小时,PFD 的校正脉冲宽度接近 PFD 逻辑和 CP 开关的门延迟。若 PFD 输出的 UP 信号宽度 $t_{UP}$ 小于 CP 所需的最小导通时间 $t_{CP,min}$,CP 输出端无法建立有效的校正电流,表现为死区。 **最小复位延迟条件**:

t_{reset,min} > t_{prop,PFD} + t_{prop,CP}

其中 $t_{prop,PFD}$ 为 PFD 组合逻辑传播延迟,$t_{prop,CP}$ 为 CP 开关开启延迟。典型值:$t_{reset,min} \approx 1\!-\!5$ ns。 #### 死区宽度的定量计算 死区的角度宽度(以 rad 计)取决于复位延迟与比较频率的关系:

\theta_{dead} = 2\pi \cdot \frac{t_{reset} - \min(t_{UP}, t_{DOWN})}{T_{comp}} \quad [\text{rad}]

当复位延迟 $t_{reset}$ 等于或略大于最差条件下的 CP 最小导通时间时,死区宽度近似为零。**工程安全裕量**:$t_{reset}$ 应留有 $10\!-\!20\%$ 的余量。 #### 死区对带内相位噪声底板的定量影响 死区导致 PLL 在零相位误差附近的环路增益下降,使带内相位噪声底板抬高:

L_{floor}(f) \propto 20\log\left(\frac{f_{comp} \cdot t_{dead}}{2\pi}\right) + C \quad [\text{dBc/Hz}]

其中 $t_{dead}$ 为等效死区时间,$C$ 为与 CP 噪声相关的常数。 **定量估算**: | $t_{dead}$ | $F_{comp}=50$ kHz 时 $L_{floor}$ | $F_{comp}=10$ MHz 时 $L_{floor}$ | |-----------|--------------------------------|---------------------------------| | 0 ns(理想) | 基准噪声 | 基准噪声 | | 0.5 ns | 约恶化 $+1$ dB | 约恶化 $+4$ dB | | 2 ns | 约恶化 $+4$ dB | 约恶化 $+10$ dB | | 5 ns | 约恶化 $+8$ dB | 约恶化 $+20$ dB(严重) | **关键结论**:死区效应在高 $F_{comp}$ 设计中显著放大,这是分数 N PLL(高 $F_{comp}$)对死区消除电路要求更为严格的原因。 #### 死区消除电路的典型实现 ```plaintext 输入 → [PFD] → UP ──→ [延迟单元] ──→ [与门] → CP_UP ↓ ↑ DOWN ──→ [延迟单元] ────────────────┘ → CP_DOWN ``` - **延迟单元**:由偶数个反相器串联组成,提供固定的传输延迟 - **与门**:确保 UP 和 DOWN 信号同时存在一个最小宽度,即使相位误差为零 - **复位延迟扩展**:增加复位路径中的门级数确保 $t_{reset} > t_{CP,min}$ **设计权衡**: - 复位延迟过长 → 电荷泵导通时间增加 → 功耗上升 + 杂散恶化 - 复位延迟过短 → 死区未被完全消除 → 带内相噪恶化 - 最优设计:$t_{reset} = \max(t_{CP,min}) \times 1.2$,即留有 20% 安全裕量 #### 死区对周期的依赖 死区时间 $t_{dead}$ 在给定工艺下基本固定,但其 **等效相位角度** 随 $F_{comp}$ 变化:

\theta_{dead} \propto f_{comp} \cdot t_{dead}

因此: - **低频参考($F_{comp} < 100$ kHz)**:死区影响小($\theta_{dead} \ll 1$ rad),可通过简单的复位延迟消除 - **高频参考($F_{comp} > 10$ MHz)**:死区影响显著,需要精心设计的死区消除电路 - **极高频参考($F_{comp} > 100$ MHz)**:即使栅级延迟也可产生显著死区,需使用特殊技术(如动态预充电 PFD) ### 电荷泵非理想性的定量分析 电荷泵(CP)的非理想性直接影响 PLL 的杂散、相位噪声和锁定精度。Banerjee 在全书多处(Ch.2/Ch.3/Ch.11/Ch.13)涉及 CP 非理想性。以下从工程角度进行系统化定量分析。 #### 上下电流失配(Up/Down Current Mismatch) CP 在源电流 $I_{up}$ 和沉电流 $I_{dn}$ 之间的失配导致锁定点处的静态相位偏移:

\Delta\phi_{offset} = 2\pi \cdot \frac{I_{up} - I_{dn}}{I_{up} + I_{dn}} \cdot \frac{t_{reset}}{T_{comp}} \quad [\text{rad}]

其中 $t_{reset}$ 为复位脉冲宽度。相位偏移导致 PFD 在零误差附近工作点偏移,将 CP 噪声转化为额外的相位噪声。 **失配对参考杂散的定量贡献**:

Spur_{mismatch} = 20\log\left(\frac{\Delta I}{K_\phi} \cdot \frac{Z(f_{comp})}{Z(f_c)} \cdot \frac{t_{reset}}{T_{comp}}\right) \quad [\text{dBc}]

| 失配度 $\Delta I / K_\phi$ | 静态相位偏移 | 参考杂散贡献($F_{comp}=50$kHz, $F_c=2.5$kHz) | 严重程度 | |------------------------|------------|-------------------------------------------|--------| | $< 1\%$ | $< 0.3°$ | $< -100$ dBc | 可忽略 | | $5\%$ | $\sim 1.5°$ | $\sim -85$ dBc | 低 | | $10\%$ | $\sim 3°$ | $\sim -75$ dBc | 关注 | | $20\%$ | $\sim 6°$ | $\sim -65$ dBc | 显著 | | $> 30\%$ | $> 9°$ | $> -55$ dBc | 不可接受 | **失配补偿方法**: 1. **共源共栅(Cascode)CP 拓扑**:通过级联共源共栅管提高输出电阻,降低 $\Delta I$ 对 $V_{out}$ 的依赖性,典型将 $\Delta I/K_\phi$ 控制在 $< 3\%$ 2. **动态电流匹配(Dynamic Current Matching)**:使用运放反馈环路使 $I_{up}$ 跟踪 $I_{dn}$,残差 $< 1\%$ 3. **寄存器修调(Register Trim)**:内置可编程电流阵列,出厂测试时调整 #### 电荷共享(Charge Sharing)效应 当 PFD 从高阻态切换到源/沉态时,CP 内部寄生电容 $C_{par}$ 上的电荷注入输出端导致电压扰动:

\Delta V_{CS} = \frac{C_{par}}{C_{par} + C_L} \cdot (V_{DD} - V_{tune}) \cdot \frac{t_{switch}}{T_{comp}}

其中 $C_L$ 为输出负载电容(主要为 C1),$t_{switch}$ 为开关切换时间。 **电荷共享对杂散的贡献**:

Spur_{CS} = 20\log\left(K_{vco} \cdot \Delta V_{CS} \cdot \frac{Z(f_{comp})}{f_{comp}\cdot N}\right) \quad [\text{dBc}]

**抑制方法**: 1. **Dummy 开关**:添加与主开关匹配的 dummy 开关补偿注入电荷 2. **Bootstrapped 开关**:维持开关管 $V_{GS}$ 恒定,减小电荷注入的电压依赖性 3. **增大 C1**:更大的 $C_L$ 吸收更多的注入电荷(与 $A0$ 设计权衡) #### CP 输出阻抗与环路稳定性 CP 输出阻抗 $R_{out}$ 为有限值,与环路滤波器的输入阻抗 $Z_{LF}(s)$ 形成分压:

V_{tune}(s) = I_{cp}(s) \cdot \frac{Z_{LF}(s) \cdot R_{out}}{Z_{LF}(s) + R_{out}}

当 $R_{out}$ 不足时(典型 $< 10$ M$\Omega$),环路增益降低,等效 $F_c$ 收缩: | $R_{out}$ | 等效 $F_c$ 变化($F_c=2.5$kHz, 二阶滤波器) | 相位裕度变化 | |----------|------------------------------------------|-----------| | $> 100$ M$\Omega$(理想) | 无 | 无 | | $10$ M$\Omega$ | $< -1\%$ | $-0.5°$ | | $1$ M$\Omega$ | $-5\%$ | $-2°$ | | $100$ k$\Omega$ | $-20\%$ | $-8°$ | **工程规则**:CP 输出阻抗应至少 $> 100 \times |Z_{LF}(f_c)|$ 以避免对环路特性的显著影响。 #### CP 各非理想性对整体杂散的叠加模型 各非理想性来源假设不相关,总杂散电平为各分量功率和:

Spur_{total,CP} = 10\log\left(10^{Spur_{mismatch}/10} + 10^{Spur_{CS}/10} + 10^{Spur_{leak}/10} + 10^{Spur_{Rout}/10}\right)

**设计检查清单**: | 检查项 | 验收标准 | 实测方法 | |-------|---------|--------| | $\Delta I/K_\phi$ | $< 5\%$(目标 $< 2\%$) | 锁定态测 CP 输出静态电压漂移 | | $\Delta V_{CS}$ | $< 0.5$ mV($F_{comp}=50$kHz) | 高阻→源/沉切换瞬态测量 | | $R_{out}$ | $> 10$ M$\Omega$ | DC 扫描 $I_{out}$ vs $V_{out}$ 斜率 | | 泄漏电流 $I_{leak}$ | $< 1$ nA | 高阻态输出端电压漂移率 | --- ### PFD 亚稳态(Metastability)对抖动的定量影响 PFD 核心由 D 触发器构成,当参考时钟和反馈时钟的上升沿几乎同时到达(时间差小于 DFF 的建立/保持时间窗口)时,DFF 进入 **亚稳态(Metastability)**——输出电平在逻辑 0 和 1 之间的中间区域徘徊,无法在规定的时钟周期内稳定到确定逻辑状态。 #### 亚稳态产生的物理条件

|t_{ref} - t_{div}| < t_{setup} + t_{hold} \quad \Rightarrow \quad \text{亚稳态窗口}$$

其中 和 为 DFF 的建立时间和保持时间。对于标准 CMOS DFF: ps(取决于工艺)。

亚稳态发生概率:每个参考周期内,亚稳态出现的概率为:

其中 为 PFD 中 DFF 级数。

MTBF 计算

PFD 系统的平均无故障时间:

其中:

  • :允许的亚稳态分辨时间(通常为 )
  • :DFF 的亚稳态分辨时间常数(工艺相关,典型 ps)
  • :亚稳态窗口宽度()
  • 和 分别为时钟和数据频率
工艺节点典型 典型 MTBF @ MHzMTBF @ MHz
130 nm ps ps s(可忽略) s(~1天)
65 nm ps ps s s
28 nm ps ps s s
7 nm ps ps s s

关键结论:先进工艺( nm)中 PFD 亚稳态的 MTBF 极高,实际不构成问题。但在 nm 工艺、 MHz 的分数 N 设计中,MTBF 可能降至 s,需要关注。

亚稳态对输出抖动的定量贡献

亚稳态事件导致 PFD 输出脉冲宽度出现随机扰动:

该时间抖动转换为相位抖动:

对带内相位噪声的贡献:

工艺kHz相比 PFD 噪底
50 MHz130 nm dBc/Hz dB 以下
200 MHz130 nm dBc/Hz⚠️ 不可忽略
500 MHz65 nm dBc/Hz可忽略(先进工艺)

亚稳态缓解技术

技术实现方式效果代价
2-DFF 同步器在 PFD 输出级串联两个 DFF增加一个 延迟
边沿检测优化使用双边沿触发器(DDR)替代单边沿亚稳态窗口减半功耗略增
延迟补偿在参考路径和反馈路径中加入匹配延迟减少同时到达概率增加设计复杂度
Resolving 时间延长增大 (降低 或加长复位路径) 指数改善增加 PFD 死区

工程规则:当 MHz 且工艺 nm 时,应在 PFD 输出级增加 2-DFF 同步器。对于 MHz 的设计,亚稳态通常完全可忽略。


PFD/CP 非理想性仿真建模

Banerjee Ch.3 的 PFD/CP 分析以解析公式为主,未深入讨论电路级仿真建模方法。以下系统化介绍 PFD 死区、CP 失配、电荷共享(Charge Sharing)和泄漏电流的仿真建模方法。

PFD 死区(Dead Zone)的瞬态仿真验证

死区是 PFD 在零相位差附近增益降为零的非线性区域,导致 PLL 在锁定状态下产生附加相位抖动和杂散。

死区提取仿真原理

死区测量的基本方法:在 PFD 两输入端施加可控的微小相位差 ,测量 PFD 输出的平均电流 ,观察 vs 曲线在零附近的死区宽度:

// 死区测量 testbench(Spectre)
 
% 设置 PFD 输入端的可控相位差
Vref (ref 0) vsource type=pulse \
  val0=0 val1=Vdd period=1/Fcomp rise=0.1n fall=0.1n width=Fcomp/2-0.2n
 
Vdiv (div 0) vsource type=pulse \
  val0=0 val1=Vdd period=1/Fcomp rise=0.1n fall=0.1n \
  width=Fcomp/2-0.2n \
  delay=phi_delta/(360*Fcomp)  % 相对延迟产生相位差
 
% 参数扫描:从 -5ns 到 +5ns(对应 -90° ~ +90° @ 50MHz Fcomp)
% 使用 DC 参数扫描
.dc phi_delta start=-5n stop=5n step=0.02n

死区宽度提取脚本

# Python:从 PFD 瞬态仿真数据提取死区宽度
import numpy as np
 
def extract_dead_zone(phi_list, Iavg_list, Fcomp):
    """
    从 PFD 扫描仿真数据提取死区宽度
    
    Parameters:
    - phi_list: 相位差数组 (秒)
    - Iavg_list: 对应的平均输出电流数组 (A)
    - Fcomp: 比较频率 (Hz)
    
    Returns:
    - dead_zone_ns: 死区宽度 (ns)
    - dead_zone_deg: 死区宽度 (度)
    """
    phi_arr = np.array(phi_list)
    Iavg_arr = np.array(Iavg_list)
    
    # 理想 PFD 增益
    Kphi_ideal = np.max(Iavg_arr) / (np.pi)  # Iavg / 单位弧度
    
    # 提取增益曲线
    gain = np.gradient(Iavg_arr, phi_arr)
    
    # 死区定义:增益低于理想增益的 50% 的区域
    gain_ratio = gain / Kphi_ideal
    dead_mask = gain_ratio < 0.5
    
    if np.any(dead_mask):
        dead_start = phi_arr[np.where(dead_mask)[0][0]]
        dead_end = phi_arr[np.where(dead_mask)[0][-1]]
        dead_width = dead_end - dead_start
        
        return dead_width * 1e9, dead_width * 360 * Fcomp
    else:
        return 0.0, 0.0

PFD 死区缓解技术的仿真验证

缓解技术仿真验证方法通过标准
强制最小脉宽(在 PFD 复位路径中加入延迟)瞬态仿真观察复位延迟 → 确认 UP/DN 在零相位差时仍有 脉冲死区宽度 ps
CP 电流叠加(在 CP 输出叠加恒定偏置电流)扫描 → 提取死区后对比未加偏置死区缩减
PFD 架构优化(改进型 DFF 设计)运行多 PVT 角死区扫描 → 确认最坏角死区 ps全角覆盖

CP 失配(Mismatch)仿真

CP 的 UP/DN 电流不匹配导致锁定状态下 PFD 输出端出现净电荷注入,恶化参考杂散和带内相位噪声。

CP 失配提取方法

直接扫描法(最常用):测量 CP 在不同输出电压 下的 UP 和 DN 电流:

// CP 失配扫描仿真
 
% 设置 CP 输出的 DC 电压扫描
Vout (cp_out 0) vsource dc=0 type=dc
 
% UP 电流测量(只使能 UP 开关)
% 让 UP 持续导通(PFD 强制输入),DN 保持关断
.dc Vout start=0 stop=Vdd step=0.05
.save I(M1:drain)  % UP 电流镜输出
.save I(M2:drain)  % DN 电流镜输出

瞬态测量法:在 PLL 锁定瞬态中提取 CP 失配对相位噪声的影响:

# Python:从锁定后瞬态仿真提取 CP 失配影响
 
def analyze_cp_mismatch(t, vtune, vctrl, Fcomp):
    """
    从 Vtune 波形的锁定后纹波提取 CP 失配特征
    """
    # 锁定后窗口(t > lock_time)
    lock_time = t[np.argmin(np.abs(t - 500/Fc))]
    lock_mask = t > lock_time
    vtune_lock = vtune[lock_mask]
    t_lock = t[lock_mask] - lock_time
    
    # 按参考周期分段叠放(周期平均)
    T_comp = 1.0 / Fcomp
    n_periods = int(t_lock[-1] / T_comp)
    
    segments = []
    for i in range(n_periods):
        mask = (t_lock >= i*T_comp) & (t_lock < (i+1)*T_comp)
        if np.any(mask):
            segments.append(vtune_lock[mask])
    
    # 波形叠加:UP 和 DN 导致的 Vtune 跳变
    # CP 失配导致 UP/DN 瞬态不匹配 → Vtune 在每个参考周期有净偏移
    mean_seg = np.mean(segments, axis=0)
    
    # Vtune 在每个参考周期的净偏移量
    if len(mean_seg) > 1:
        delta_v = mean_seg[-1] - mean_seg[0]
        # 失配电流 = delta_v * C_total / T_comp
        I_mismatch = delta_v * C_total / T_comp
        return I_mismatch, mean_seg

CP 失配的统计仿真(Monte Carlo)

; CP 失配 Monte Carlo 仿真
 
% 设置统计参数
mc_runs = 100
mismatch_sigma = 2  % 2% 失配标准差
 
results = list()
for(i 0 mc_runs-1
  % 随机生成失配
  delta_up = gauss(0 mismatch_sigma) / 100
  delta_dn = gauss(0 mismatch_sigma) / 100
  
  % 设置失配参数
  desVar("icp_up" Icp * (1 + delta_up))
  desVar("icp_dn" Icp * (1 + delta_dn))
  
  % 运行瞬态
  tranScript("tran_mc")
  
  % 提取锁定后相位噪声
  pn = pnoiseExtract()
  results = append(results list(delta_up delta_dn pn))
)
 
% 绘制失配 vs 相位噪声的散点图
% 确认失配 < 3% 时相噪增量 < 2 dB

电荷共享(Charge Sharing)仿真

电荷共享是 CP 输出节点在开关切换瞬态过程中,寄生电容上的电荷重新分配导致的电流误差,表现为参考杂散和锁定后的 瞬态毛刺。

电荷共享的瞬态波形观测

// 电荷共享观测仿真
// 设置极细步长($< 1/1000 \cdot F_{comp}$)捕获开关瞬态
 
.tran \
  tstop=10/Fcomp \
  maxstep=1/(1000*Fcomp)  % 极细步长捕获电荷共享
  
% 关注的节点
.save I(cp_out)  % CP 输出电流
.save V(switch_up) V(switch_dn)  % 开关控制信号
.save V(cp_parasitic)  % 关键寄生节点

电荷共享的诊断特征:

  • 在 UP/DN 切换沿出现宽度 ps 的毛刺
  • 毛刺幅度与开关节点上的寄生电容成正比
  • 毛刺在参考频率的相位正好为 180°(对称失真)

Verilog-A 电荷共享模型

// CP 电荷共享效应模型(Verilog-A)
// 在理想 CP 基础上增加寄生电容充放电效应
 
module cp_chargesharing (up, dn, vcp, iout);
  input up, dn;
  input vcp;
  output iout;
  electrical up, dn, vcp, iout;
  
  parameter real Icp = 5e-3;     % CP 充电电流 (A)
  parameter real Cpar = 50e-15;  % 开关节点寄生电容 (F)
  parameter real Rsw = 50;       % 开关导通电阻 (Ω)
  
  real i_charge;
  real v_parasitic;
  
  analog begin
    // 开关逻辑
    if (V(up) > Vdd/2 && V(dn) < Vdd/2)
      i_charge = Icp;  % UP 模式
    else if (V(dn) > Vdd/2 && V(up) < Vdd/2)
      i_charge = -Icp; % DN 模式
    else
      i_charge = 0;    % 高阻或锁定模式
    
    // 电荷共享效应:开关切换时,Cpar 需要充放电
    // 导致输出电流出现瞬态毛刺
    v_parasitic = V(vcp) - i_charge * Rsw;
    i_charge = i_charge - Cpar * ddt(v_parasitic);
    
    I(iout) <+ i_charge;
  end
endmodule

PFD/CP 仿真验证清单

验证项目仿真方法通过标准
死区宽度 扫描 → 增益曲线 ps(高精度PLL)/ ps(标准PLL)
CP 失配DC 扫描 测 失配 (典型)/ (消费级)
输出阻抗DC 扫描 测 变化率 在 全摆幅范围
电荷共享瞬态极细步长 → 观察 切换毛刺毛刺幅度 mV
开关速度瞬态 → UP/DN 上升/下降时间
泄漏电流DC 分析 → 各角 nA(高精度)/ nA(标准)
PVT 鲁棒性上述 6 项 × 9 组(3 工艺 × 3 温度)全部通过温度/电压极限角

与现有知识的联系


关键公式

概念公式编号
实用 PFD 增益(3.2)
首次 Cycle Slip 时间$t = \frac{1}{f_n - f_r
连续时间近似条件—

参考文献

  • Banerjee, D. (2006). PLL Performance, Simulation, and Design (4th ed.), Ch.3.
  • Gardner, F. M. (1980). Charge-Pump Phase-Lock Loops. IEEE Trans. Commun., COM-28, 1849-1858.
  • Best, R. E. (1995). Phase-Locked Loops (3rd ed.). McGraw-Hill.