Skip to content

第 19 章 当现实变成离散的

(章节引言)

想象一下,你一直用画笔在纸上连续地画一条线——那是经典的模拟控制,电压的变化是连续的,时间的流逝是连续的,一切都很顺滑。

现在,有人把你的画笔收走了,塞给你一堆像素点。你不能再画线了,你只能用一个个离散的色块去逼近那条线。而且,你不仅是断续地画,还必须在固定的时刻点落下笔触——早一晚一毫秒都不行。

这就是数字控制。这听起来像是某种降级——毕竟我们失去了连续性——但作为工程师,我们都知道这是通往高灵活性和可编程性的唯一门票。但这张门票是有代价的:我们必须重新审视那些在模拟世界里理所当然的事情。

这一章,我们要处理的正是这种「离散化」带来的冲击。我们会看到,当时间和幅度都被切成碎片时,我们熟悉的控制环路会发生什么奇怪的形变。会有混叠、会有量化噪声、会有令人恼火的延迟。如果你觉得直接把模拟 PID 算法抄成代码就能跑通,那你一定会踩坑——而且是那种输出电压莫名其妙抖动、怎么调参数都稳不住的坑。

本章的任务,就是建立一套新的直觉,让我们在离散的世界里,依然能稳住那个该死的电压。


19.1 数字控制环路

好了,让我们先从结构上看起。

一个典型的数字控制开关变换器长这样:乍一看,它和你熟悉的模拟电压模式控制环路(第 9.1 节)没什么两样——有个传感器 H(s) 采集输出电压,有个参考电压 vref,两者相减得到误差信号 ve(t)

但别被这层相似的外表骗了。就在这个误差信号产生之后,世界的规则变了。

19.1.1 A/D 与 DPWM 的量化:分辨率是有限的

【模式 A:SICP 紧绷模式】 这里有一个根本性的差异。 在模拟世界里,电压可以是任意值;但在数字世界里,它只能是有限的几个数。 这就是量化。

在这个环路里,数字信号 ve[n]vc[n] 不再是连续的波形,而是由有限位数表示的数字字。这不仅仅是数学符号的区别——这是硬件现实的限制。

1. 模数转换(A/D):把电压切成台阶

【模式 B:侯捷紧密模式】 A/D 转换器做两件事:一是在时间上采样,二是在幅度上量化。我们来看后者。

一个标准 A/D 转换器的量化特性 QA/D 长这样:输入电压范围从 0 到满量程电压 VFS,每跨过一档就跳一个台阶。假设 A/D 的位数是 nA/D,那么它能分辨的最小电压变化——也就是 1 个 LSB(Least Significant Bit)——是:

qA/D=VFS2nA/D(19.2)

这里举的例子用的是 nA/D=3,这只是为了让你看清台阶(满量程只能切成 8 档),实际应用中通常是 12 位或 14 位。

这里有一个微妙但重要的点:模拟电压 Hv 被量化成数字之后,再去和参考电压 vref 比较(在数字域进行减法),得到数字误差信号 ve[n]。或者,我们可以换一种视角:把量化特性以 0 为中心对称地铺开——只关心误差落在参考值附近哪一档。

无论哪种看法,结论都一样:只要模拟电压落在宽度为 qA/D 的一个「零误差箱」里,输出的数字误差信号 ve[n] 就是 0。

这意味着什么?这意味着 qA/D 直接决定了你的稳压精度。如果你想要的输出电压精度比这个台阶还小,数字环路是根本无能为力的——它会「看」不到这个误差,因为误差被量化吃掉了。

【模式 C:费曼流动模式 - 踩坑故事】 来个实际的例子。假设 H=1,我们要把输出电压稳在 Vref=1 V,精度要求是 ±0.25%,也就是 ±2.5 mV。 那么总的误差带是 5 mV。为了达到这个指标,LSB 分辨率必须满足 qA/D<5 mV

我们套用公式算一下位数。假设典型满量程 VFS=2 V

nA/D>log2(VFSqA/D)(19.3)

算出来的结果是多少?至少需要 9 位。 你说 8 位不行吗?不行,台阶太大,步进就是 7.8 mV,你的电压会在目标值附近来回跳,无法稳定在 ±2.5 mV 的范围内。

这里有个讨巧的办法:如果我们把量化中心对准 0 误差点,只覆盖误差可能出现的范围(而不是 0 到 VFS),就可以用更少的位数达到同样的 qA/D。这就是所谓的「窗口 A/D 转换器」(Window Flash A/D)。这能省不少芯片面积,但设计也更复杂。

