首页 › deep-tech › 数字预失真:以毒攻毒矫正功放

数字预失真:以毒攻毒矫正功放

一、从一个"破音的扩音器"说起

你一定有过这样的体验:KTV里把话筒音量推到最大,音箱就开始"嘶啦嘶啦"地破音;用手机外放最大音量听歌,鼓点重的地方声音发劈。这不是音箱坏了,而是功放(功率放大器,Power Amplifier,简称 PA)被"喂"得太饱,进入了非线性区。

基站里的射频功放,本质上和这个音箱是同一类东西——它把微弱的基带信号"喊"出去,喊得越响,覆盖得越远。但通信信号远比音乐"娇贵":音乐破了,顶多难听;通信信号破了,星座点会糊成一团,误码率飙升,更糟糕的是多余的能量会"溅"到隔壁信道,干扰别人,这就是监管死死盯着的"邻道泄漏"。

这就出现了一个让人抓狂的矛盾:

功放要省电(高效率),就得工作在"破音"区;要信号干净(高线性),就得退回"小声"区(功率回退)。 效率和线性,像鱼和熊掌。

数字预失真(Digital Pre-Distortion,DPD)就是来解决这个矛盾的。它的思路非常反直觉,堪称通信工程里最优雅的"以毒攻毒":

既然功放会在大信号处把幅度"压扁",那我就在数字域里先把它"撑大"一点,等它经过功放被压扁后,刚好回到正确的值。 预先扭曲,抵消后天的扭曲,最终级联起来像一条直线。

这一篇,我们就从功放为什么会破音讲起,一路推到 DPD 如何自己学会"以毒攻毒",再到你在现网调试时踩过的那些坑。


二、功放为什么必须"破音":效率与线性的两难

先看一组让人心疼的数字:一个 5G 宏基站,射频部分的功耗往往占到整机的一半以上,而其中功放又是射频部分的大头。功放吃进去的直流电,只有一部分变成有用的射频信号送上天线,剩下全变成了热。这个"有用比例"就是功放的效率。

不同类型的功放,效率和线性是天平的两端:

功放类别 典型效率 线性度 主要用途
A 类 ~25-30% 极好 实验室仪表,几乎不用在基站
AB 类 ~35-50% 好 中等线性要求场景
B 类 ~50-60% 中等 —
Doherty(多赫蒂) ~50-70% 中等偏低 4G/5G 基站主力

A 类功放线性最好——它永远"在线",信号再大也不破音。但代价是它永远在满负荷耗电,效率只有三成左右,剩下七成全变成热烤机房。这种"用钱(电)换线性"的豪横做法,商业基站用不起。

基站普遍采用 Doherty 功放:它在平均功率附近效率很高,但一遇到信号峰值,增益就开始"塌",进入非线性。偏偏现代调制信号(OFDM、高阶 QAM)又是出了名的"忽大忽小"——峰值功率比平均功率高出一大截(这就是峰均比 PAPR)。

所以现实就是:你不可能让功放又省电又干净,只能选一个,然后用 DPD 去"补"另一个。 这正是 DPD 存在的根本理由——它不是锦上添花,而是基站能正常通过入网测试、满足 ACLR(邻道泄漏比)指标的关键命门。

一句话记住:DPD 不是为了把信号变得更好,而是为了让功放可以"大胆地破音工作"的同时,从外面看不出来它破音。


三、看清功放的非线性:AM-AM 与 AM-PM

要把功放的"破音"刻画清楚,工程师用两张图来描述它的"脾气":

1. AM-AM 特性:幅度对幅度的扭曲

输入信号幅度 $A_{in}$ 越大,理想功放的输出幅度 $A_{out}$ 应该成比例增大:$A_{out} = G \cdot A_{in}$,一条过原点的直线。但实际功放在大信号处会"压扁"——增益下降,曲线弯下来。这种幅度随幅度变化的失真,叫 AM-AM 失真。

用一条经典的 Saleh 模型曲线来示意(数字归一化):

