第三章 鉴相器(PD)详解:乘法器鉴相器、数字鉴相器(PFD)、鉴相器的死区问题与解决方案
各位同学,大家好。今天我们聊聊鉴相器。
鉴相器,说白了就是锁相环的“眼睛”。它负责比较输入信号和本地振荡器的相位差,然后输出一个误差信号。这个误差信号经过环路滤波,再去控制VCO,最终让两个信号同步。
我做了这么多年射频,见过不少锁相环“锁不住”的情况。十有八九,问题都出在鉴相器上。所以这一章,咱们把它彻底讲透。
3.1 乘法器鉴相器:最朴素的模拟方案
乘法器鉴相器,也叫模拟鉴相器。它的原理很简单:把两个信号相乘,然后低通滤波。
假设输入信号是:
V_in = A * sin(ωt + θ_in)
本地振荡器信号是:
V_lo = B * cos(ωt + θ_lo)
相乘之后,利用积化和差公式:
V_out = (A*B/2) * [sin(θ_in - θ_lo) + sin(2ωt + θ_in + θ_lo)]
看到没?前面一项是直流分量,后面一项是二倍频分量。低通滤波器把二倍频滤掉,剩下的就是:
V_pd = (A*B/2) * sin(Δθ)
其中 Δθ = θ_in - θ_lo,就是相位差。
关键点:当相位差很小时,sin(Δθ) ≈ Δθ。所以鉴相器输出近似线性。但一旦相位差超过 ±π/2,输出就开始非线性了。这就是它的局限性。
我在项目中用过一次乘法器鉴相器,是在一个老式的模拟锁相环里。说实话,性能一般。主要问题是:
- 对幅度敏感:输出和输入信号的幅度A、B成正比。信号幅度不稳,鉴相增益就飘。
- 谐波干扰:二倍频分量需要滤波器处理,但滤波器会引入额外相移。
- 锁定范围窄:只能在 ±π/2 范围内线性工作。
所以现在主流方案,基本都转向数字鉴相器了。
3.2 数字鉴相器(PFD):现代锁相环的标配
数字鉴相器,准确说应该叫“鉴频鉴相器”(Phase Frequency Detector,PFD)。它不仅能鉴相,还能鉴频。这一点非常实用。
为什么?因为锁相环刚开始工作时,频率可能差得很远。如果只有鉴相功能,环路根本拉不回来。PFD能先检测频率差,把频率拉到接近,再切换到相位锁定。
典型的PFD结构是三个D触发器和一些逻辑门。它的状态机有三个状态:UP、DOWN、IDLE。
工作原理我简单说一下:
- 参考信号上升沿到来时,UP输出高电平。
- 反馈信号上升沿到来时,DOWN输出高电平。
- 如果UP和DOWN同时为高,复位到IDLE状态。
输出波形是这样的:
参考信号: __|‾‾‾|__|‾‾‾|__|‾‾‾|__
反馈信号: ____|‾‾‾|____|‾‾‾|____
UP输出: __|‾‾‾|________________
DOWN输出: ________|‾‾‾|__________
UP和DOWN的脉冲宽度之差,就代表了相位差。
个人经验:我建议在设计PFD时,注意复位路径的延迟。如果复位路径太长,会导致UP和DOWN同时为高的时间过长,产生不必要的噪声。我曾经在一个项目中,就因为复位路径多了一个缓冲器,导致锁相环的带内噪声恶化了3dB。
3.3 鉴相器的死区问题
死区,是鉴相器最头疼的问题之一。什么叫死区?就是当相位差非常小时,鉴相器“看不见”这个误差,输出为零。
为什么会这样?
对于PFD来说,当相位差小于某个阈值时,UP和DOWN脉冲的宽度太窄,逻辑门来不及响应。结果就是:UP和DOWN同时为高,然后立即复位。输出始终为零。
死区的危害很大:
- 相位噪声恶化:环路在锁定点附近“漂移”,VCO的控制电压会抖动。
- 锁定精度下降:输出信号和参考信号之间会有固定的相位偏移。
- 杂散增加:死区会导致周期性误差,在频谱上表现为杂散。
我记得有一次调试一个宽带锁相环,输出频谱在偏离载波100kHz处有一个很大的杂散。查了半天,最后发现是PFD的死区导致的。那段时间真是被折磨得够呛。
3.4 解决方案:如何消除死区
解决死区问题,核心思路就一个:确保PFD在零相位差时,仍然有足够的脉冲宽度。
常用的方法有几种:
3.4.1 增加复位延迟
在复位路径上故意加一个延迟单元。这样即使UP和DOWN同时为高,也不会立即复位。它们会保持一小段时间,然后再复位。
这个延迟时间要足够长,确保逻辑门能可靠响应。一般取几个门延迟,大约几百皮秒。
// 伪代码示例
always @(posedge ref or posedge fb) begin
if (reset_delayed) begin
up <= 0;
down <= 0;
end else begin
if (ref) up <= 1;
if (fb) down <= 1;
end
end
// 复位延迟
assign reset_delayed = (up & down) | delay_buffer(up & down);
注意:延迟时间不能太长。太长会导致UP和DOWN同时为高的时间过长,增加电荷泵的开关噪声。我一般控制在500ps到1ns之间,具体要看工艺和频率。
3.4.2 使用预充电技术
在PFD的输出端,预先充入一个固定宽度的脉冲。这样即使相位差为零,也有一个基础脉冲输出。这个基础脉冲在电荷泵里会被抵消掉,但能保证PFD始终处于工作状态。
这种方法的好处是:死区完全消除。坏处是:增加了额外的功耗和噪声。
3.4.3 采用差分PFD结构
差分PFD使用两路对称的PFD,一路处理正相位差,一路处理负相位差。两路输出相减,得到最终的误差信号。
这种结构对共模噪声有很好的抑制,而且死区问题也得到缓解。但代价是面积和功耗翻倍。
3.5 实战建议:选型与调试
最后,我给大家一些实战建议:
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 低频锁相环(<10MHz) | 乘法器鉴相器 | 电路简单,功耗低 |
| 中高频锁相环(10MHz-1GHz) | 标准PFD + 复位延迟 | 性能均衡,易于实现 |
| 高频低噪声锁相环(>1GHz) | 差分PFD + 预充电 | 噪声性能最优 |
| 宽带频率合成器 | PFD + 自动死区消除 | 适应不同频率范围 |
调试时,我习惯用频谱仪观察VCO的控制电压。如果控制电压上有周期性的毛刺,十有八九是死区问题。这时候可以调整复位延迟时间,或者检查PFD的输入信号质量。
嗯,这一章就讲到这里。下一章我们聊电荷泵,它是连接鉴相器和环路滤波器的桥梁。电荷泵的设计好坏,直接决定了锁相环的噪声和杂散性能。到时候见。