HTML chapter note

4.2.2 线性锁相环的热噪声性能分析

这页合并教材 4.2.2 的正文、公式和原图截图,并完整保留补充笔记中的推导与问答分析,作为后续发布到个人站点的新 4.2.2 内容。

Chapter 4.2.2 Tracking PLL 热噪声分析 教材 + 补充 HTML 笔记

4.2.2 线性锁相环的热噪声性能分析

说明:这一版用于发布到站点,目标是把教材 4.2.2 的正文、公式和图示,以及补充笔记中的全部问题分析合并为一份新的 4.2.2 内容。
教材图 4.31 和图 4.32 不重绘,直接采用从教材 PDF 裁出的截图。
HTML 发布路径:site/notes/tracking/chapter-4-2-2-linear-pll-thermal-noise/index.html

一、教材正文完整整理

1. 加性噪声对载波相位的影响

因为锁相环要跟踪的物理量是输入信号的相位,所以对其进行噪声分析就是对输出相位的噪声进行分析。假设输入信号中叠加了高斯白噪声,很显然,这里的噪声不会直接叠加在信号的载波相位上。实际上,这些噪声直接反映在信号的幅度上,但噪声的存在会影响载波通过零点的时刻。如果通过检测信号过零点的时刻来测量载波相位,就会影响相位的测量值,从而间接影响载波相位的稳定,这就是加性噪声对载波相位的影响。

补充问题 2(待审核):输入明明是电压,为什么 PLL 说自己在跟踪相位

实际进入接收机 ADC 或模拟前端的量当然是电压波形,而不是一个直接写在接口上的“相位值”。但对一个载波来说,电压波形可以写成

\[ r(t)=A(t)\cos\theta_i(t)+n(t) \]

或者在 GNSS 信号里更完整地写成

\[ r(t)=A\,C(t)D(t)\cos\theta_i(t)+n(t) \]

这里 \(r(t)\) 是看得见、采得到的电压;\(\theta_i(t)\) 是藏在这个电压波形里的载波相位状态。相位不是另一个独立输入端口,而是决定“这个正弦波在时间轴上平移到哪里”的参数。频率则是相位的变化率:

\[ \omega_i(t)=\frac{d\theta_i(t)}{dt} \]

所以说 PLL 跟踪相位,并不是说输入端直接送来了 \(\theta_i(t)\),而是说 PLL 从电压波形中估计出 \(\theta_i(t)\) 和本地相位 \(\theta_l(t)\) 的差。

基本做法是:本地 NCO 产生两路正交载波

\[ \cos\theta_l(t),\qquad \sin\theta_l(t) \]

输入电压分别与这两路本地载波相乘、低通或积分后,得到 I/Q 分量。忽略高频项后,可以近似写成

\[ I\approx A\cos\left[\theta_i(t)-\theta_l(t)\right]+n_I \]

\[ Q\approx A\sin\left[\theta_i(t)-\theta_l(t)\right]+n_Q \]

于是电压波形里的相位差就变成了 I/Q 平面中的矢量角度:

\[ \hat{\phi}=\operatorname{atan2}(Q,I)\approx\theta_i(t)-\theta_l(t) \]

在小相位误差时,也常用更简单的鉴相器,例如 \(Q/I\)\(\operatorname{sign}(I)Q\)\(IQ\) 型鉴相器。它们本质上都是把“电压波形与本地载波的相对位置”变成一个相位误差信号。环路滤波器再根据这个误差调整 NCO 的频率控制字;NCO 把频率控制量积分成相位,所以最后表现为本地相位 \(\theta_l(t)\) 逐渐贴住输入相位 \(\theta_i(t)\)

也就是说,PLL 的信号转换链路可以概括为:

\[ \text{输入电压波形} \rightarrow \text{本地正交混频/积分} \rightarrow (I,Q) \rightarrow \text{鉴相器} \rightarrow \hat{\theta}(t) \]

这个视角也能解释为什么“幅度噪声”会变成“相位噪声”。加性噪声先叠加在电压幅度上;经过 I/Q 提取后,沿着信号矢量方向的噪声主要表现为幅度扰动,而垂直于信号矢量方向的噪声会改变矢量角度,直接表现为相位扰动。在高信噪比、小误差条件下,这个角度扰动近似为

\[ \delta\theta\approx\frac{n_Q}{A} \]

其中 \(n_Q\) 是正交方向上的噪声分量。这和过零点推导得到的 \(\Delta\theta\approx -n(t)/A\) 是同一个思想:垂直方向的电压扰动除以信号幅度或局部斜率,就变成了等效相位扰动。

图 4.31 加性高斯白噪声对载波相位的影响

图 4.31 中左上部分为一个纯净的正弦波信号 \(A\sin(\omega_0t+\varphi)\),右上部分为一个高斯白噪声,服从 \(N(0,\sigma^2)\) 分布,左下部分为两者叠加以后的混合信号。可以看到,此时正弦波信号上出现很多“毛刺”。右下部分为混合信号在零点附近的局部细节图,中间黑实线为原来的干净正弦波信号,用来做对比。原来的正弦波信号过零点的时刻是确定的,但由于噪声的叠加,混合信号过零点的时刻呈随机变化,不再是一个确定时刻,而是一个“模糊带”,这个模糊带的宽度大小就表示了相位抖动的大小。

对于一定幅度的正弦波信号 \(A\sin(\omega_0t+\varphi)\),如果叠加了高斯白噪声 \(n(t)\sim N(0,\sigma^2)\),则混合信号的数学表达式为

\[ s(t)=A\sin(\omega_0t+\varphi)+n(t) \tag{4.141} \]

如果对 \(s(t)\) 的相位进行测量,理论推导表明,由于加性噪声的叠加而产生的相位抖动方差 \(\sigma_{\theta n}^2\) 可以表示为

\[ \sigma_{\theta n}^2=\frac{1}{2\mathrm{SNR}} \tag{4.142} \]

补充问题 1(待审核):式 (4.142) 的推导

式 (4.142) 本质上是一个小噪声近似下的过零点相位抖动公式。加性噪声本来加在幅度上,但在信号过零点附近,幅度扰动会等效造成过零时刻的相位扰动,也就是信号在过零点处抖动。

设无噪声的正弦信号为 \(s_0(t)=A\sin(\omega_0t+\varphi)\),叠加高斯白噪声后为 \(s(t)=A\sin(\omega_0t+\varphi)+n(t)\),其中白噪声符合零均值高斯分布 \(n(t)\sim N(0,\sigma_n^2)\)

\(\theta=\omega_0t+\varphi\),则信号可以写成 \(s(\theta)=A\sin\theta+n\)。现在考虑某一个理想过零点。理想情况下有 \(A\sin\theta_0=0\),所以根据正弦函数的零点公式有 \(\theta_0=k\pi\)。加噪声以后,实际检测到的过零点不再是 \(\theta_0\),而是偏移了一个小量 \(\Delta\theta\),即 \(\theta=\theta_0+\Delta\theta\)

过零条件为 \(A\sin(\theta_0+\Delta\theta)+n=0\)

因为 \(\Delta\theta\) 很小,所以对正弦函数做一阶泰勒展开:

