相位检测器(PD):乘法器PD、异或PD、鉴频鉴相器(PFD)

好了,咱们进入第四章。相位检测器,说白了就是CDR环路的“眼睛”——它负责比较输入数据和本地时钟之间的相位差,甚至频率差。这一章我把三种最常见的PD结构掰开揉碎讲清楚:乘法器PD、异或PD、还有最常用的鉴频鉴相器(PFD)。我个人习惯先在纸上画个对比表,再往下推细节。

⚠ 硬要记住的事:选错PD,轻则抖动超标,重则环路失锁。我曾经在一个10Gbps项目中因为偷懒用了异或PD,结果碰上长连“0”直接崩溃,后来乖乖换回PFD才搞定。

4.1 乘法器PD(模拟乘法器鉴相器)

工作原理其实很简单:把输入信号和本地时钟做乘法。假设信号是 sin(ωt+θ),时钟是 cos(ωt),乘法后得到:

V_out = sin(ωt+θ) · cos(ωt)
     = ½[ sin(2ωt+θ) + sin(θ) ]

后面接个低通滤波器,把高频分量 sin(2ωt+θ) 滤掉,剩下直流项 ½ sin(θ)。输出平均电压和相位差的正弦成正比——这就是正弦鉴相特性。

输出特性:线性范围大概在 ±π/2 以内,超过这个区间,增益就开始非线性收缩。你想想看,如果相位差靠近 ±π,输出几乎为零,环路就会“假锁定”。我在项目中遇到过这种场景:某款光模块用乘法器PD,结果失锁后一直锁在边界,眼图惨不忍睹。

💡 避坑指南:乘法器PD适用于模拟前端,输入信号必须是类正弦波。数字信号呢?需要先通过限幅放大器做整形。但这样做会引入额外抖动,我记得当年我们团队为了省一颗限幅器,直接上乘法器,结果眼图睁开度掉了6%。

4.2 异或PD(XOR鉴相器)

这是数字电路里最简单的PD。两个输入都是方波,经过异或门输出。当两个信号的相位差为0时,输出始终为0;相位差为π时,输出恒为1;相位差为π/2时,输出占空比50%,平均电平正好是中间值。

输出特性:平均电压和相位差呈三角波关系,线性范围正好是 π(180°)。频率相同的情况下,它不会像乘法器PD那样在边缘出现增益坍塌。不过,它没法区分频率差——你把不同频率的信号送进去,输出会乱跳,不产生有效直流。

🔍 实用要点:异或PD要求输入信号占空比50%,且边沿要陡峭。如果数据流里有长连“1”或长连“0”,异或PD的输出就会失效——因为没有边沿翻转,异或门输出不变,相检测就停了。这就是我开头说的那个10Gbps惨案的原因。

所以异或PD只适合时钟恢复(比如时钟数据都已知的场景),不适合真正的随机数据CDR。

4.3 鉴频鉴相器(PFD)

PFD是CDR里最主流的PD,没有之一。它不仅能检测相位差,还能检测频率差——这一点在环路启动和频偏校正时至关重要。

工作原理:经典的PFD有三个状态:UP、DOWN、复位。它用两个D触发器分别检测参考时钟和反馈时钟的上升沿。哪个先来,对应的输出(UP或DOWN)就拉高;等第二个上升沿到来后,两个信号同时复位。说白了就是“先到先得”,再一起清零。

状态转移表:

当前状态参考上升沿反馈上升沿下一状态UPDOWN
复位到来未到UP10
复位未到到来DOWN01
UP忽略到来复位00
DOWN到来忽略复位00
UP/DOWN同时同时复位00

输出特性:相位差在 ±2π 范围内,平均输出与相位差呈线性锯齿波,增益稳定。频率差存在时,UP/DOWN脉冲的占空比会偏向一侧,产生净直流,迫使VCO向正确频率牵引。

⚠ 注意死区问题:PFD在相位差极小时(接近0),UP和DOWN脉冲宽度可能非常窄,如果复位路径延迟不对称,就会产生“死区”——0相位差附近增益为零。我曾经调试一个28nm芯片,PFD死区导致锁定抖动暴增到0.3UI,后来加了延迟匹配单元才压下去。

现代PFD都会在复位路径上插入等延迟的反相器链来消除死区。另外要留意:PFD是边沿触发器件,对输入信号占空比不敏感,非常适合随机数据流——这也是它统治CDR领域的原因。

4.4 三种PD的对比

下面这张SVG图我把三种PD的核心特性画在一起,方便你对照:

相位检测器类型与输出特性对比 输入信号 + 参考时钟 乘法器PD 模拟鉴相 · 正弦特性 异或PD 数字鉴相 · 三角特性 鉴频鉴相器(PFD) 边沿触发 · 锯齿特性 线性范围: ±π/2 正弦曲线, 两端增益萎缩 ❌ 不能鉴频 线性范围: ±π 三角波, 占空比限制 ❌ 不能鉴频 线性范围: ±2π 锯齿波, 增益稳定 ✅ 可以鉴频 线性范围渐增 → 可鉴频 ↗ 选择原则:模拟前端用乘法器,数字半速率用异或PD, 绝大多数CDR首选PFD(兼顾鉴相与鉴频)

4.5 选型速查表

最后给一张对比清单,方便你备案:

参数乘法器PD异或PDPFD
电路类型模拟数字数字
输入波形要求类正弦方波,占空比50%方波,边沿触发
鉴相线性范围±π/2±π±2π
能否鉴频否否是
死区风险无(连续输出)无(连续输出)有(需延迟匹配)
对数据模式敏感是(需要持续跳变)是(需要50%占空比)否(边沿敏感)
常用场景锁相环/混频器时钟恢复(非CDR)CDR主环
💡 实战建议:如果你在做多速率CDR(支持不同线速率),PFD的宽线性范围会让你减少环路参数切换的麻烦。我做过一个6.25~28Gbps的CDR,PFD的增益在±2π内几乎不变,省了一半的校准代码。

嗯,关于PD这部分就聊到这儿。下一环节我们会把PD的输出信号送进环路滤波器,看看它怎么变成控制电压。不过现在,你先把三种PD的差异记在脑子里——每选一种,都问问自己:这个数据流的跃变密度够不够?频率偏移有多大?只要扣住这两个点,就不会选错。