为什么我的 PLL 仿真在锁定后会振荡?

信息处理 阶段 检测 pll 振荡器
2022-02-11 00:07:13

我正在开发一个粗糙的电路模拟器,目标是实现 PAL 编码和解码,这样我就可以尝试生成看起来像视频传输的图像。

在仿真引擎中,电路由具有输入和输出端口的电路元件组成,这些端口将电压电平表示为双精度。输出端口通过电线连接到其他元件的输入端口。在每个时间步,源(没有输入的元素)将它们的输出值传播到其他元素,一旦它们准备好所有输入,就会对其进行评估,重复直到每个元素都被访问。使用类似于电线但具有一个时间步延迟的特殊反馈元素来处理反馈。

一个简单的闪烁 LED 电路定义如下:

var circuit = new Circuit();
// add a 5V power source
var power = circuit.AddElement(new VoltageSourceDC(5.0));
// add a 1Hz 50% duty cycle square wave oscillator
var clock = circuit.AddElement(new SquareOscillator(1.0, 0.5));
// add an LED
var led = circuit.AddElement(new LED());

// wire the power source output to the clock level input.
circuit.AddWire(new Wire(power.Output, clock.Level));
// wire the clock output to the LED
circuit.AddWire(new Wire(clock.Output, led.Input));

我已经实现了相当多的电路元件,包括正弦振荡器、VCO、比较器、逻辑门、D 触发器、2:1 多路复用器和电荷泵。使用这些元素,我创建了一个 PLL。

PLL 的原理图如下所示:

锁相环原理图

V ref是锁定的参考波形。在这种情况下,它是一个方波。D触发器充当相位检测器,识别哪个上升沿首先出现。如果两个触发器都为高电平,则通过下一个时间步的反馈来断言复位信号。电荷泵仅在 HI 或 LO 被断言时才起作用,而不是两者都被断言。电荷泵只是根据断言的信号来增加或降低其输出电压,否则它会保持稳定。电荷泵的 dV/dt 在创建时进行配置。

电荷泵的输出通过反馈元件馈送到 VCO 的输入。反馈元件可以改为放置在比较器之后的反馈路径中,但这似乎会产生不太稳定的结果。然后将 VCO 的输出与 V cmp(即 V dd /2)进行比较,以将其转换为 V out的方波。

这主要有效:

波形截图

V pump最初会在目标频率之外振荡,但随后会稳定下来并保持 VCO 输出非常紧密地锁定在相位和频率上。这是我期望看到的 - 频率上升以“赶上”参考相位,然后减速以匹配频率。

放大一点,我们可以看到相位误差非常小,UP/DOWN 大多同时被断言:

波形特写

不幸的是,这不会持续很长时间,并且电荷泵电压开始振荡:

电荷泵电压的振荡

在更长的时间内,振荡达到峰值,然后再次锁定,一遍又一遍地重复。改变电荷泵 dV/dt 对此有很大影响。

两倍的 dV/dt

与信号频率相比,时间步长很小,并且在 10us 和 1us 步长之间几乎没有行为变化。

为什么会出现这种情况?我应该怎么做才能修复它?

1个回答

我找到了答案。我在模拟器中构建了相同的电路并观察了它的行为。关键的缺失部分是馈入 VCO 的信号的行为。

电路原理图

我将电荷泵建模为一个浮点值,当设置 UP 时增加,设置 DOWN 时减少,以预定义的速率 (dV/dt),或者当两个或两个信号都没有设置时什么都不做。这与我的原始电路中发生的情况接近,它省略了与电荷泵电容器串联的电阻器。我发现改变输入频率很容易导致 PLL 振荡,这意味着它永远不会锁定。您可以通过关闭旁路开关并将频率从 3.5kHz 更改为 2.0kHz 来亲眼看到这一点——它会永远振荡。

但是,如果您查看右下角的泵电压信号,在旁路开关打开(因此电阻器就位)的情况下,它不会呈现出简单的平滑曲线。相反,它有不连续性。发生这种情况是因为当断言 UP 或 DOWN 时,电阻与 FET 的Rds(on)形成分压器,导致信号中出现短暂的“尖峰”,而不是完全平滑的曲线。

事实证明这很关键。如果进入 VCO 的信号被限制为电荷泵的 dV/dt,则 PLL 会生成一个输出信号,该输出信号以正确的相位接近输入信号,但频率错误。然后它会尝试校正频率,但由于 dV/dt 限制,它只能相对缓慢地进行校正。当频率正确时,相位不正确,并且振荡继续,直到频率和相位碰巧对齐。这就是我之前看到的重复行为的原因。

通过在 UP 和 DOWN 脉冲期间对 VCO 输入施加小的不连续性,一旦相位收敛,VCO 可以更快地校正其输出频率。

在我的模拟中,我将其建模为一对在 UP 或 DOWN 被断言时启用的分压器。结果明显更稳定。

模拟输出