\[ f(a+h)=f(a)+hf'(a)+\frac{h^2}{2!}f''(a)+\frac{h^3}{3!}f^{(3)}(a)+\cdots \]

于是有

\[ \sin(\theta_0+\Delta\theta)\approx \sin\theta_0+\Delta\theta\cos\theta_0 \]

在过零点处 \(\sin\theta_0=0\),因此

\[ \sin(\theta_0+\Delta\theta)\approx \Delta\theta\cos\theta_0 \]

又因为 \(\theta_0=k\pi\),所以 \(\cos\theta_0=\pm1\)。过零条件变成 \(A\Delta\theta\cos\theta_0+n=0\),因此 \(\Delta\theta=-\frac{n}{A\cos\theta_0}\)。由于 \(\cos\theta_0=\pm1\),所以有 \(\Delta\theta=\pm\frac{n}{A}\)

符号不影响方差,因此相位抖动的方差为

\[ \sigma_{\theta n}^2 =\operatorname{Var}(\Delta\theta) =\operatorname{Var}\left(\frac{n}{A}\right) \]

因为 \(A\) 是确定的幅度,所以 \(\sigma_{\theta n}^2=\frac{\sigma_n^2}{A^2}\)

继续写成信噪比形式。正弦信号 \(A\sin(\omega_0t+\varphi)\) 的平均功率为 \(P_s=\frac{A^2}{2}\),噪声功率为 \(P_n=\sigma_n^2\)

信噪比定义为

\[ \mathrm{SNR}=\frac{P_s}{P_n} =\frac{A^2/2}{\sigma_n^2} =\frac{A^2}{2\sigma_n^2} \]

因此 \(\frac{\sigma_n^2}{A^2}=\frac{1}{2\mathrm{SNR}}\)

可以得到式 (4.142):

\[ \sigma_{\theta n}^2=\frac{1}{2\mathrm{SNR}} \]

这里的关键是小噪声和小相位偏移近似。如果噪声太大,过零点不再只是在理想零点附近轻微移动,而可能出现错误过零点、周跳或鉴相器非线性区问题,这时这个线性近似就不能直接使用。

这里 \(\mathrm{SNR}\) 为混合信号的信噪比,即 \(\mathrm{SNR}=\frac{P_s}{P_n}\)\(P_s\)\(P_n\) 分别是信号和噪声的功率。

2. 考虑加性噪声的线性锁相环框图

图 4.32 所示是考虑了叠加噪声以后的锁相环框图。注意:这里白噪声 \(n(t)\) 加在鉴相器之后,而实际中噪声混加在输入信号里,即鉴相器之前。一般说来,常用的鉴相器是乘法器,输入信号通过鉴相器就是和本地载波信号做相乘运算,所以鉴相器对噪声的影响只是改变了噪声相位,而噪声功率谱和噪声分布都没有改变,所以这个等效是有意义的。这里引入这个等效的目的是使后续的分析更简便。

补充问题 3(待审核):为什么常用的鉴相器是乘法器

乘法器鉴相器的基本原理是把两个信号相乘。数学上,乘积可以由积化和差公式分为高频分量和低频分量;用低通滤波器把高频分量滤掉后,剩下的低频分量只和频率差或相位差有关。

设输入信号为

\[ r(t)=A\sin(\omega_0t+\varphi)+n(t) \]

本地载波为

\[ v(t)=B\cos(\omega_0t+\hat{\varphi}) \]

乘法器混频输出为

\[ u(t)=r(t)v(t) =\left[A\sin(\omega_0t+\varphi)+n(t)\right]B\cos(\omega_0t+\hat{\varphi}) \]

展开可得

\[ u(t)=AB\sin(\omega_0t+\varphi)\cos(\omega_0t+\hat{\varphi}) +Bn(t)\cos(\omega_0t+\hat{\varphi}) \]

先看信号项。利用积化和差公式

\[ \sin x\cos y=\frac{1}{2}\left[\sin(x+y)+\sin(x-y)\right] \]

\[ AB\sin(\omega_0t+\varphi)\cos(\omega_0t+\hat{\varphi}) =\frac{AB}{2}\sin(2\omega_0t+\varphi+\hat{\varphi}) +\frac{AB}{2}\sin(\varphi-\hat{\varphi}) \]

现在前提条件是本地载波频率已经和输入信号频率相同,那么低通滤波器会滤掉 \(2\omega_0\) 附近的高频项,只留下相位差相关项。令相位误差为

\[ \theta_e=\varphi-\hat{\varphi} \]

经过低通滤波器后的鉴相器输出为

\[ u_d(t)=\frac{AB}{2}\sin\theta_e+\eta(t) \]

其中 \(\eta(t)\) 是乘法器和低通滤波后留下来的等效噪声。当锁相环已经接近锁定时,相位误差很小,根据等价无穷小有

\[ \sin\theta_e\approx\theta_e \]

所以输出可以写为

\[ u_d(t)\approx\frac{AB}{2}\theta_e+\eta(t) \]

鉴相器增益为

\[ K_d=\frac{AB}{2} \]

于是

\[ u_d(t)\approx K_d\theta_e+\eta(t) \]

如果把输出噪声 \(\eta(t)\) 等效到输入相位端,就有

\[ \theta_n(t)=\frac{\eta(t)}{K_d} \]

再看噪声项。如果把噪声分解到本地载波的同相和正交方向,可以写成

\[ n(t)=n_c(t)\cos(\omega_0t+\hat{\varphi})-n_s(t)\sin(\omega_0t+\hat{\varphi}) \]

其中 \(n_c(t)\)\(n_s(t)\) 是噪声的两个低频等效分量。那么噪声通过鉴相器中的混频器有

\[ n(t)\cos(\omega_0t+\hat{\varphi}) =n_c(t)\cos^2(\omega_0t+\hat{\varphi}) -n_s(t)\sin(\omega_0t+\hat{\varphi})\cos(\omega_0t+\hat{\varphi}) \]

利用倍角公式

\[ \cos^2x=\frac{1+\cos2x}{2} \]

以及

\[ \sin x\cos x=\frac{1}{2}\sin2x \]

可得

\[ n(t)\cos(\omega_0t+\hat{\varphi}) =\frac{1}{2}n_c(t) +\frac{1}{2}n_c(t)\cos(2\omega_0t+2\hat{\varphi}) -\frac{1}{2}n_s(t)\sin(2\omega_0t+2\hat{\varphi}) \]

再经过低通滤波器,滤掉高频项,只剩下

\[ \operatorname{LPF}\{n(t)\cos(\omega_0t+\hat{\varphi})\} =\frac{1}{2}n_c(t) \]

所以噪声项可写为

\[ \eta(t)=\frac{B}{2}n_c(t) \]

这里的 \(n_c(t)\) 是输入噪声在本地余弦载波方向上的低频投影分量。这个推导说明:乘法器鉴相器把相位差变成低频误差信号,同时也把输入噪声变成鉴相器输出端的等效低频噪声。

图 4.32 考虑了加性噪声的线性锁相环框图

补充问题 4(待审核):图中鉴相器像求和或做减法,为什么又说鉴相器是乘法器

图 4.32 是线性化后的控制框图。在这个图里,鉴相器被抽象成“输入相位 \(\theta_i\) 减去本地相位 \(\theta_l\),得到相位误差 \(\hat{\theta}\)”的求和节点。这个求和节点表达的是数学模型中的相位误差关系:

\[ \hat{\theta}(t)=\theta_i(t)-\theta_l(t) \]

但是在实际 GNSS 接收机中,接收机拿到的不是直接给出的 \(\theta_i(t)\),而是电压波形。因此物理实现上通常要先让本地生成的正交载波与接收信号相乘,再低通或积分,得到 I/Q 两路信号,最后由 I/Q 计算相位误差,例如

\[ \theta_e=\arctan\frac{Q}{I} \]

所以“求和/减法”描述的是线性化后的相位误差模型,“乘法器”描述的是实际鉴相器如何从电压信号中提取这个相位误差。

鉴相器类型 核心组成 输出形式 常见场景
乘法器鉴相器 乘法器 + 低通 \(\sin\theta_e\) 模拟锁相环、通信载波同步
异或门鉴相器 XOR + 平均或滤波 与相位差近似成比例的电压 方波锁相
PFD 鉴频鉴相器 边沿比较 + 电荷泵 UP/DOWN 脉冲或电流 数字 PLL、频率合成器
I/Q 鉴相器 正交混频 + 反正切 \(\arctan(Q/I)\) 数字接收机、GNSS 跟踪环

因此,图里的求和节点不是在否定“鉴相器常用乘法器实现”,而是在把乘法器、低通滤波、I/Q 反正切等细节压缩成一个锁定点附近的小信号线性关系。

补充问题 5(待审核):VCO 控制的是频率,为什么框图输出是相位

设环路滤波器输出为控制电压 \(v_o(t)\),压控振荡器的瞬时角频率为

\[ \omega_o(t)=\omega_0+K_vv_o(t) \]

其中 \(K_v\) 是 VCO 的角频率灵敏度,单位通常是 \(\mathrm{rad/s/V}\)。如果只看相对于中心频率 \(\omega_0\) 的频率偏移,则有

\[ \Delta\omega_o(t)=K_vv_o(t) \]

相位和角频率的关系是

\[ \omega_o(t)=\frac{d\theta_o(t)}{dt} \]

所以

\[ \frac{d\theta_o(t)}{dt}=K_vv_o(t) \]

两边积分可得

\[ \theta_o(t)=K_v\int v_o(t)\,dt \]

做拉普拉斯变换时,图 4.32 画的是传递函数模型,而传递函数默认在零初始条件下定义,也就是只描述输入 \(v_o(t)\) 对输出 \(\theta_o(t)\) 的作用。如果不忽略初始相位,则

\[ s\Theta_o(s)-\theta_o(0)=K_vV_o(s) \]

完整结果为

\[ \Theta_o(s)=\frac{K_v}{s}V_o(s)+\frac{\theta_o(0)}{s} \]

忽略初始相位后有

\[ s\Theta_o(s)=K_vV_o(s) \]

因此复频域模型为

\[ \Theta_o(s)=\frac{K_v}{s}V_o(s) \]

这就是框图中 VCO/NCO 常画成 \(K/s\)\(K_v/s\) 的原因。控制电压控制的是 VCO 的频率,频率再积分得到相位。物理上的 VCO 真正输出仍然是一个载波:

\[ x_o(t)=A\cos\left(\omega_0t+\theta_l(t)\right) \]

其中 \(\theta_l(t)\) 才是图 4.32 中反馈给鉴相器的本地相位。如果控制电压增大,VCO 频率会升高,载波相位的累积会变快,所以本地相位会不断增长。换句话说,VCO 的频率偏差经过积分后就得到相位偏差。

现在压控振荡器的输入是相差信号 \(\hat{\theta}(t)\)\(n(t)\)。做类似于 4.2.1 节的分析,可得

\[ \theta_l(s)=\theta_i(s)-\hat{\theta}(s) =\frac{kF(s)}{s}\left[\hat{\theta}(s)+n(s)\right] \]

于是

\[ \hat{\theta}(s) =\frac{s}{s+kF(s)}\theta_i(s) -\frac{kF(s)}{s+kF(s)}n(s) \]

也就是

\[ \hat{\theta}(s)=E(s)\theta_i(s)-H(s)n(s) \tag{4.143} \]

这里 \(n(s)\)\(n(t)\) 的拉氏变换。

3. 输出相位噪声的两部分

式 (4.143) 是个很有用的公式,从中可以得出一个结论:在锁相环输入存在白噪声的情况下,输出相位的相位噪声由两部分组成,一部分是由动态应力引起的系统稳态相差,另一部分是由输入的加性噪声导致的随机相差。

补充问题 6(待审核):如何理解动态应力稳态相差和加性噪声随机相差

“动态应力引起的系统稳态相差”指的是:输入信号本身在变化,而环路跟踪能力有限,由此导致一个确定性的相位滞后。这个误差可以通过终值定理计算。

锁相环要跟踪输入信号的相位 \(\theta_i(t)\)。在 GNSS 接收机中,由于卫星和接收机之间存在相对运动,可能还有相对加速度,相位可能写成

\[ \theta_i(t)=\theta_0+\omega_dt+\frac{1}{2}\dot{\omega}_dt^2 \]

锁相环不是理想系统,其带宽、阶数、响应速度都是有限的,所以不可能完全无误差地跟踪输入相位。于是有

\[ \theta_e(t)=\theta_i(t)-\theta_l(t) \]

误差中有一部分是因为输入相位变化太快,环路跟踪能力有限,因而存在滞后。系统稳态相差是经过一段时间后环路进入稳定跟踪状态时仍然保留的相位误差。最主要的限制来自环路阶数,例如一阶系统跟踪不了二阶输入,就会出现稳态误差。

同时,接收信号中还有噪声 \(n(t)\)。它加在信号幅度上,经过鉴相器后会等效为相位测量误差。可以用一个直观比喻理解:有一个指针在表盘上转,我们要手动调另一个指针去跟踪它,但调节开关并不完美,会导致指针抖动。如果手调速度够快,就能跟上动态变化,但因为随机抖动还是会有小误差。如果手调速度不够快,即使没有随机抖动,也会有一个稳定的“跟不上”的误差;实际系统中又有随机抖动,因此总误差里还要加上噪声造成的随机部分。

式 (4.143) 正好把这两部分拆开:

\[ \hat{\theta}(s)=E(s)\theta_i(s)-H(s)n(s) \]

第一部分 \(E(s)\theta_i(s)\) 表示输入相位 \(\theta_i(s)\) 通过误差传递函数 \(E(s)\) 后,在输出相位误差中留下的确定性部分;第二部分 \(-H(s)n(s)\) 表示噪声 \(n(s)\) 通过闭环噪声传递函数 \(H(s)\) 后,在相位误差中形成的随机分量。

负号只表示误差定义的方向,对随机相差的方差没有影响。真正重要的是:动态应力看 \(E(s)\),热噪声看 \(H(s)\)\(B_n\)

系统稳态相差已经在 4.2.1 节中详细讨论过。由式 (4.140) 可以看出,只要锁相环输入信号中存在相位的高阶动态应力,系统稳态相差总是存在的,即使输入信号是非常干净的正弦波依然会有稳态相差。

补充问题 7(待审核):相位的高阶动态应力是什么

相位的高阶动态应力,本质上是输入相位随时间变化时出现了高阶项。它可以来自相位的一阶导数,也就是频率;也可以来自相位的二阶导数,也就是频率变化率;还可以来自相位的三阶导数,也就是频率变化率的变化率。

如果输入相位为

\[ \theta_i(t)=\Delta\omega t \]

\[ \frac{d\theta_i(t)}{dt}=\Delta\omega \]

这表示输入信号有一个恒定频偏,相位会线性累积。

如果输入相位为

\[ \theta_i(t)=\frac{1}{2}\alpha t^2 \]

\[ \frac{d\theta_i(t)}{dt}=\alpha t \]

这表示输入频率随时间线性变化,也就是频率在漂移。

如果输入相位为

\[ \theta_i(t)=\frac{1}{6}\beta t^3 \]

\[ \frac{d\theta_i(t)}{dt}=\frac{1}{2}\beta t^2 \]

这表示频率变化率不是常数。

从多普勒角度看,载波相位可以写成

\[ \theta_i(t)=2\pi\int_0^t f_D(\tau)\,d\tau \]

其中 \(f_D(t)\) 是多普勒频移。

如果多普勒为常数

\[ f_D(t)=f_{D0} \]

\[ \theta_i(t)=2\pi f_{D0}t \]

也就是相位线性变化。

如果多普勒随时间线性变化

\[ f_D(t)=f_{D0}+\dot{f}_Dt \]

\[ \theta_i(t)=2\pi\left(f_{D0}t+\frac{1}{2}\dot{f}_Dt^2\right) \]

相位中出现了二次项。

如果多普勒的变化率还在变化

\[ f_D(t)=f_{D0}+\dot{f}_Dt+\frac{1}{2}\ddot{f}_Dt^2 \]

\[ \theta_i(t)=2\pi\left(f_{D0}t+\frac{1}{2}\dot{f}_Dt^2+\frac{1}{6}\ddot{f}_Dt^3\right) \]

相位中就出现了三次项。

因此,“相位的高阶动态应力”不是一个额外神秘的物理量,而是输入相位中更高阶的时间变化项。环路阶数越低,对这些高阶项的稳态跟踪能力越弱。

补充问题 8(待审核):干净正弦波仍有稳态相差,来源是哪一项

如果输入信号非常干净,没有加性噪声,则式 (4.143) 中的噪声项为零:

\[ n(s)=0 \]

此时相位误差退化为

\[ \hat{\theta}(s)=E(s)\theta_i(s) \]

所以,即使输入信号是非常干净的正弦波,只要输入相位 \(\theta_i(t)\) 含有环路不能完全跟踪的动态项,稳态相差仍然会来自

\[ E(s)\theta_i(s) \]

这就是教材里说“只要锁相环输入信号中存在相位的高阶动态应力,系统稳态相差总是存在”的原因。

随机相差则由噪声引起,式 (4.143) 中的最后一项就是由输入噪声产生的相位误差分量。仔细观察式 (4.143) 中的表达式形式,可以看出随机相差类似于输入噪声 \(n(t)\) 经过一个传递函数为 \(H(s)\) 的线性系统。假设 \(n(t)\) 的单边功率谱密度为 \(N_0\),则该线性系统输出的噪声信号均方值为

\[ \sigma_H^2(s)=\int_0^\infty \left|H(j2\pi f)\right|^2N_0\,df \tag{4.144} \]

4. 随机相差方差和噪声带宽折中

运用式 (4.142) 的结论,当锁相环的输入信号功率为 \(P_i\) 时,随机相差引起的相位抖动方差为

\[ \delta\theta_n^2 =\frac{\sigma_H^2(s)}{2P_i} =\frac{N_0}{2P_i}\int_0^\infty \left|H(j2\pi f)\right|^2\,df \]

结合上式和锁相环等效噪声带宽 \(B_n\) 的定义可得

\[ \delta\theta_n^2=\frac{N_0B_n}{2P_i} \tag{4.145} \]

由以上分析可知,系统稳态相差和误差传递函数 \(E(s)\) 正相关,而加性噪声导致的随机相差和闭环系统传递函数 \(H(s)\) 正相关。于是,减小噪声带宽 \(B_n\) 能减小随机相差,但会增大稳态相差;增大噪声带宽 \(B_n\) 能减小稳态相差,却会使随机相差恶化。随机相差和稳态相差的要求相互矛盾,设计者必须在两者间折中考虑。

补充问题 9(待审核):为什么 PI 调节器输入为 0 时还能保持输出

PI 调节的基本原理是积分器累计过去的误差。即使现在误差变为 0,积分状态仍然保留,所以输出还能保持。

设 PI 调节器输入为误差 \(e(t)\),输出为控制量 \(u(t)\)

\[ u(t)=K_pe(t)+K_i\int_0^t e(\tau)\,d\tau \]

其中 \(K_pe(t)\) 是比例项,只受当前误差影响;\(K_i\int_0^t e(\tau)\,d\tau\) 是积分项,会记住过去误差的累计结果。如果误差现在变为 0,即

\[ e(t)=0 \]

则比例项会立刻变为 0:

\[ K_pe(t)=0 \]

但积分项

\[ K_i\int_0^t e(\tau)\,d\tau \]

包含过去的误差累加,不会因为当前误差为 0 就立刻消失。所以此时有

\[ u(t)=0+\text{过去积累下来的积分量} \]

从另一个角度分析,令积分项为

\[ I(t)=K_i\int_0^t e(\tau)\,d\tau \]

\[ u(t)=K_pe(t)+I(t) \]

对积分项求导有

\[ \frac{dI(t)}{dt}=K_ie(t) \]

这说明当前误差 \(e(t)\) 决定的是积分项的变化速度,而不是积分项的当前值。如果从某个时刻 \(T\) 开始,误差变为 0,即

\[ e(t)=0,\qquad t\ge T \]

那么

\[ \frac{dI(t)}{dt}=K_ie(t)=0,\qquad t\ge T \]

于是积分项不再变化,而不是变为 0:

\[ I(t)=\text{常数},\qquad t\ge T \]

所以当前时刻误差变为 0,只会让积分项停止变化,而不会让积分项立刻变为 0:

\[ I(t)=K_i\int_0^T e(\tau)\,d\tau,\qquad t\ge T \]

连续积分项是

\[ I(t)=K_i\int_0^t e(\tau)\,d\tau \]

在离散系统中,只能每隔 \(T\) 秒采样一次误差:

\[ t_k=kT \]

\(k\) 次的积分项可以写成

\[ I[k]=K_i\int_0^{kT}e(\tau)\,d\tau \]

把积分区间拆成第 \(k-1\) 次以前的积分与第 \(k\) 次新增的部分:

\[ I[k]=K_i\int_0^{(k-1)T}e(\tau)\,d\tau +K_i\int_{(k-1)T}^{kT}e(\tau)\,d\tau \]

也就是

\[ I[k]=I[k-1]+K_i\int_{(k-1)T}^{kT}e(\tau)\,d\tau \]

假设采样足够快,一个采样间隔内的误差近似不变:

\[ e(\tau)\approx e[k] \]

\[ \int_{(k-1)T}^{kT}e(\tau)\,d\tau\approx e[k]T \]

因此

\[ I[k]=I[k-1]+K_iTe[k] \]

其中 \(T\) 就是更新采样误差的周期,可以理解为鉴相器输出误差被送入环路滤波器的更新间隔。故离散 PI 调节器公式为

\[ I[k]=I[k-1]+K_iTe[k] \]

\[ u[k]=K_pe[k]+I[k] \]

其中 \(I[k]\) 是积分项的状态。假设之前有误差为正的时刻:

\[ e[1]>0,\qquad e[2]>0,\qquad e[3]>0 \]

\[ I[1]=I[0]+K_iTe[1] \]

\[ I[2]=I[1]+K_iTe[2] \]

\[ I[3]=I[2]+K_iTe[3] \]

积分项会越来越大。后来系统误差为 0,即

\[ e[4]=0 \]

这时有

\[ I[4]=I[3]+K_iT\cdot0=I[3] \]

积分项不再累加,但没有消失。于是输出为

\[ u[4]=K_p\cdot0+I[4]=I[3] \]

这个式子证明了输入误差为 0 时,输出仍然保持的原因。

实际应用中,第一种实现方式是模拟电路。模拟 PI 调节器常用运算放大器和电容实现,电容两端电压代表积分状态:

\[ i_C=C\frac{dv_C}{dt} \]

如果有电流持续给电容充电,电容电压就会改变;如果输入电流为 0,理想电容上的电压就会保持不变。模拟电路中,积分项本质上是电容上的电压存储了过去误差的累积结果。真实电容会漏电,运放有偏置电流,所以实际中不是无限时间的完美保持,但在环路的工作时间尺度内可以近似保持。

第二种实现方式是数字系统。在数字 PLL、DSP、MATLAB、FPGA 中,积分项就是一个变量或寄存器,例如

I = I + Ki * T * phase_error;

每个采样时刻更新一次:

\[ I[k]=I[k-1]+K_iTe[k] \]

如果当前误差为 0:

\[ I[k]=I[k-1] \]

它就保持之前的值不变。因此在数字实现中,确实可以理解为“把积分状态存在变量或寄存器中”,每次环路更新时再根据新的相位误差做累加。

北斗和 GPS 接收机中的跟踪环在实现形式上要比图 4.32 复杂得多,相应的环路噪声分析也要困难得多,但将其线性化后,其最根本的结构还是基本的锁相环结构。除了上面分析的随机相差和稳态相差对相位的影响外,时钟抖动(Clock Jitter)对跟踪环路的影响也不可忽略,这会导致 GPS 接收机对时钟稳定性要求很高。关于时钟抖动的影响,限于篇幅,这里不详细赘述,有兴趣的读者可以参看参考文献 [9] 的第 5 章和参考文献 [8] 的第 12 章内容。

下面两节将对北斗和 GPS 接收机中的载波跟踪环和伪码跟踪环做详细说明。由于两个环路相互耦合,两个环路的参数会互相影响环路的性能,所以对两个环路同时分析是十分困难的。本书将采用各个击破的方式,在分析载波环时假设伪码相位已经对齐,在分析伪码环时假设载波相位已经被稳定锁定,这样会使分析大大简化,同时和实际中环路锁定时的稳态情况相符。

二、补充问题索引

补充笔记围绕这一节提出并展开了以下问题:

  1. 式 (4.142) 的推导。
  2. 输入明明是电压,为什么 PLL 说自己在跟踪相位。
  3. 为什么常用的鉴相器是乘法器。
  4. 图中鉴相器像求和或做减法,为什么又说鉴相器是乘法器。
  5. VCO 控制的是频率,为什么框图输出是相位。
  6. 如何理解动态应力稳态相差和加性噪声随机相差。
  7. 相位的高阶动态应力是什么。
  8. 干净正弦波仍有稳态相差,来源是哪一项。
  9. 为什么 PI 调节器输入为 0 时还能保持输出。

三、补充分析完整整理

1. 式 (4.142) 的推导

式 (4.142) 本质上是一个小噪声近似下的过零点相位抖动公式。加性噪声本来加在幅度上,但在信号过零点附近,幅度扰动会等效造成过零时刻的相位扰动,也就是信号在过零点处抖动。

设无噪声的正弦信号为 \(s_0(t)=A\sin(\omega_0t+\varphi)\),叠加高斯白噪声后为 \(s(t)=A\sin(\omega_0t+\varphi)+n(t)\),其中白噪声符合零均值高斯分布 \(n(t)\sim N(0,\sigma_n^2)\)

\(\theta=\omega_0t+\varphi\),则信号可以写成 \(s(\theta)=A\sin\theta+n\)。现在考虑某一个理想过零点。理想情况下有 \(A\sin\theta_0=0\),所以根据正弦函数的零点公式有 \(\theta_0=k\pi\)。加噪声以后,实际检测到的过零点不再是 \(\theta_0\),而是偏移了一个小量 \(\Delta\theta\),即 \(\theta=\theta_0+\Delta\theta\)

过零条件为 \(A\sin(\theta_0+\Delta\theta)+n=0\)

因为 \(\Delta\theta\) 很小,所以对正弦函数做一阶泰勒展开:

\[ f(a+h)=f(a)+hf'(a)+\frac{h^2}{2!}f''(a)+\frac{h^3}{3!}f^{(3)}(a)+\cdots \]

于是有

\[ \sin(\theta_0+\Delta\theta)\approx \sin\theta_0+\Delta\theta\cos\theta_0 \]

在过零点处 \(\sin\theta_0=0\),因此

\[ \sin(\theta_0+\Delta\theta)\approx \Delta\theta\cos\theta_0 \]

又因为 \(\theta_0=k\pi\),所以 \(\cos\theta_0=\pm1\)。过零条件变成 \(A\Delta\theta\cos\theta_0+n=0\),因此 \(\Delta\theta=-\frac{n}{A\cos\theta_0}\)。由于 \(\cos\theta_0=\pm1\),所以有 \(\Delta\theta=\pm\frac{n}{A}\)

符号不影响方差,因此相位抖动的方差为

\[ \sigma_{\theta n}^2 =\operatorname{Var}(\Delta\theta) =\operatorname{Var}\left(\frac{n}{A}\right) \]

因为 \(A\) 是确定的幅度,所以 \(\sigma_{\theta n}^2=\frac{\sigma_n^2}{A^2}\)

继续写成信噪比形式。正弦信号 \(A\sin(\omega_0t+\varphi)\) 的平均功率为 \(P_s=\frac{A^2}{2}\),噪声功率为 \(P_n=\sigma_n^2\)

信噪比定义为

\[ \mathrm{SNR}=\frac{P_s}{P_n} =\frac{A^2/2}{\sigma_n^2} =\frac{A^2}{2\sigma_n^2} \]

因此 \(\frac{\sigma_n^2}{A^2}=\frac{1}{2\mathrm{SNR}}\)

可以得到式 (4.142):

\[ \sigma_{\theta n}^2=\frac{1}{2\mathrm{SNR}} \]

这里的关键是小噪声和小相位偏移近似。如果噪声太大,过零点不再只是在理想零点附近轻微移动,而可能出现错误过零点、周跳或鉴相器非线性区问题,这时这个线性近似就不能直接使用。

2. 输入明明是电压,为什么 PLL 说自己在跟踪相位

实际进入接收机 ADC 或模拟前端的量当然是电压波形,而不是一个直接写在接口上的“相位值”。但对一个载波来说,电压波形可以写成

\[ r(t)=A(t)\cos\theta_i(t)+n(t) \]

或者在 GNSS 信号里更完整地写成

\[ r(t)=A\,C(t)D(t)\cos\theta_i(t)+n(t) \]

这里 \(r(t)\) 是看得见、采得到的电压;\(\theta_i(t)\) 是藏在这个电压波形里的载波相位状态。相位不是另一个独立输入端口,而是决定“这个正弦波在时间轴上平移到哪里”的参数。频率则是相位的变化率:

\[ \omega_i(t)=\frac{d\theta_i(t)}{dt} \]

所以说 PLL 跟踪相位,并不是说输入端直接送来了 \(\theta_i(t)\),而是说 PLL 从电压波形中估计出 \(\theta_i(t)\) 和本地相位 \(\theta_l(t)\) 的差。

基本做法是:本地 NCO 产生两路正交载波

\[ \cos\theta_l(t),\qquad \sin\theta_l(t) \]

输入电压分别与这两路本地载波相乘、低通或积分后,得到 I/Q 分量。忽略高频项后,可以近似写成

\[ I\approx A\cos\left[\theta_i(t)-\theta_l(t)\right]+n_I \]

\[ Q\approx A\sin\left[\theta_i(t)-\theta_l(t)\right]+n_Q \]

于是电压波形里的相位差就变成了 I/Q 平面中的矢量角度:

\[ \hat{\phi}=\operatorname{atan2}(Q,I)\approx\theta_i(t)-\theta_l(t) \]

在小相位误差时,也常用更简单的鉴相器,例如 \(Q/I\)\(\operatorname{sign}(I)Q\)\(IQ\) 型鉴相器。它们本质上都是把“电压波形与本地载波的相对位置”变成一个相位误差信号。环路滤波器再根据这个误差调整 NCO 的频率控制字;NCO 把频率控制量积分成相位,所以最后表现为本地相位 \(\theta_l(t)\) 逐渐贴住输入相位 \(\theta_i(t)\)

也就是说,PLL 的信号转换链路可以概括为:

\[ \text{输入电压波形} \rightarrow \text{本地正交混频/积分} \rightarrow (I,Q) \rightarrow \text{鉴相器} \rightarrow \hat{\theta}(t) \]

这个视角也能解释为什么“幅度噪声”会变成“相位噪声”。加性噪声先叠加在电压幅度上;经过 I/Q 提取后,沿着信号矢量方向的噪声主要表现为幅度扰动,而垂直于信号矢量方向的噪声会改变矢量角度,直接表现为相位扰动。在高信噪比、小误差条件下,这个角度扰动近似为

\[ \delta\theta\approx\frac{n_Q}{A} \]

其中 \(n_Q\) 是正交方向上的噪声分量。这和过零点推导得到的 \(\Delta\theta\approx -n(t)/A\) 是同一个思想:垂直方向的电压扰动除以信号幅度或局部斜率,就变成了等效相位扰动。

3. 为什么常用的鉴相器是乘法器

乘法器鉴相器的基本原理是把两个信号相乘。数学上,乘积可以由积化和差公式分为高频分量和低频分量;用低通滤波器把高频分量滤掉后,剩下的低频分量只和频率差或相位差有关。

设输入信号为

\[ r(t)=A\sin(\omega_0t+\varphi)+n(t) \]

本地载波为

\[ v(t)=B\cos(\omega_0t+\hat{\varphi}) \]

乘法器混频输出为

\[ u(t)=r(t)v(t) =\left[A\sin(\omega_0t+\varphi)+n(t)\right]B\cos(\omega_0t+\hat{\varphi}) \]

展开可得

\[ u(t)=AB\sin(\omega_0t+\varphi)\cos(\omega_0t+\hat{\varphi}) +Bn(t)\cos(\omega_0t+\hat{\varphi}) \]

先看信号项。利用积化和差公式

\[ \sin x\cos y=\frac{1}{2}\left[\sin(x+y)+\sin(x-y)\right] \]

\[ AB\sin(\omega_0t+\varphi)\cos(\omega_0t+\hat{\varphi}) =\frac{AB}{2}\sin(2\omega_0t+\varphi+\hat{\varphi}) +\frac{AB}{2}\sin(\varphi-\hat{\varphi}) \]

现在前提条件是本地载波频率已经和输入信号频率相同,那么低通滤波器会滤掉 \(2\omega_0\) 附近的高频项,只留下相位差相关项。令相位误差为

\[ \theta_e=\varphi-\hat{\varphi} \]

经过低通滤波器后的鉴相器输出为

\[ u_d(t)=\frac{AB}{2}\sin\theta_e+\eta(t) \]

其中 \(\eta(t)\) 是乘法器和低通滤波后留下来的等效噪声。当锁相环已经接近锁定时,相位误差很小,根据等价无穷小有

\[ \sin\theta_e\approx\theta_e \]

所以输出可以写为

\[ u_d(t)\approx\frac{AB}{2}\theta_e+\eta(t) \]

鉴相器增益为

\[ K_d=\frac{AB}{2} \]

于是

\[ u_d(t)\approx K_d\theta_e+\eta(t) \]

如果把输出噪声 \(\eta(t)\) 等效到输入相位端,就有

\[ \theta_n(t)=\frac{\eta(t)}{K_d} \]

再看噪声项。如果把噪声分解到本地载波的同相和正交方向,可以写成

\[ n(t)=n_c(t)\cos(\omega_0t+\hat{\varphi})-n_s(t)\sin(\omega_0t+\hat{\varphi}) \]

其中 \(n_c(t)\)\(n_s(t)\) 是噪声的两个低频等效分量。那么噪声通过鉴相器中的混频器有

\[ n(t)\cos(\omega_0t+\hat{\varphi}) =n_c(t)\cos^2(\omega_0t+\hat{\varphi}) -n_s(t)\sin(\omega_0t+\hat{\varphi})\cos(\omega_0t+\hat{\varphi}) \]

利用倍角公式

\[ \cos^2x=\frac{1+\cos2x}{2} \]

以及

\[ \sin x\cos x=\frac{1}{2}\sin2x \]

可得

\[ n(t)\cos(\omega_0t+\hat{\varphi}) =\frac{1}{2}n_c(t) +\frac{1}{2}n_c(t)\cos(2\omega_0t+2\hat{\varphi}) -\frac{1}{2}n_s(t)\sin(2\omega_0t+2\hat{\varphi}) \]

再经过低通滤波器,滤掉高频项,只剩下

\[ \operatorname{LPF}\{n(t)\cos(\omega_0t+\hat{\varphi})\} =\frac{1}{2}n_c(t) \]

所以噪声项可写为

\[ \eta(t)=\frac{B}{2}n_c(t) \]

这里的 \(n_c(t)\) 是输入噪声在本地余弦载波方向上的低频投影分量。这个推导说明:乘法器鉴相器把相位差变成低频误差信号,同时也把输入噪声变成鉴相器输出端的等效低频噪声。

4. 图中鉴相器像求和或做减法,为什么又说鉴相器是乘法器

图 4.32 是线性化后的控制框图。在这个图里,鉴相器被抽象成“输入相位 \(\theta_i\) 减去本地相位 \(\theta_l\),得到相位误差 \(\hat{\theta}\)”的求和节点。这个求和节点表达的是数学模型中的相位误差关系:

\[ \hat{\theta}(t)=\theta_i(t)-\theta_l(t) \]

但是在实际 GNSS 接收机中,接收机拿到的不是直接给出的 \(\theta_i(t)\),而是电压波形。因此物理实现上通常要先让本地生成的正交载波与接收信号相乘,再低通或积分,得到 I/Q 两路信号,最后由 I/Q 计算相位误差,例如

\[ \theta_e=\arctan\frac{Q}{I} \]

所以“求和/减法”描述的是线性化后的相位误差模型,“乘法器”描述的是实际鉴相器如何从电压信号中提取这个相位误差。

鉴相器类型 核心组成 输出形式 常见场景
乘法器鉴相器 乘法器 + 低通 \(\sin\theta_e\) 模拟锁相环、通信载波同步
异或门鉴相器 XOR + 平均或滤波 与相位差近似成比例的电压 方波锁相
PFD 鉴频鉴相器 边沿比较 + 电荷泵 UP/DOWN 脉冲或电流 数字 PLL、频率合成器
I/Q 鉴相器 正交混频 + 反正切 \(\arctan(Q/I)\) 数字接收机、GNSS 跟踪环

因此,图里的求和节点不是在否定“鉴相器常用乘法器实现”,而是在把乘法器、低通滤波、I/Q 反正切等细节压缩成一个锁定点附近的小信号线性关系。

5. VCO 控制的是频率,为什么框图输出是相位

设环路滤波器输出为控制电压 \(v_o(t)\),压控振荡器的瞬时角频率为

\[ \omega_o(t)=\omega_0+K_vv_o(t) \]

其中 \(K_v\) 是 VCO 的角频率灵敏度,单位通常是 \(\mathrm{rad/s/V}\)。如果只看相对于中心频率 \(\omega_0\) 的频率偏移,则有

\[ \Delta\omega_o(t)=K_vv_o(t) \]

相位和角频率的关系是

\[ \omega_o(t)=\frac{d\theta_o(t)}{dt} \]

所以

\[ \frac{d\theta_o(t)}{dt}=K_vv_o(t) \]

两边积分可得

\[ \theta_o(t)=K_v\int v_o(t)\,dt \]

做拉普拉斯变换时,图 4.32 画的是传递函数模型,而传递函数默认在零初始条件下定义,也就是只描述输入 \(v_o(t)\) 对输出 \(\theta_o(t)\) 的作用。如果不忽略初始相位,则

\[ s\Theta_o(s)-\theta_o(0)=K_vV_o(s) \]

完整结果为

\[ \Theta_o(s)=\frac{K_v}{s}V_o(s)+\frac{\theta_o(0)}{s} \]

忽略初始相位后有

\[ s\Theta_o(s)=K_vV_o(s) \]

因此复频域模型为

\[ \Theta_o(s)=\frac{K_v}{s}V_o(s) \]

这就是框图中 VCO/NCO 常画成 \(K/s\)\(K_v/s\) 的原因。控制电压控制的是 VCO 的频率,频率再积分得到相位。物理上的 VCO 真正输出仍然是一个载波:

\[ x_o(t)=A\cos\left(\omega_0t+\theta_l(t)\right) \]

其中 \(\theta_l(t)\) 才是图 4.32 中反馈给鉴相器的本地相位。如果控制电压增大,VCO 频率会升高,载波相位的累积会变快,所以本地相位会不断增长。换句话说,VCO 的频率偏差经过积分后就得到相位偏差。

6. 如何理解动态应力稳态相差和加性噪声随机相差

“动态应力引起的系统稳态相差”指的是:输入信号本身在变化,而环路跟踪能力有限,由此导致一个确定性的相位滞后。这个误差可以通过终值定理计算。

锁相环要跟踪输入信号的相位 \(\theta_i(t)\)。在 GNSS 接收机中,由于卫星和接收机之间存在相对运动,可能还有相对加速度,相位可能写成

\[ \theta_i(t)=\theta_0+\omega_dt+\frac{1}{2}\dot{\omega}_dt^2 \]

锁相环不是理想系统,其带宽、阶数、响应速度都是有限的,所以不可能完全无误差地跟踪输入相位。于是有

\[ \theta_e(t)=\theta_i(t)-\theta_l(t) \]

误差中有一部分是因为输入相位变化太快,环路跟踪能力有限,因而存在滞后。系统稳态相差是经过一段时间后环路进入稳定跟踪状态时仍然保留的相位误差。最主要的限制来自环路阶数,例如一阶系统跟踪不了二阶输入,就会出现稳态误差。

同时,接收信号中还有噪声 \(n(t)\)。它加在信号幅度上,经过鉴相器后会等效为相位测量误差。可以用一个直观比喻理解:有一个指针在表盘上转,我们要手动调另一个指针去跟踪它,但调节开关并不完美,会导致指针抖动。如果手调速度够快,就能跟上动态变化,但因为随机抖动还是会有小误差。如果手调速度不够快,即使没有随机抖动,也会有一个稳定的“跟不上”的误差;实际系统中又有随机抖动,因此总误差里还要加上噪声造成的随机部分。

式 (4.143) 正好把这两部分拆开:

\[ \hat{\theta}(s)=E(s)\theta_i(s)-H(s)n(s) \]

第一部分 \(E(s)\theta_i(s)\) 表示输入相位 \(\theta_i(s)\) 通过误差传递函数 \(E(s)\) 后,在输出相位误差中留下的确定性部分;第二部分 \(-H(s)n(s)\) 表示噪声 \(n(s)\) 通过闭环噪声传递函数 \(H(s)\) 后,在相位误差中形成的随机分量。

负号只表示误差定义的方向,对随机相差的方差没有影响。真正重要的是:动态应力看 \(E(s)\),热噪声看 \(H(s)\)\(B_n\)

7. 相位的高阶动态应力是什么

相位的高阶动态应力,本质上是输入相位随时间变化时出现了高阶项。它可以来自相位的一阶导数,也就是频率;也可以来自相位的二阶导数,也就是频率变化率;还可以来自相位的三阶导数,也就是频率变化率的变化率。

如果输入相位为

\[ \theta_i(t)=\Delta\omega t \]

\[ \frac{d\theta_i(t)}{dt}=\Delta\omega \]

这表示输入信号有一个恒定频偏,相位会线性累积。

如果输入相位为

\[ \theta_i(t)=\frac{1}{2}\alpha t^2 \]

\[ \frac{d\theta_i(t)}{dt}=\alpha t \]

这表示输入频率随时间线性变化,也就是频率在漂移。

如果输入相位为

\[ \theta_i(t)=\frac{1}{6}\beta t^3 \]

\[ \frac{d\theta_i(t)}{dt}=\frac{1}{2}\beta t^2 \]

这表示频率变化率不是常数。

从多普勒角度看,载波相位可以写成

\[ \theta_i(t)=2\pi\int_0^t f_D(\tau)\,d\tau \]

其中 \(f_D(t)\) 是多普勒频移。

如果多普勒为常数

\[ f_D(t)=f_{D0} \]

\[ \theta_i(t)=2\pi f_{D0}t \]

也就是相位线性变化。

如果多普勒随时间线性变化

\[ f_D(t)=f_{D0}+\dot{f}_Dt \]

\[ \theta_i(t)=2\pi\left(f_{D0}t+\frac{1}{2}\dot{f}_Dt^2\right) \]

相位中出现了二次项。

如果多普勒的变化率还在变化

\[ f_D(t)=f_{D0}+\dot{f}_Dt+\frac{1}{2}\ddot{f}_Dt^2 \]

\[ \theta_i(t)=2\pi\left(f_{D0}t+\frac{1}{2}\dot{f}_Dt^2+\frac{1}{6}\ddot{f}_Dt^3\right) \]

相位中就出现了三次项。

因此,“相位的高阶动态应力”不是一个额外神秘的物理量,而是输入相位中更高阶的时间变化项。环路阶数越低,对这些高阶项的稳态跟踪能力越弱。

8. 干净正弦波仍有稳态相差,来源是哪一项

如果输入信号非常干净,没有加性噪声,则式 (4.143) 中的噪声项为零:

\[ n(s)=0 \]

此时相位误差退化为

\[ \hat{\theta}(s)=E(s)\theta_i(s) \]

所以,即使输入信号是非常干净的正弦波,只要输入相位 \(\theta_i(t)\) 含有环路不能完全跟踪的动态项,稳态相差仍然会来自

\[ E(s)\theta_i(s) \]

这就是教材里说“只要锁相环输入信号中存在相位的高阶动态应力,系统稳态相差总是存在”的原因。

9. 为什么 PI 调节器输入为 0 时还能保持输出

PI 调节的基本原理是积分器累计过去的误差。即使现在误差变为 0,积分状态仍然保留,所以输出还能保持。

设 PI 调节器输入为误差 \(e(t)\),输出为控制量 \(u(t)\)

\[ u(t)=K_pe(t)+K_i\int_0^t e(\tau)\,d\tau \]

其中 \(K_pe(t)\) 是比例项,只受当前误差影响;\(K_i\int_0^t e(\tau)\,d\tau\) 是积分项,会记住过去误差的累计结果。如果误差现在变为 0,即

\[ e(t)=0 \]

则比例项会立刻变为 0:

\[ K_pe(t)=0 \]

但积分项

\[ K_i\int_0^t e(\tau)\,d\tau \]

包含过去的误差累加,不会因为当前误差为 0 就立刻消失。所以此时有

\[ u(t)=0+\text{过去积累下来的积分量} \]

从另一个角度分析,令积分项为

\[ I(t)=K_i\int_0^t e(\tau)\,d\tau \]

\[ u(t)=K_pe(t)+I(t) \]

对积分项求导有

\[ \frac{dI(t)}{dt}=K_ie(t) \]

这说明当前误差 \(e(t)\) 决定的是积分项的变化速度,而不是积分项的当前值。如果从某个时刻 \(T\) 开始,误差变为 0,即

\[ e(t)=0,\qquad t\ge T \]

那么

\[ \frac{dI(t)}{dt}=K_ie(t)=0,\qquad t\ge T \]

于是积分项不再变化,而不是变为 0:

\[ I(t)=\text{常数},\qquad t\ge T \]

所以当前时刻误差变为 0,只会让积分项停止变化,而不会让积分项立刻变为 0:

\[ I(t)=K_i\int_0^T e(\tau)\,d\tau,\qquad t\ge T \]

连续积分项是

\[ I(t)=K_i\int_0^t e(\tau)\,d\tau \]

在离散系统中,只能每隔 \(T\) 秒采样一次误差:

\[ t_k=kT \]

\(k\) 次的积分项可以写成

\[ I[k]=K_i\int_0^{kT}e(\tau)\,d\tau \]

把积分区间拆成第 \(k-1\) 次以前的积分与第 \(k\) 次新增的部分:

\[ I[k]=K_i\int_0^{(k-1)T}e(\tau)\,d\tau +K_i\int_{(k-1)T}^{kT}e(\tau)\,d\tau \]

也就是

\[ I[k]=I[k-1]+K_i\int_{(k-1)T}^{kT}e(\tau)\,d\tau \]

假设采样足够快,一个采样间隔内的误差近似不变:

\[ e(\tau)\approx e[k] \]

\[ \int_{(k-1)T}^{kT}e(\tau)\,d\tau\approx e[k]T \]

因此

\[ I[k]=I[k-1]+K_iTe[k] \]

其中 \(T\) 就是更新采样误差的周期,可以理解为鉴相器输出误差被送入环路滤波器的更新间隔。故离散 PI 调节器公式为

\[ I[k]=I[k-1]+K_iTe[k] \]

\[ u[k]=K_pe[k]+I[k] \]

其中 \(I[k]\) 是积分项的状态。假设之前有误差为正的时刻:

\[ e[1]>0,\qquad e[2]>0,\qquad e[3]>0 \]

\[ I[1]=I[0]+K_iTe[1] \]

\[ I[2]=I[1]+K_iTe[2] \]

\[ I[3]=I[2]+K_iTe[3] \]

积分项会越来越大。后来系统误差为 0,即

\[ e[4]=0 \]

这时有

\[ I[4]=I[3]+K_iT\cdot0=I[3] \]

积分项不再累加,但没有消失。于是输出为

\[ u[4]=K_p\cdot0+I[4]=I[3] \]

这个式子证明了输入误差为 0 时,输出仍然保持的原因。

实际应用中,第一种实现方式是模拟电路。模拟 PI 调节器常用运算放大器和电容实现,电容两端电压代表积分状态:

\[ i_C=C\frac{dv_C}{dt} \]

如果有电流持续给电容充电,电容电压就会改变;如果输入电流为 0,理想电容上的电压就会保持不变。模拟电路中,积分项本质上是电容上的电压存储了过去误差的累积结果。真实电容会漏电,运放有偏置电流,所以实际中不是无限时间的完美保持,但在环路的工作时间尺度内可以近似保持。

第二种实现方式是数字系统。在数字 PLL、DSP、MATLAB、FPGA 中,积分项就是一个变量或寄存器,例如

I = I + Ki * T * phase_error;

每个采样时刻更新一次:

\[ I[k]=I[k-1]+K_iTe[k] \]

如果当前误差为 0:

\[ I[k]=I[k-1] \]

它就保持之前的值不变。因此在数字实现中,确实可以理解为“把积分状态存在变量或寄存器中”,每次环路更新时再根据新的相位误差做累加。

四、把 4.2.1 和 4.2.2 合起来记

问题 主要函数 带宽变化的影响
动态应力导致的稳态相差 \(E(s)\) 带宽越大,通常越能跟上动态变化
热噪声导致的随机相差 \(H(s)\) / \(B_n\) 带宽越大,通过的热噪声越多
环路参数设计 \(E(s)\)\(H(s)\) 的折中 不能只看动态,也不能只看噪声

这节最重要的不是单独记住一个噪声公式,而是把上一节的两个传递函数重新赋予工程含义:\(E(s)\) 管“还有多少跟不上”,\(H(s)\) 管“放进来多少噪声”。环路带宽越窄,随机相差越小,但动态跟踪能力变弱;环路带宽越宽,动态跟踪能力变强,但随机相差恶化。因此,4.2.2 的核心结论就是:热噪声性能和动态应力性能必须一起折中设计。

五、发布说明

这份内容对应站点中的一篇独立章节笔记:

  1. Markdown 源笔记:chapters/第04章_信号捕获和跟踪/笔记/4.2.2 线性锁相环的热噪声性能分析.md
  2. HTML 发布页:site/notes/tracking/chapter-4-2-2-linear-pll-thermal-noise/index.html
  3. 主题入口:site/notes/tracking/index.html

为了避免后续维护时内容漂移,新的 4.2.2 内容应优先修改 Markdown 源笔记,再重新生成 HTML 发布页。