xychart-beta
    title "功放 AM-AM 特性:大信号处被压扁"
    x-axis "输入幅度" 0 --> 1
    y-axis "输出幅度" 0 --> 1.1
    line "理想线性" [0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1.0]
    line "实际PA(压缩)" [0, 0.15, 0.3, 0.44, 0.56, 0.65, 0.72, 0.76]

看到没有?小信号处两条线几乎重合(功放老实放大),大信号处分叉了——功放"使不上劲",输出被压住。这就是增益压缩,常说的"1dB 压缩点"就是增益比线性值掉了 1dB 的那个输入点。

2. AM-PM 特性:幅度对相位的扭曲

更隐蔽、但同样致命的是 AM-PM 失真:输入幅度变化,竟然会让输出相位也跟着转。也就是说,同一个星座点,因为它的幅度不同,到达时相位被额外旋转了一个角度。在星座图上,这表现为整个星座"拧"了一下,外圈的点转得更厉害。

把两者合起来,功放对信号的作用可以用一个复数增益描述:

$$ y(t) = G\big(|x(t)|\big) \cdot x(t) $$

其中 $G(\cdot)$ 是一个复函数,它的模 $|G|$ 随幅度变化就是 AM-AM,它的辐角 $\angle G$ 随幅度变化就是 AM-PM。非线性 = 增益不再是常数,而是输入幅度的函数。

关键直觉:非线性失真的本质是"大信号和小信号被区别对待"。DPD 要做的事,就是反过来——在大信号处提前"补偿"这种区别对待。


四、频谱再生:失真如何"溅"到邻居家里

你可能会问:星座点糊一点,忍忍不就行了?不行,因为非线性会带来一个更严重的后果——频谱再生(Spectral Regrowth)。

时域上"幅度被压扁"是个非线性操作,非线性操作在频域上等于"产生了输入里原本没有的新频率分量"。回忆一下三角公式:

$$ \sin^3(\omega t) = \frac{3}{4}\sin(\omega t) - \frac{1}{4}\sin(3\omega t) $$

一个三阶非线性,输入一个纯正弦,输出里就冒出了三倍频成分。实际信号是宽带的,三阶、五阶交调产物会像墨水一样向信号主瓣两侧"晕开",落到相邻信道里去。

这就是为什么监管机构规定 ACLR(Adjacent Channel Leakage Ratio,邻道泄漏比) 指标——你的信号主瓣功率,和"溅"到隔壁信道的功率之比,必须大于某个门槛(比如 45dB,即相差约三万倍)。一旦功放"破音"过头,ACLR 就会超标,基站入网测试直接挂掉。

flowchart LR
    A["原始频谱<br/>干净的主瓣"] --> PA["功放(非线性)"]
    PA --> B["再生频谱<br/>主瓣+两侧'晕开'"]
    B --> C{"ACLR是否达标?"}
    C -->|"未达标的功率溢出"| D["❌ 干扰邻道<br/>入网测试失败"]
    C -->|"功率被压在掩膜下"| E["✅ 合规"]
    style D fill:#f4cccc
    style E fill:#d9ead3

内行看门道:ACLR 不达标,第一个怀疑对象就是 DPD 没调好,而不是调制器或滤波器。这也是为什么一线工程师必须懂 DPD。


五、DPD 的核心思想:以毒攻毒

现在主角登场。DPD 的思路可以用一句话概括:

在数字域里给信号施加一个"相反的扭曲",使 预失真器 + 功放 的整体看起来是一条直线。

如果功放在大信号处把幅度压到 0.76(本该是 1.0),那预失真器就在大信号处把输入撑到 $1.0/0.76 \approx 1.31$ 倍,喂给功放后,$1.31 \times 0.76 = 1.0$,正好回到理想值。相位同理——功放转了 $+10°$,预失真器先转 $-10°$,两者抵消。

数学上,设预失真器的特性为 $F(\cdot)$,功放的特性为 $G(\cdot)$,目标是:

$$ G\big(F(x)\big) = K \cdot x $$

即整体只是一个恒定增益 $K$ 的线性系统。这意味着 $F$ 是 $G$ 的逆函数(在数值上是广义逆):