2. 数字脉宽调制(DPWM):时间的切片

接下来是 DPWM。这玩意儿和第 7.3 节里讲的模拟 PWM 道理一样,但实现方式换成了数字逻辑。

DPWM 的工作方式是这样的:占空比指令信号 vc[n] 被拿来和一个数字锯齿波(计数器)比较,输出控制信号 c(t) 的占空比 d[n] 正比于 vc[n]

但关键细节来了——那个 c(t) 脉冲的上升沿和下降沿,并不是想跳到哪里就能跳到哪里,它只能在时钟节拍上落脚。这个最小的时间步进,就是 DPWM 的时间分辨率:

qDPWMTs=TclkqDPWM=12nDPWM(19.4)

其中 nDPWM 是 DPWM 的位数,Tclk 是系统时钟周期。这里举的例子依然用 3 位(占空比只能取 8 个离散值),只是为了把台阶看清楚。

【模式 B:侯捷紧密模式】 通常 DPWM 用一个计数器来实现,计数器由时钟频率 fclk 驱动。所以,你的时间分辨率直接受限于时钟周期 Tclk(公式 19.5)。如果你想提高占空比分辨率,就得提高时钟频率。

这个分辨率直接决定了输出电压的定位精度。对于 Buck 变换器,直流输出电压 V=DVg。一旦占空比被量化了,输出电压也只能台阶式地变化:

ΔV=qDPWMVg(19.6)

或者写成百分比形式:

ΔVV=qDPWMVgV=12nDPWM1M(19.7)

这里的 M=V/Vg 是变换器的直流传递函数(对于 Buck 就是 D)。

【模式 C:费曼流动模式 - 警告】 这里有个非常反直觉的坑:如果 M 很小(即 Vg 很高而 V 很低),需要的 DPWM 位数会急剧增加。

举个例子:假设你想把输出电压定位在 0.1% 的精度内,变换器的 M=0.2。 根据公式 19.7,你需要一个 13 位的 DPWM。

听起来还好?那我们来看看时钟频率。 根据公式 19.8,fclk=2nDPWMfs213=8192。 如果你的开关频率 fs=1 MHz,那么你需要 8.192 GHz 的系统时钟频率。

【模式 A:SICP 紧绷模式】 8.192 GHz。 在电源芯片上。 这简直就是疯了。

这揭示了数字 PWM 控制器在高频应用中的一个巨大挑战:为了兼顾高开关频率和高分辨率,时钟频率会高到无法用常规逻辑实现。 这迫使我们去寻找另类的实现方式,比如用抽头延迟线或者 ΔΣ 调制器来伪造高分辨率。我们会在 19.4.2 节再回头解决这个问题。

3. 理想量化假设(暂时忽略非线性)

A/D 和 DPWM 的量化特性本质上是非线性的。这会直接影响环路的稳定性(比如 19.4.2 节要讲的极限环振荡)。

【模式 C:费曼流动模式 - 叙事过渡】 为了先理清基本框架,我们暂时假设我们的系统非常有钱——用的是极高分辨率的 A/D 和 DPWM。高到什么程度?高到我们可以忽略这些台阶,把它们当成线性的。

在这个理想假设下,公式 19.9 成立:

ve[n]ve(nTs)d[n]vc[n](假设 VM=1 V)

这就意味着,在目前的分析阶段,A/D 和 DPWM 这两个模块可以简化成增益为 1 的比例环节。先别急,真实的非线性坑我们后面再填。


19.1.2 采样与环路延迟:时间去哪了?

如果说量化是空间上的离散,那采样和延迟就是时间上的错位。

数字控制变换器在稳态和瞬态下是怎么工作的?这里假设满足公式 19.1:采样频率等于开关频率。

【模式 B:侯捷紧密模式】 先把稳态情形理清楚。理想情况下,数字采样 ve[n] 就是模拟误差信号 ve(t)t=nTs 时刻的快照。 数字环路控制的是什么?它控制的不是那个连续的 ve(t),而是这一连串离散的采样值 ve[n]

如果一个环路设计得当,直流增益很大,那么稳态时,采样值 ve[n] 会被推向 0(公式 19.10)。这符合直觉。

但是,请注意下面这句——这是容易晕的地方: 虽然 ve[n]0,但这并不代表模拟信号 ve(t) 的直流平均值 Ve 也是 0。

