PLL测试
什么是PLL?
- PLL = Phase-Locked Loop(锁相环)
- 它的作用就是:把低速、稳定的外部时钟,转换成芯片内部需要的高速时钟。
PLL的作用
我们知道,芯片的内部不同的模块,很可能用的不是一个频率的时钟,而外部又不可能输出入多个不同的时钟,这样成本昂贵且设计困难。所以工程师就在芯片内部通过设计分频电路,在芯片内部将时钟转化为不同的频率,从而使芯片工作。具体如下:
外部时钟 (50MHz)│▼[PLL1] ➜ 2GHz (CPU)[PLL2] ➜ 1.5GHz (GPU)[PLL3] ➜ 2.4GHz (DDR)
所以一个外部时钟,可以通过多个PLL,生成芯片里多条高速时钟。
PLL测试要测什么?
- 频率是否正确(比如外部输入100MHz,PLL放大成2GHz)
- 相位抖动(Jitter)是否在范围内(太大导致时序失败)
- 锁相时间(PLL从启动到锁定所需的时间)
- 环路稳定性(PLL不会乱跳或发散)
也就是说:
PLL测试 = 确认芯片时钟的「速度、稳定、精度」都在线, 一旦PLL挂了,整个芯片的高速逻辑就全瘫痪。
PLL应该怎么测试?
PLL 的测试目标一般如下:
测试目标 | 备注 |
---|---|
能锁相 | PLL启动后,能正确「锁定」输入频率关系 |
倍频正确 | 输出频率 = 输入频率 × N(倍频系数) |
Jitter小 | 时钟边沿抖动小(影响时序) |
稳定不掉锁 | 长时间运行也不会失锁 |
PLL测试流程如下:
1️⃣ ATE上电 & 配置芯片➜ 开启芯片电源 & 基础时钟2️⃣ 发送测试命令 ➜ 让芯片启动内部PLL3️⃣ 等待锁相➜ 检查 PLL Lock 标志位 (Lock = 1)4️⃣ 测量PLL输出频率➜ ATE机器用「频率计」测量芯片时钟输出口5️⃣ 检查Jitter 和 稳定性➜ 高阶ATE用专用模块测Jitter➜ 看时钟边沿有没有飘动6️⃣ 多次开关PLL➜ 测试「掉锁」情况
注意点:
1、等待锁相时,Lock的状态一般会通过芯片内部的寄存器或者IO输出:
- Lock=1 ➜ 说明PLL「锁住」了,工作正常
- Lock=0 ➜ 说明PLL失锁,说明电路或制程问题
2、采集内部高速时钟时,由于内部时钟太快不好采集,所以会通过分频从IO口再次输出
- 例如:2GHz时钟 ➜ 分频成 100MHz,从IO输出
- ATE用频率计数器或者时钟分析模块来采集这个时钟信号
3、检测频率 & Jitter,Jitter此为一些对时钟参数比较高的芯片会检测,主要检测有无明显抖动
一般来说:
- 频率**±0.1%**以内 ➜ Pass
- Jitter 几十ps以内 ➜ Pass
ATE测量频率的方法:
方法 | 原理 | 特点 |
---|---|---|
计数法 | 在固定时间窗口内数脉冲个数 | 简单快速,适合中低频 |
时间间隔法 | 测量连续2个脉冲的时间间隔 | 精度高,适合高频 |
具体案例如下:
项目 | 说明 |
---|---|
输入分频后时钟 | 100MHz(10ns周期) |
ATE采样窗口 | 1ms |
计数法结果 | 100,000个脉冲 ➜ 频率100MHz |
时间间隔法 | 2个脉冲间隔10ns ➜ 频率100MHz |
PLL调试常见问题及排查方案
常见问题 | 调试动作 |
---|---|
输入不稳 ➜ PLL锁不上 | 换频率源、测Jitter |
电源噪声 ➜ VCO失效 | 用示波器测电源抖动 |
确认是真的失锁还是信号问题 | 看寄存器/IO口Lock位 |
温漂导致的失锁 | 调低/升温 |
参数偏 ➜ PLL锁定失败 | 调试Loop Filter电容电阻 |