$$ F(\cdot) = G^{-1}(\cdot) $$

整个发射机的闭环架构长这样:

flowchart TD
    X["数字基带信号 x"] --> PD["数字预失真器<br/>F(·):施加反向扭曲"]
    PD --> DAC["DAC + 上变频"]
    DAC --> PA["功放 G(·):自然扭曲"]
    PA --> ANT["天线发射"]
    PA -.->|"耦合采样"| FB["反馈接收机<br/>下变频+ADC"]
    FB -.-> ENG["自适应算法引擎<br/>估计逆模型"]
    ENG -.->|"更新系数"| PD
    style PD fill:#fff2cc
    style ENG fill:#cfe2f3

注意几个设计精髓,理解了它们你就理解了 DPD "为什么这么搭":

  1. 为什么预失真放在数字域、且在 DAC 之前? 因为数字域可以精确地施加任意复杂的非线性变换,零成本(相对而言)、可编程、不受温度漂移影响。模拟域做预失真既不灵活又难调。

  2. 为什么需要一个反馈回路? 因为功放的"脾气"会变——温度升高、器件老化、负载变化、不同频段、不同带宽的信号,都会让非线性特性漂移。预失真器不能调好一次就一劳永逸,必须持续学习、实时跟踪。

  3. 为什么采样的是功放输出而不是输入? 因为目标是让"功放输出"线性,所以反馈必须观测真实的输出,再倒推出需要补偿多少。这是一个典型的闭环辨识问题。

类比总结:DPD 像一个提前量很准的神枪手——他知道子弹会受风偏(功放扭曲),于是瞄准时反向偏一点(预失真),最终子弹(输出)正中靶心(线性)。


六、记忆效应:为什么不能只靠一个多项式

如果你只考虑 AM-AM 和 AM-PM,理论上一个无记忆多项式就够了:

$$ y(n) = \sum_{k=1}^{K} a_k \cdot x(n)\,|x(n)|^{2(k-1)} $$

只含奇数次项(因为基带模型的对称性),$a_k$ 是待拟合系数。这就是把功放当成"当前输出只依赖当前输入"的瞬时非线性。

但现实残酷:宽带信号下,功放有记忆效应。功放的输出不仅取决于"现在这一刻"的输入,还取决于"刚才"的输入——因为电路里有储能元件(电容、电感)、热惯性、偏置网络的迟滞。于是同一个幅度的输入,因为它"刚才经历的历史"不同,输出可能不一样。

无记忆模型在窄带(如 3G 的 5MHz)还能凑合,但到了 LTE 的 20MHz、5G 的 100MHz 甚至 200MHz 带宽,记忆效应会让无记忆 DPD 的补偿效果大打折扣——ACLR 怎么调都差那么几个 dB。

解决办法是引入记忆多项式(Memory Polynomial,MP),把"历史"也纳入模型:

$$ y(n) = \sum_{k=0}^{K-1}\sum_{m=0}^{M-1} a_{km}\, x(n-m)\,|x(n-m)|^{2k} $$

这里 $M$ 是记忆深度(看过去多少个采样),$K$ 是非线性阶数。一个 5G 基站 DPD 典型配置可能是 $K=5\sim7$(阶数)、$M=3\sim5$(记忆深度)。

更高级的还有广义记忆多项式(GMP)、Volterra 级数、以及近年来热门的神经网络 DPD。它们的取舍很清晰:

模型 是否含记忆 精度 计算复杂度 适用场景
无记忆多项式 ❌ 低 极低 窄带、教学演示
记忆多项式 MP ✅ 中高 中 LTE、5G 中等带宽主流
广义记忆多项式 GMP ✅+交叉项 高 较高 5G 宽带、高指标
Volterra 级数 ✅ 极高 极高(系数爆炸) 研究、超高要求
神经网络 ✅ 高(自适应) 高(推理开销) 宽带、多频、未来趋势

工程直觉:阶数越高,能抵消的交调产物阶数越高;记忆深度越大,能跟踪的宽带失真越多。但两者都涨,系数就指数级膨胀,DSP 算不动、收敛也变慢。 DPD 调参,本质是在"补偿能力"和"实现代价"之间找平衡点。


