电荷泵锁相回路

电荷泵锁相回路（Charge-pump phase-locked loop）简称CP-PLL，是一种鉴相器适用于方波输入信号的锁相回路。CP-PLL可以快速的锁定到输入信号的相位，可以达到很低的稳态相位误差。

## 鉴相器（PFD）

<image>

鉴相器（PFD）是由参考信号（Ref）以及受控输出（VCO）信号的下缘所触发。PFD $i(t)$的输出信号只有三个状态：0, $+I_p$,和$-I_p$。

参考信号的下缘会使PFD切换到较高的状态，若PFD已经在$+I_p$就不会变动。

VCO信号的下缘会使PFD切换到较低的状态，若PFD已经在$-I_p$就不会变动。

若二个信号的下缘同时出现，PFD会切换到0。

## CP-PLL的数学模型

第一个二阶CP-PLL的数学模型是由佛洛依德·加德纳在1980年提出的。M. van Paemel在1994年提出了不考虑VCO过载（overload）的非线性模型，N. Kuznetsov等人在2019年优化该模型。也有学者在推导考虑VCO过载的CP-PLL解析解数学模型。

CP-PLL的数学模型可以针对一些参数进行解析的预估，例如hold-in范围（在VCO没有过载的情形下，可能进行锁相的输入信号频率范围），及捕获范围（pull-in range，在CP-PLL任意初始状态下，CP-PLL最终可以锁相的输入信号频率范围）。

### 二阶CP-PLL的连续时间线性模型以及加德纳的猜想

加德纳的分析是以以下的近似为基础：每个参考信号的周期内，PFD非零的时间区间为

$$t_p = |\theta_e|/\omega_{\rm ref},\ \theta_e = \theta_{\rm ref} - \theta_{\rm vco}.$$

CP-PLL的PDF平均输出为

$$i_d = I_p \theta_e/2\pi$$

对应的传递函数为

$$I_d(s) = I_p\theta_e(s)/2\pi$$

若用滤波器传递函数$F(s) = R + \frac{1}{Cs}$以及VCO传递函数$\theta_{\rm vco}(s) = K_{\rm vco}I_d(s)F(s)/s$，可以得到加德纳的二阶CP-PLL线性近似平均模型:

$$\frac{\theta_e(s)}{\theta_{\rm ref}(s)} = \frac{2\pi s}{2\pi s + K_{\rm vco}I_p\left(R + \frac{1}{Cs}\right)}.$$

佛洛依德·加德纳在1980年以上述的理解，提出了猜想：“实际电荷泵锁相回路的暂态响应，预期会和等效传统PLL的暂态响应几乎相同。”（加德纳对CP-PLL的猜想）。

依照加德纳的结果，也类似Egan在type 2 APLL捕获范围的猜想，Amr M. Fahim在其书中猜想：为了要达到无限大的捕获范围，CP-PLL的回路滤波器需要使用主动滤波器（Fahim-Egan在type II CP-PLL捕获范围的猜想）。

### 二阶CP-PLL的连续时间非线性模型

为了简化推导，但不失去通用性，假设VCO和参考信号在其相位为整数时为其下降缘。

令参考信号第一个下降缘的时间为$t = 0$。

PFD状态$i(0)$会依PFD的初始状态$i(0-)$，VCO的初始相位移$\theta_{vco}(0)$，以及参考信号$\theta_{ref}(0)$的值而不同。

若利用电阻和电容制作纯PI（比例积分）的滤波器，其输入电流$i(t)$和输出电压$v_F(t)$的关系为

$$<pre> \begin{align} v_F(t) = v_c(0) + Ri(t) + \frac{1}{C}\int\limits_0^t i(\tau)d\tau \end{align} </pre>$$

其中$R>0$是电阻，$C>0$是电感。

$v_c(t)$是电容器的电压。

控制信号$v_F(t)$会调整VCO频率：

$$<pre> \begin{align} \dot\theta_{vco}(t) = \omega_{vco}(t) = \omega_{vco}^{\text{free}} + K_{vco}v_F(t), \end{align} </pre>$$

其中$\omega_{vco}^{\text{free}}$是VCO的自由运行频率（也就是$v_F(t)\equiv 0$)，$K_{vco}$是VCO增益（灵敏度）、$\theta_{vco}(t)$是VCO相位。

最后，CP-PLL连续时间非线性数学模型如下

$$\begin{align} <pre> \dot v_c(t) = \tfrac{1}{C}i(t), \quad \dot\theta_{vco}(t) = \omega_{vco}^{\text{free}} + K_{vco} ( Ri(t) + v_c(t) ) </pre> \end{align}$$

其中有以下的不连续分段常数非线性

