ADPLL 高效事件驱动建模
累积式 ADPLL 的混合信号特性使其仿真面临仿真时间过长、多时钟域冲突等挑战。Brandonisio & Kennedy Ch.6 提出一种基于 S-function + 预测方程 的高效事件驱动建模方法,通过仅产生最小数量的必要事件(参考振荡器上升沿 + DCO”显著边沿”),将仿真耗时从数小时压缩至亚秒级。本章还系统阐述了混合信号系统的基本概念、商用仿真器的选型对比以及 SoC 设计流程中 ADPLL 行为模型的定位。
前后关系
前置知识:
- ADPLL相位数字化架构 — 累积式 ADPLL 架构与重定时
- TDC架构统一框架与VernierΣΔ方法 — TDC 建模
- 数字PLL传递函数与稳定性 — DPLL z 域分析
外部关联:
- ADPLL相位噪声解析预测 — ADPLL 相噪频域验证
- ADPLL相位数字化架构 — 累积式 ADPLL 中的 accumulator/phase sampler/TDC
- 噪声整形与抖动优势时域分析 — ΣΔ 调制器的时域精度证明
原理介绍
1. 混合信号系统基本概念(补充:§6.2)
在电子系统中,信息以信号形式承载。电路的分类取决于信息与信号的关联方式:
| 类型 | 信号取值 | 时间点 | 示例 |
|---|---|---|---|
| 模拟连续时间 | 连续 | 所有时刻 | RC 滤波器输出 |
| 数字离散时间 | 离散电平 | 离散时刻 | 数字滤波器输出 |
| 混合信号 | 混合 | 混合 | ADPLL |
ADPLL 是典型的混合信号系统:模拟 DCO(连续时间/连续取值)+ 数字滤波器(离散时间/离散取值)+ TDC(模数接口)。
2. 混合信号系统仿真面临的挑战
ADPLL 作为典型的混合信号系统,仿真面临 五大核心挑战:
1.1 固定时刻事件生成
数字电路在可预测的固定时刻产生跳变,但模拟求解器根据信号导数自主决定时间步长。必须强制求解器在数字边沿处插入仿真时刻。
1.2 时间步长变化
模拟求解器在信号导数增大时减小步长。数字信号的陡峭跳变会导致步长过小,产生大量不必要的事件。
1.3 时间量化
固定步长仿真中,时间被量化为步长的整数倍。若步长选择不当,可能丢失多个边沿事件或错误合并事件。
1.4 长仿真时间
PLL 带宽远小于参考频率。锁定过程需仿真数百个参考周期、数十万个 DCO 周期。架构级仿真数天,晶体管级可数月。
1.5 多时钟与亚稳态
ADPLL 含参考振荡器和 DCO 两个时钟域。边沿重叠时产生亚稳态,需模型的优先级仲裁机制。
3. 仿真工具与求解器(补充:§6.3)
3.1 连续时间仿真器 vs 离散事件仿真器
| 特性 | 连续时间仿真器 | 离散事件仿真器 |
|---|---|---|
| 系统描述 | 微分方程组 | 有限差分方程 |
| 求解方式 | 数值积分算法求解 | 显式公式,无需数值方法 |
| 时间步长 | 求解器自主决定(精度驱动) | 事件时间驱动 |
| 适用场景 | 模拟电路(RC、放大器等) | 数字电路(时钟沿触发) |
3.2 商用混合信号仿真器对比
| 仿真器 | 类型 | 混合信号支持 | 支持语言 | 适用性 |
|---|---|---|---|---|
| Matlab/Simulink | 连续或离散 | 有限(同一时刻只能使用一种求解器) | M语言/S-function | 本书选用 |
| Cadence AMS Designer | 单引擎混合 | 完全支持 | Verilog-AMS | 产业级混合信号验证 |
| Cadence Spectre | 连续时间 | 否(纯模拟) | Verilog-A/SpectreHDL | 模拟电路精确仿真 |
| Xilinx ISim / ModelSim | 离散事件 | 否 | Verilog/VHDL | 纯数字仿真 |
选择 Simulink 的理由:S-function 的 ssSetTNext() 提供了精确控制仿真时刻的能力,是实现”事件驱动最小样本”策略的关键机制。
4. 混合信号 SoC 设计流程(补充:§6.4)
ADPLL 行为模型在 SoC 设计流程中的定位:
系统规格 → 架构设计 → 行为建模 → RTL/模拟实现 → 物理设计 → 验证
↑
ADPLL 事件驱动模型
(快速设计空间探索)
- 在设计流程的架构设计阶段,事件驱动 ADPLL 模型可替代数小时的晶体管级仿真
- 支持快速的参数扫描(环路带宽、TDC分辨率、DCO增益等)
- 与 Matlab 解析预测交叉验证后,再进入昂贵的实现阶段
5. 高效模型的核心思想
最小事件原则:累积式 ADPLL 中,所有信号在以下两类边沿确定后完全可知:
- 参考振荡器上升沿(所有边沿)
- DCO 显著边沿 — 参考边沿之后第一个 DCO 上升沿
因此,只需仿真这两类事件即可获得完整行为。
时间戳(Time Stamp):事件发生的仿真时刻。相邻时间戳之差即时间步长。
6. Simulink S-function 架构
S-function 是 Simulink 中自定义 C 代码模型的接口。通过 mex-file 编译后在 Simulink 中使用。
四大核心 mdl 函数:
| 函数 | 功能 | 关键代码 |
|---|---|---|
mdlProcessParameters | 处理参数变化 | — |
mdlGetTimeOfNextVarHit | 调度下次执行时刻(变步长) | ssSetTNext(S, t_next) |
mdlOutputs | 更新输出端口 | ssGetOutputPortRealSignal |
mdlUpdate | 更新离散状态 | ssGetDiscStates |
关键能力:通过 ssSetTNext() 精确控制 S-function 的下次执行时刻,从而替代求解器自动决定时间步长。
7. 高效参考振荡器模型
工作原理:
- 假设占空比 50%,每半个周期调度一次事件
- 每次执行时翻转输出(0↔1)
- 输出 记录当前边沿时刻,供后续模块使用
mdlGetTimeOfNextVarHit 核心代码:
T = 1 / F[0]; // 振荡器周期
ssSetTNext(S, ssGetT(S) + T/2); // 调度半个周期后执行mdlUpdate 核心代码:
if (xD[0] == 0) { xD[0] = 1; } // 输出翻转
else { xD[0] = 0; }
xD[1] = ssGetT(S) + T/2; // 更新边沿时刻输出效率对比:
- 常规正弦波 ≈ 每周期 20-100 个采样点
- 高效模型 ≈ 每周期 2 个事件(上升沿 + 下降沿)
8. 简单高效 DCO 模型
DCO 的瞬时周期由输入控制字决定:
其中 为自由振荡频率, 为 DCO 增益, 为数字输入字。
局限性:该模型产生 DCO 的所有边沿事件,数量远大于最小事件数(仍需仿真大量无用 DCO 周期)。
9. 改进高效 DCO 模型(核心贡献)
改进模型只产生 DCO 显著边沿,极大减少事件数。
9.1 预测方程
第 个显著 DCO 边沿的时刻通过递归方程计算:
其中 是连续两个基准边沿间的完整 DCO 周期数:
9.2 核心洞察
该预测方程(式 6.2-6.6)的框图等效于 一阶 ΣΔ 调制器(如图 6.15 所示),这与 Ch.3 的 Vernier=ΣΔ 证明形成了完美的理论闭环。
9.3 仿真性能对比
| 模型 | 事件数 | 仿真耗时(3ms 仿真) |
|---|---|---|
| 简单高效 DCO(所有边沿) | 极高 | ~2 小时 27 分钟 |
| 改进高效 DCO(仅显著边沿) | 最低 | < 1 秒 |
两模型的 DCO 频率阶跃响应完全一致。
10. 其他模块的建模策略
为保持最小事件原则,其他模块全部采用 Triggered Subsystem + Embedded Matlab Function 实现,不自行调度事件。
10.1 重定时模块(Sampler)
if (clk == 1) && (clkPast == 0) // 上升沿检测
mem = in; // 采样输入
end
clkPast = clk;
out = mem;
10.2 数字滤波器(PI)
传递函数:,其中 ,$$z_p = B
#### 10.3 累加器 每上升沿将 INC 累加至状态寄存器。 #### 10.4 方程基相位采样器(用于改进 DCO) 在改进 DCO 模型中,相位采样器不能依赖全部 DCO 边沿。改为通过 DCO 周期 $$T_{\text{DCO}}$$ 和两次显著边沿间隔计算累计相位: ```matlab N_periods = (tEdgesDCO - tEdgesDCO_past) / TDCO; mem = mem + INC * N_periods; out = mem; ``` #### 10.5 TDC 模型 利用高效振荡器和 DCO 模型输出的 $$t_{\text{EdgeRef}}$$ 和 $$t_{\text{EdgeDCO}}$$ 直接计算: ```matlab res = 1e-12; % 时间分辨率 out = res * floor((tstart - tstop) / res); ``` --- ### 11. 模型复杂度扩展 当 DCO 前接数字 ΣΔ 调制器或附加噪声时,显著边沿的时刻会偏移:t_{\text{eSDM}}[n] = t_{\text{e}}[n] + \Delta t_{\text{SDM}}[n]
\Delta t_{\text{SDM}}[n]$$ 可在已知 ΣΔ 历史输出的情况下解析计算。DCO 改进模型可通过修改预测方程适应这些场景。
关键设计洞察
-
预测方程 = ΣΔ 调制器:显著 DCO 边沿的预测方程在结构上与一阶 ΣΔ 调制器完全等价,验证了全书的统一ΣΔ框架
-
事件数差异悬殊:改进 DCO 模型将仿真时间从 ~2.5 小时降至 <1 秒(约 倍加速),使架构级设计迭代成为可能
-
Triggered Subsystem 的巧妙使用:仅振荡器/DCO 调度事件,其他模块通过被触发被动执行,确保最小事件原则
-
方程基建模 vs 边沿采样: 在缺少全部边沿信息时(改进 DCO 模型),需用解析方程替代传统的边沿触发采样
-
亚稳态仲裁:通过简单的优先级规则(总是参考边沿优先于 DCO 边沿)在仿真中避免不确定性
参考
- Brandonisio Noise-Shaping ADPLLs 深度解析 — 来源页,Ch.6
- ADPLL相位数字化架构 — 累积式 ADPLL 架构
- TDC架构统一框架与VernierΣΔ方法 — TDC 行为模型
- ADPLL相位噪声解析预测 — 仿真结果验证方法
- Perrott, M. “PLL Design Assistant Program.” http://www.cppsim.com