Banerjee 鉴频鉴相器理论分析
本文基于 Dean Banerjee PLL Performance Simulation and Design 深度解析 第 3 章提炼。Banerjee 对 PFD 的分析涵盖了线性区特性、Cycle Slip 首次时间计算、连续时间近似及其局限性、离散采样效应以及死区问题。
前后关系
前置知识:
- PLL鉴相器 — 鉴相器基本类型与 s-曲线
- Banerjee PLL基础与系统概述 — Ch.1-2 PLL 基本结构与电荷泵 PLL
本书内部链条:
- 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 输出与相位误差成正比:
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 @ MHz | MTBF @ 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 MHz | 130 nm | dBc/Hz | dB 以下 | |
| 200 MHz | 130 nm | dBc/Hz | ⚠️ 不可忽略 | |
| 500 MHz | 65 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.0PFD 死区缓解技术的仿真验证
| 缓解技术 | 仿真验证方法 | 通过标准 |
|---|---|---|
| 强制最小脉宽(在 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_segCP 失配的统计仿真(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
endmodulePFD/CP 仿真验证清单
| 验证项目 | 仿真方法 | 通过标准 |
|---|---|---|
| 死区宽度 | 扫描 → 增益曲线 | ps(高精度PLL)/ ps(标准PLL) |
| CP 失配 | DC 扫描 测 | 失配 (典型)/ (消费级) |
| 输出阻抗 | DC 扫描 测 变化率 | 在 全摆幅范围 |
| 电荷共享 | 瞬态极细步长 → 观察 切换毛刺 | 毛刺幅度 mV |
| 开关速度 | 瞬态 → UP/DN 上升/下降时间 | |
| 泄漏电流 | DC 分析 → 各角 | nA(高精度)/ nA(标准) |
| PVT 鲁棒性 | 上述 6 项 × 9 组(3 工艺 × 3 温度) | 全部通过温度/电压极限角 |
与现有知识的联系
- PLL鉴相器 — Banerjee 对 PFD 线性区分析和死区讨论是对 Gardner 体系的工程化补充
- PLL锁相捕获过程 — Cycle Slip 分析直接关系捕获过程的理解
- PLL跟踪性能 — PFD 线性范围决定了 PLL 跟踪误差的容忍边界
- Dean Banerjee PLL Performance Simulation and Design 深度解析 — 来源页
关键公式
| 概念 | 公式 | 编号 |
|---|---|---|
| 实用 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.