$$<pre> i(t) = i\big(i(t-), \theta_{ref}(t), \theta_{vco}(t)\big) </pre>$$

初始条件为$\big(v_c(0), \theta_{vco}(0)\big)$.

此模型是非线性、非自主式、不连续的开关系统。

### 二阶CP-PLL的离散时间非线性模型

<image>

假设参考信号频率为常数:

$$\theta_{ref}(t) = \omega_{ref}t = \frac{t}{T_{ref}},$$ 其中$T_{ref}$、$\omega_{ref}$和$\theta_{ref}(t)$是参考资料的周期、频率和相位。

令$t_0 = 0$。

这表示$t_0^{\rm middle}$是第一个PFD输出为0的时间（若$i(0)=0$，则$t_0^{\rm middle}=0$）

且$t_1$是VCO或参考信号的第一个下降缘。

其且，可以定义对应的递减数列$\{t_k\}$、$\{t_k^{\rm middle}\}$，其中$k=0,1,2...$。

令$t_k < t_k^{\rm middle}$.

则在$t \in [t_k,t_k^{\rm middle})$时，$\text{sign}(i(t))$是非零的常数（$\pm1$）。

令$\tau_k$为PFD脉波宽度（PFD输出为非零长度的时间区间）乘以PFD输出的正负号：

$\tau_k = (t_k^{\rm middle} - t_k)\text{sign}(i(t))$ for $t \in [t_k,t_k^{\rm middle})$

$\tau_k = 0$ for $t_k=t_k^{\rm middle}$

若VCO的下降缘在参考信号的下降缘之前，则$\tau_k < 0$，反之，可得$\tau_k > 0$。$\tau_k$可以看出二个信号下降缘的先后顺序。在$(t_k^{\rm middle},t_{k+1})$区间内，PFD输出为零，PFD $i(t) \equiv 0$：

$v_F(t) \equiv v_k$ for $t \in [t_k^{\rm middle},t_{k+1})$.

将$(\tau_k,v_k)$变成下式的变数变换$$<pre> p_k = \frac{\tau_k}{T_{\rm ref}}, u_k=T_{\rm ref} ( \omega_{\rm vco}^{\text{free}} + K_{\rm vco}v_k ) - 1, </pre>$$ 可以让参数减至二个：

$$<pre> \alpha = K_{\rm vco}I_pT_{\rm ref}R, \beta = \frac{K_{\rm vco}I_pT_{\rm ref}^2}{2C}. </pre>$$

此处$p_k$是正规化的相位偏移，$u_k+1$是VCO频率 $\omega_{\rm vco}^{\text{free}} + K_{\rm vco}v_k$相对于参考频率$\frac{1}{T_{\rm ref}}$的比例。

最后，不考虑VCO过载的二阶CP-PLL离散时间模型如下

$$<pre> \begin{align} & u_{k+1} = u_k +2\beta p_{k+1},\\ & p_{k+1} = \begin{cases} \frac{-(u_k + \alpha + 1) + \sqrt{(u_k + \alpha + 1)^2 - 4\beta c_k}}{2\beta}, \quad \text{ for } p_k \geq 0, \quad c_k \leq 0, \\ \frac{1}{ u_k + 1} -1 + ( p_k \text{ mod }1), \quad \text{ for } p_k \geq 0, \quad c_k > 0, \\ l_k-1, \quad \text{ for } p_k < 0, \quad l_k \leq 1, \\ \frac{-(u_k + \alpha + 1) + \sqrt{(u_k + \alpha + 1)^2 - 4\beta d_k}}{2\beta}, \quad \text{ for } p_k < 0, \quad l_k > 1, \end{cases} \end{align} </pre>$$

其中

$$\begin{align} <pre> c_k = (1 - ( p_k \text{ mod }1))( u_k +1) - 1, S_{l_k} = -( u_k - \alpha + 1 ) p_k + \beta p_k^2, l_k = \frac{1 - (S_{l_k} \text{ mod }1)}{ u_k + 1}, d_k = (S_{l_k} \text{ mod }1) + u_k. </pre> \end{align}$$

此离散时间模型只在$(u_k=0,p_k=0)$有一个稳态，可以估计hold-in范围和捕获范围。

若VCO过载，也就是$\dot\theta_{\rm vco}(t)$为零。

或者是以下的式子$(p_k>0, u_k<2\beta p_k-1)$或$(p_k<0, u_k<\alpha-1)$,

则需要考虑额外的CP-PLL动态特性。

针对任何参数，只要VCO和参考信号的频率差够大，就会使VCO过载。

在实务上，需避免VCO的过载。

### 高阶CP-PLL的非线性模型

高阶CP-PLL非线性模型推导和超越方程有关，无法求得解析解，需要用近似的方式计算