七、闭环自适应:DPD 如何自己学会"以毒攻毒"

最难也最巧妙的部分来了:预失真器的那些系数 $a_{km}$ 是怎么来的? 它们不是人手算的,而是 DPD 自己学出来的,而且每隔几十毫秒就刷新一次。这个过程叫自适应学习。

最经典的是间接学习结构(Indirect Learning),思路绕但很妙:

  1. 先训练一个"后失真器":拿功放的输出 $y(n)$ 当输入、原始基带 $x(n)$ 当目标,估计一个"反向功放"的系数。因为后失真器看到的输入是已经扭曲过的 $y(n)$,相对容易直接用最小二乘(LS)求解。
  2. 把系数"拷贝"到预失真器:在数学上,后失真器的逆就是预失真器,直接复制系数即可。

整个流程用时序图看最清楚:

sequenceDiagram
    participant TX as 数字基带 x(n)
    participant PA as 功放输出 y(n)
    participant FB as 反馈接收机
    participant ENG as 自适应引擎
    TX->>PA: 信号经预失真+上变频+放大
    PA->>FB: 耦合一小部分输出
    FB->>ENG: 反馈样本 y(n)(对齐到 x(n))
    ENG->>ENG: 时间对齐+幅度/相位校准
    ENG->>ENG: 最小二乘估计后失真器系数
    ENG->>TX: 复制系数到预失真器
    Note over TX,PA: 级联输出逼近线性,ACLR达标

这里有几个只有踩过坑才懂的工程细节:

一句话:DPD 不是一次性配置,而是一台时刻在"自学微调"的机器。 它的强大正在于——你换了频段、信号变了、机房空调坏了导致温度飙升,它都能跟得上。


八、实战连接:工程师如何调试 DPD

理论讲完,回到一线。当你拿到一台新基站或在现场排查 ACLR 超标,DPD 的调测是绕不开的关卡。常见的症状和对应原因,我整理成一张"诊断速查表":

症状 典型原因 排查方向
ACLR 整体差几个 dB 阶数/记忆深度不够 提高非线性阶数、加深记忆深度
ACLR 时好时坏飘忽 自适应未收敛、样本太少 增加训练样本数、检查学习率
单边频谱再生严重 I/Q 不平衡、镜像泄漏 先查 I/Q 校准,再查 DPD
低功率时反而变差 DPD 工作点偏高、回退过大 确认功放工作点,避免过度预失真
温度升高后指标恶化 学习周期太长跟不上热漂移 缩短自适应刷新周期
换频段/带宽后失效 模型不通用 重新采集训练样本、换模型

几个容易踩的调试陷阱:

  1. 把 DPD 当万能药:ACLR 不达标先怀疑 DPD,但有时根因是峰均比太高、CFR(削峰)没做好。DPD 补偿的是功放的非线性,它"压"不住太高的峰值——必须先 CFR 把 PAPR 砍下来,再交给 DPD。CFR 是减负,DPD 是矫正,顺序不能乱。

  2. 反馈链路信噪比被忽略:反馈接收机自己也有噪声和线性度问题。如果反馈链路比功放还差,DPD 学到的就是"噪声的逆",越学越乱。一线经验:反馈链路的线性度要比被测功放好 10dB 以上。

  3. 忽视 PA 工作点:DPD 不是在任何功率都有用。功放工作点太低(回退太大),非线性本来就不明显,DPD 反而引入量化噪声;工作点太高(接近饱和),即使最高阶模型也救不回来。DPD 有效区间一般在 1dB 压缩点回退 6~10dB 处。

现网价值:一个调得好的 DPD,能让基站在同样的 ACLR 指标下,输出功率提高 1~2dB——别小看这一两个 dB,在覆盖和容量上意味着真金白银。这也是为什么芯片厂商(如 ADI 的 ADRV9002、各种基站 SoC)都把 DPD 做成可配置的硬核模块。


九、为什么这件事值得你搞懂

