ADPLL 高效事件驱动建模

累积式 ADPLL 的混合信号特性使其仿真面临仿真时间过长、多时钟域冲突等挑战。Brandonisio & Kennedy Ch.6 提出一种基于 S-function + 预测方程 的高效事件驱动建模方法,通过仅产生最小数量的必要事件(参考振荡器上升沿 + DCO”显著边沿”),将仿真耗时从数小时压缩至亚秒级。本章还系统阐述了混合信号系统的基本概念、商用仿真器的选型对比以及 SoC 设计流程中 ADPLL 行为模型的定位。


前后关系

前置知识:

外部关联:


原理介绍

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 中,所有信号在以下两类边沿确定后完全可知:

  1. 参考振荡器上升沿(所有边沿)
  2. DCO 显著边沿 — 参考边沿之后第一个 DCO 上升沿

因此,只需仿真这两类事件即可获得完整行为。

时间戳(Time Stamp):事件发生的仿真时刻。相邻时间戳之差即时间步长。


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 改进模型可通过修改预测方程适应这些场景。


关键设计洞察

  1. 预测方程 = ΣΔ 调制器:显著 DCO 边沿的预测方程在结构上与一阶 ΣΔ 调制器完全等价,验证了全书的统一ΣΔ框架

  2. 事件数差异悬殊:改进 DCO 模型将仿真时间从 ~2.5 小时降至 <1 秒(约 倍加速),使架构级设计迭代成为可能

  3. Triggered Subsystem 的巧妙使用:仅振荡器/DCO 调度事件,其他模块通过被触发被动执行,确保最小事件原则

  4. 方程基建模 vs 边沿采样: 在缺少全部边沿信息时(改进 DCO 模型),需用解析方程替代传统的边沿触发采样

  5. 亚稳态仲裁:通过简单的优先级规则(总是参考边沿优先于 DCO 边沿)在仿真中避免不确定性


参考