为什么?因为 ve(t) 里混杂了开关纹波。 【模式 C:费曼流动模式】 你采样的那个瞬间,波形可能正好处于纹波的某个波峰或波谷。数字环路是个「睁眼瞎」,它只看那个瞬间的值,只要那个点是 0,它就以为世界和平了,哪怕 ve(t) 的平均值其实偏了一点。

这种现象,其实就是混叠。开关频率的纹波分量,被采样折叠成了直流误差。这个误差不会超过纹波的幅值。

【踩坑预警】 ⚠️ 千万别在开关动作的瞬间采样! 那个瞬间的噪声和尖峰最大,简直是自找苦吃。 解决办法?要么加个模拟的「抗混叠滤波器」在 A/D 前面把高频噪声滤掉;要么用高于开关频率的速率进行过采样,然后在数字域里做滤波。顺便提一句,这也限制了我们的有效分析范围:离散时间补偿器的频率响应,通常只讨论到奈奎斯特频率 fs/2

控制环路延迟(td

【模式 B:侯捷紧密模式】 现在看信号是怎么在环路里跑的。 A/D 转换不是瞬间完成的。你得给它时间,这个时间叫 A/D 转换时间。 拿到数字 ve[n] 之后,补偿器 Gcd 要算出新的占空比指令 vc[n]。这也要时间,叫计算时间。

这两块时间加在一起,构成了控制器延迟 tctrl

再看 DPWM。 新的占空比指令 vc[n] 算出来之后,不会立刻生效。它得等下一个 PWM 周期,或者等到计数器归零。 于是输出的控制脉冲 c(t)(占空比 d[n])真正改写出来的时刻,相对于 vc[n] 的更新时刻,晚了一段时间。 更具体地说,调制出的脉冲与稳态脉冲的差值 c^(t),是在这个延迟之后才出现的。

这部分延迟来自于调制器的采样保持效应(参考 15.5 节),我们称之为调制器延迟 tmod。 对于后沿调制的 DPWM,这个延迟是 DTs

【模式 A:SICP 紧绷模式】 总延迟是多少? 它是两段延迟的和:

td=tctrl+tmod=tctrl+DTs(19.11)

别小看这个 td。在模拟电路里,一点点的相移还能忍受,但在数字环路里,这个延迟引入的相位滞后是毁灭性的。

表 19.1 列出了不同调制器类型对应的延迟。

  • 后沿调制:DTs
  • 前沿调制:(1D)Ts
  • 双沿调制:Ts/2

你看,双沿调制之所以好,就是因为它的平均延迟最小。

延迟的频域模型

【模式 B:侯捷紧密模式】 我们把目光转到频域。 一个时域延迟 td,对应 Laplace 变换里的因子 estd(公式 19.12, 19.13)。

Gdelay(s)=estd

它的幅频响应是 1(不衰减),但相频响应是:

Gdelay(jω)=ωtd(19.14)

这意味着相位滞后与频率成正比。频率越高,滞后越严重。 在设计离散时间补偿器时(19.3 节),如果忘了把这部分相位扣掉,你算出来的相位裕度可能是个美丽的虚幻,一上板就震荡。

💡 为什么数字电源爱用双沿调制:把上面那张「延迟对照表」反过来读,你立刻就懂了——后沿、前沿调制的延迟都含一个 D,占空比一变,延迟跟着漂;唯独双沿(三角波)调制恒定卡在 Ts/2,相位损失是个固定账。固定账能进模型、能预畸变、能调相位裕度;会漂的账只能让你在示波器前发呆。所以高速数字电源宁愿硬件上多花点成本做对称三角载波,也不愿吃 D 随负载乱跑这颗哑巴亏。


【阶段收尾 - 喘息】 到这里,我们已经拆开了数字环路的外壳。 我们看到了两个本质特征:幅度上的量化(有限的台阶)和时间上的离散(采样与延迟)。 这两个特征把原本平滑的模拟控制变成了一个布满陷阱的数字迷宫。 好在,有了公式 19.9 的理想假设,以及公式 19.11 的延迟模型,我们至少在数学上有了一根拐杖。 接下来,我们需要用这根拐杖,去重建那个在离散世界里依然稳定的补偿器。


参考说明:参考自 geqianQWQ 同学阅读《Fundamentals of Power Electronics》的笔记,仅作理解线索;本文为结合自己理解重新整理的学习笔记,不涉及对原书的复制或翻译。

面向嵌入式学习者的硬件学习笔记