回到最初那个 KTV 音箱的比喻。如果你只把它当成"功放坏了要修",你就永远停留在被动应对;一旦你理解了"功放天生要在非线性区高效工作,而 DPD 用数字域的反向扭曲把它伪装成线性"这层逻辑,你在看任何发射机架构、任何 ACLR 故障、任何芯片 datasheet 里的 DPD 章节,都会豁然开朗。

DPD 是通信工程里少有的、把数学之美和工程之用结合得淋漓尽致的技术:它用最小二乘辨识、Volterra 级数这些看似纯理论的工具,实打实地给运营商省下几千万度电、给基站省出宝贵的发射功率。理解它,就是理解了现代无线发射机最核心的一块拼图。


常见问题

Q1:DPD 和功率回退(Back-off)有什么区别,为什么不直接回退? A:功率回退是把功放工作点压低,让它待在线性区,简单但极其费电——回退 3dB,效率可能掉一半。DPD 则是让功放大胆工作在高效率的非线性区,再用数字补偿把非线性"擦掉"。一句话:回退是"花钱(效率)买线性",DPD 是"用算力换效率",后者在基站这种长期高功率场景下性价比碾压。

Q2:CFR(削峰)和 DPD 是什么关系,能互相替代吗? A:不能,是互补的。CFR 负责把信号的峰均比降下来(减少偶尔的极端峰值),让功放不必为这些罕见峰值而过度回退;DPD 负责补偿功放的非线性。顺序永远是 CFR → DPD:先减负,再矫正。只调 DPD 不做 CFR,峰值把功放打到饱和,DPD 再厉害也补不回来。

Q3:DPD 的系数需要多久更新一次? A:典型在几十毫秒到几百毫秒更新一轮,取决于功放特性漂移速度。温度变化快、负载驻波波动大、频繁切换频段时,更新要更勤。但每轮更新都要采集成千上万样本做 LS 求解,太频繁会占用 DSP 算力,所以这是个平衡。

Q4:无记忆多项式、记忆多项式、神经网络 DPD,我该选哪个? A:带宽是决定因素。窄带(< 20MHz)无记忆或浅记忆即可;LTE/5G 中等带宽(20~100MHz)记忆多项式 MP 是主流;超宽带、多频并发、毫米波,考虑 GMP 或神经网络。工程上先用 MP 跑通,指标不够再升级模型,不要一上来就上最复杂的——复杂模型收敛慢、占资源。

Q5:手机里为什么很少提 DPD,主要是基站用? A:因为功耗量级差太多。基站功放几十瓦到上百瓦,DPD 带来的效率提升能省下巨大的电费和散热成本,值得投入专门的 DSP。手机功放功率小(毫瓦级到几瓦),且对芯片面积、待机功耗敏感,更多依赖功放本身的良好设计和适度的回退,DPD 用得轻量甚至省略。但随着 5G 毫米波和高带宽调制,旗舰手机射频芯片也开始集成简化版 DPD。


参考来源

  1. RF通信的数字预失真:从等式到实现方案 — 亚德诺半导体 (ADI) — ADI 官方技术文章,系统讲解 DPD 的数学基础与软硬件实现,权威性强。
  2. 对数字预失真进行故障排除和微调的完整指南 — Analog Devices — 以 ADRV9002 为例的 DPD 调试实战,贴近一线工程排障。
  3. 数字预失真 DPD 详解 + Matlab 仿真 — 知乎 — 配 MATLAB 仿真的中文详解,含预失真器与功放级联线性化的原理图与代码。
  4. 深入浅出介绍数字预失真(DPD)技术 — 知乎 — 从 64-QAM 星座图角度直观解释 DPD 对峰值符号的额外增益补偿。
  5. 功放数字预失真线性化技术发展趋势与挑战 — GitHub Pages — 综述性 PDF,涵盖 DPD 模型演进(MP/GMP/2D-DPD/神经网络)与关键技术挑战。
  6. 使用 MATLAB 进行射频功率放大器建模并借助 DPD 改善发射器线性度 — MathWorks — MATLAB 官方 PA 建模与 DPD 线性化教程,适合上手仿真验证。

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入