尧图精选

从DFT看懂OFDM:正交性、循环前缀与频域均衡

🕒 发布时间:2026/10/2 18:37:56 📁 来源:尧图网络
我第一次接触 OFDM 时教科书从多载波调制讲起又是滤波器组又是正交条件一节课听完我脑子里只剩下一个问题这么多子载波同时叠加在一起接收端真的能一个不差地拆开吗直到我把离散傅里叶变换DFT的数学性质吃透再回头重看 OFDM才发现整个 OFDM 收发机本质上就是一次 DFT 的往返——发射端做一次逆变换把频域符号搬到时域接收端做一次正变换把叠加在一起的混合信号重新拆回频域。这个认知一旦建立什么子载波间隔、循环前缀、频域均衡全都能从 DFT 的性质里顺理成章地推出来。这篇就按这条思路走适合正在读通信原理、做通信系统综合实验或者刚入行做物理层开发的读者。1. 单载波的瓶颈为什么通信系统要“拆成 N 路”来传1.1 多径环境下的码间串扰无线通信里发射信号并不是只有一条路到达接收机。大楼反射、地面反射、移动物体散射会让同一个符号的多个副本在不同时间到达这就是多径效应。假设符号周期是 Ts最大多径时延扩展是 τmax只要 τmax 明显小于 Ts前一个符号拖到尾部的能量顶多落在下一个符号的开头影响还可控。但当数据速率提高Ts 就会缩短到和 τmax 同一个量级甚至更小。举个例子100Mbps 的 QPSK 信号符号周期只有 20ns而城市环境的 τmax 动辄几百纳秒到几微秒。此时前一个符号的“尾巴”直接盖住后面几十个符号如果不做复杂的时域均衡器这串数据基本没法看。均衡器是解决办法之一但阶数高、计算量大对信道变化的适应性也差。于是人们想到了另一条路与其在一条又窄又挤的路上硬冲不如把一条高速公路拆成几百条并行的窄车道每条车道上车速慢一点整体吞吐却不降甚至更高——这就是多载波并行传输的思想。1.2 为什么传统多载波没普及滤波器组的物理负担多载波不是新概念很早就有。把总带宽分割成 N 个子带每个子带独立调制独立解调接收端用一组带通滤波器把各路信号分出来。理论没问题工程上却很痛苦N 个子带就需要 N 个高精度滤波器模拟器件做起来体积大、功耗高、一致性差而且子带之间还要留出保护间隔频谱利用率被吃掉不少。所以这种方案一直停留在实验室里。OFDM 的转折点在于它把所有子载波的调制解调用一个统一的数学工具来完成——发射端做一次 IDFT接收端做一次 DFT滤波器组的角色交给 DFT 的正交变换来承担。只需要一个 IFFT 芯片N 路并行信号就全部调制完毕。这个替换让多载波从理论玩具变成了真正能商用、能大规模芯片化的技术。可以这么说OFDM 成功的本质是 DFT 的算法化和芯片化。2. 子载波正交性DFT 矩阵里早就写好的答案先给一句大白话概括 OFDM它把高速串行数据流分配到 N 个频率互不相同、且彼此“正交”的子载波上并行发送。所谓正交就是任意两个子载波在一个符号周期内的乘积积分为零——不同的频率在同一个时间窗口内互不干扰。这个“互不干扰”是核心因为只有互不干扰接收端才能把叠加在一起的 N 路信号重新分离。而 DFT 的矩阵恰好给了我们一套现成的、离散的、可直接计算的“正交基”这正是从 DFT 理解 OFDM 的切入点。2.1 连续时间的正交条件先看连续时间版本。设两个复指数信号 e^(j2πf1t) 和 e^(j2πf2t)在时间窗 [0, T] 内求内积∫₀ᵀ e^(j2πf1t) · e^(-j2πf2t) dt ∫₀ᵀ e^(j2π(f1-f2)t) dt当 f1 - f2 m/Tm 为非零整数时这个积分等于 0当 f1 f2 时积分等于 T。换句话说只要子载波之间的频率差是符号周期的整数倍倒数它们在时域窗口内就是正交的。这个“整数倍倒数”是理解 OFDM 所有参数设计的钥匙子载波间隔 Δf 和符号周期 T 必须满足 Δf 1/T或整数倍正交性才能成立。很多人背下了 OFDM 子载波间隔公式但不知道它从哪来——现在应该清楚了它就是从“一个符号周期内积分是否为 0”这个正交条件直接推出来的。2.2 离散域DFT 天然满足正交条件OFDM 是数字系统所有运算在离散域进行。对 N 点序列 x[n]N 点 DFT 定义为X[k] Σ_{n0}^{N-1} x[n] · e^(-j2πkn/N)k 0,1,...,N-1把 DFT 看成矩阵运算变换矩阵的第 k 行就是向量 [e^(-j2πk·0/N), e^(-j2πk·1/N), ..., e^(-j2πk·(N-1)/N)]。这些行向量彼此正交——任意两行的内积等于 0k≠l 时等于 Nkl 时。这个性质正是子载波正交性的离散版本而且不需要额外设计DFT 矩阵天生如此。顺着这个视角子载波间隔的由来也清楚了采样率 fs 对应 N 个频点DFT 的频率分辨率是 fs/N而一个 OFDM 符号的时间长度是 T N/fs所以相邻频点间隔 Δf fs/N 1/T。这不是人为规定是 DFT 的数学结构决定的。你可以把 N 个频点理解为 N 个“正交的子通道”每个通道独立承载一个复符号。2.3 频域视角每个子载波是一条 sinc如果画一个子载波在频域的响应会看到每个子载波的主瓣是一个 sinc 形状主瓣宽度 2/T峰值处恰好落在其他子载波的零点上。接收端在峰值点上采样就能把每个子载波干干净净地取出来。这也是为什么 OFDM 频谱利用效率高——子载波之间不需要保护带峰值处采样正好落在相邻子载波的零点上频谱可以几乎紧挨着排列。这个概念叫“频谱重叠但互不干扰”和 FDM 那种留保护间隔的老办法形成了鲜明对比。很多人对“OFDM 频谱利用率高”的困惑就在这里不是不重叠而是重叠了也不干扰。背后的数学保证就是 DFT 的正交性。3. OFDM 收发机的数学本质一次 IDFT 完成 N 路调制3.1 发射端从比特流到时域波形OFDM 发射端的信号处理链是比特流 → 星座映射QPSK/16QAM 等 → 串并转换 → 子载波映射 → N 点 IFFT → 加循环前缀 → 并串转换 → DAC → 上变频发射关键的一步是 IFFT。输入 IFFT 的 N 个复数值 X[0], X[1], ..., X[N-1] 就是 N 个子载波各自要携带的频域符号输出 x[0], x[1], ..., x[N-1] 是 N 个时域采样点它们等于x[n] (1/N) Σ_{k0}^{N-1} X[k] · e^(j2πkn/N)这个式子本身就是 N 个不同频率复指数信号的叠加——一个 IFFT 同时完成了 N 路子载波的调制滤波器组被彻底扔掉了。很多教材把 IFFT 叫作“OFDM 调制器”把 FFT 叫作“OFDM 解调器”原因就在这里。从前需要几十上百个模拟滤波器干的活现在一次数字变换全部完成。3.2 接收端一次 FFT 把 N 路信号拆开接收端做完同步、去 CP 之后对 N 点时域采样序列 y[n] 做 N 点 FFTY[k] Σ_{n0}^{N-1} y[n] · e^(-j2πkn/N)依靠 DFT 的正交性叠加在时域上的 N 路子载波信号在频域被重新拆开。如果信道理想Y[k] 就等于 X[k]乘一个常数倍数星座点原位不动如果信道有多径Y[k] H[k]·X[k] W[k]每个子载波只受自身频点 H[k] 的影响和其他子载波无关。这就是“从 DFT 理解 OFDM”最核心的一句话发射端 IDFT 把频域符号变成时域波形接收端 DFT 把时域波形变回频域符号一来一回N 路并行数据在频域里互不串扰。3.3 为什么频域均衡“便宜”乘一个复数就完事这是 OFDM 让工程实现最舒服的一点。单载波系统面对多径时时域均衡器需要几十甚至上百个抽头OFDM 系统只需要对每个子载波除以 H[k]——N 个复数除法复杂度低到可以忽略。因为 DFT 把时域卷积变成了频域乘积多径信道的效应变成了每个子载波各自的幅度和相位旋转用已知的导频测出 H[k]再做一次除法均衡就结束了。后面仿真章节会验证这一点。你会在接收端看到只要信道估计准确带多径的 OFDM 星座图可以恢复得和理想信道几乎一样干净这在单载波系统里是不敢想象的。4. 循环前缀DFT 循环卷积定理的工程化4.1 线性卷积破坏了 DFT 的乘法性质DFT 有一个重要性质时域循环卷积等于频域乘积。也就是如果 y_c[n] x[n] ⊛ h[n]循环卷积那么 Y_c[k] X[k]·H[k]。这是 OFDM 频域均衡的理论基础。但物理信道的多径作用是线性卷积不是循环卷积。拿最简单的两径信道 h[0]1, h[1]0.8 来说接收信号 y[n] x[n] 0.8x[n-1]这是一个线性卷积。直接对 y[n] 做 DFTY[k] 并不等于 X[k]·H[k]而是混入了“上一块数据尾部”的贡献子载波之间的正交性也会被破坏——反映到星座图上就是一团乱麻。4.2 CP 的聪明之处把线性卷积伪装成循环卷积循环前缀的做法是发完一个 OFDM 符号的 N 个采样点后把末尾的 L 个采样点复制一份拼到符号开头。接收端去掉前面这 L 个采样点只保留后面 N 个点再做 FFT。而这个保留的 N 个点恰好等效于发送序列 x[n] 与信道冲激响应 h[n] 的循环卷积——因为落在符号尾部的多径拖尾“绕回”了开头正好被丢弃的 CP 部分吸收。用生活化的方式理解CP 像是一条传送带前面的“空白缓冲段”多径信号从上一个符号拖过来的“尾巴”全部落在缓冲段里真正承载数据的 N 个点不受污染。于是式子 Y[k] H[k]·X[k] 重新成立频域均衡那套理论回来了。4.3 CP 长度怎么选大于最大时延扩展CP 长度必须大于信道最大多径时延扩展否则拖尾仍会污染下一个符号。但 CP 本身不承载有用信息长度越大频谱效率越低。工程上是“够用就好”LTE 普通 CP 对应约 4.7μs短 CP 主要服务城市小蜂窝扩展 CP 约 16.7μs覆盖大时延场景比如超远覆盖。一个典型 OFDM 符号在 LTE 里是 2048 个采样点普通 CP 是 144 或 160 个采样点开销约 7%。很多人会问为什么 CP 要复制末尾而不是补零因为复制末尾才能让信号变成“循环”的——线性卷积在保留区间的表现和循环卷积一致。补零的话这个性质就不成立频域均衡就没法用了。这个细节是 CP 设计的精髓。5. 子载波间隔怎么定LTE 的 15kHz、WiFi 的 78.125kHz 与 5G 的可变参数集5.1 间隔的选择是一个折中子载波间隔 Δf 1/T这个值不能任意取它受三个约束夹击多径时延扩展CP 长度必须大于 τmax而 CP 开销约等于 L/N。N 越大子载波越多频谱效率越高但 T 也越长需要更长的 CP。多普勒频移移动场景下信道随时间变化会在频域展宽如果 Δf 太小子载波间的正交性会被多普勒破坏出现严重的子载波间干扰ICI。车速越快需要的 Δf 越大。相位噪声振荡器的相位噪声也会展宽频谱同样要求子载波间隔不能过窄。所以子载波间隔不是拍脑袋定的而是“抗多径”和“抗多普勒/相噪”之间的一个折中。间隔大了符号变短能抵抗移动性但 CP 相对开销变大间隔小了频谱效率高但移动场景下很容易翻车。5.2 主流系统参数对比我把几个典型系统的 OFDM 参数列成表方便对照| 系统 | 带宽 | 子载波间隔 Δf | FFT 点数典型 | CP 长度普通 | 应用场景 | | LTE | 20MHz | 15kHz | 2048 | 144/160 采样点约 4.7/5.2μs | 蜂窝移动通信 | | 5G NR | 100MHz 以内 | 15/30/60/120kHz 可配 | 如 30kHz 时 4096 | 随参数集变化 | eMBB/URLLC/mMTC | | WiFi 6 | 20MHz | 78.125kHz | 256 | 0.8/1.6/3.2μs 可配 | 室内短距离大容量 | | DVB-T | 8MHz | 约 976.6Hz8K 模式 | 8192 | 可选 1/4、1/8、1/16、1/32 符号周期 | 地面数字电视广播 |WiFi 的子载波间隔为什么远比 LTE 大因为 WiFi 主要面对室内强多径、非移动场景但更关注短符号带来的低时延和高吞吐且相位噪声相对宽松。而 LTE 必须守住移动性15kHz 是在多普勒容忍度和 CP 开销之间取的一个经典平衡点——它能容忍约 500km/h 的高铁场景同时 CP 带来的开销又不到 7%。5.3 5G NR 为什么要把间隔做成可变5G NR 把 Δf 做成 15kHz × 2^μμ0,1,2,3...本质上是在同一个框架里适配多种场景大覆盖用 15/30kHz符号长、CP 长、能抗多径高频段用 60/120kHz符号短、抗多普勒和相位噪声强适合毫米波。从 DFT 的角度看无论 Δf 怎么变它的倒数是符号周期 TFFT 点数 N 和采样率 fs 同步缩放DFT 那块数学内核完全不动只是参数配置变了。这也是为什么 OFDM 能在这么多制式里通吃——DFT 这个发动机不变改的只是挡位。5.4 怎么理解无人机图传、WiFi 里都在用 OFDM如果你查 OFDM 相关的工程资料会发现消费级无人机图传、无线路由器、甚至一些工业数据链路上OFDM 都是主流的物理层方案。原因不外乎三点抗多径能力强城市、室内、地形复杂场景都能用频谱效率高带宽资源紧张时的首选实现已经高度芯片化一颗 SoC 里集成 FFT 引擎成本很低。无人机图传在高速移动和复杂反射环境下还能保持稳定画面靠的就是 OFDM 加纠错编码这套组合。需要提醒的是不同系统的 OFDM 参数差别很大。不要试图把蜂窝网的 15kHz 子载波间隔直接套到无人机图传上——图传系统为了对抗快速移动和复杂反射环境通常会选用比 LTE 更大的子载波间隔来抵抗多普勒但具体数值由各厂商的物理层设计决定往往不一定公开。判断一套 OFDM 参数合不合理核心就看 Δf 和 CP 长度是否匹配你所在场景的移动速度和时延扩展。6. 用一段 Python 代码验证 OFDM 收发的完整链路6.1 仿真参数与发射端实现理论说再多不如跑一次仿真。下面这段代码用 numpy 搭了一个最小 OFDM 链路64 个子载波、16 点循环前缀、QPSK 调制、三径信道收发端各一个 IFFT/FFT。import numpy as np # ---- 参数 ---- N 64 # 子载波数 / FFT 点数 cp_len 16 # 循环前缀长度 num_syms 1000 # OFDM 符号数 M 4 # QPSK # 星座映射 const np.array([11j, 1-1j, -11j, -1-1j]) / np.sqrt(2) # 随机数据 bits np.random.randint(0, M, size(N, num_syms)) data_freq const[bits] # 频域符号每个子载波一个 # ---- 发射端IFFT 加 CP ---- tx_time np.fft.ifft(data_freq, axis0) # (N, num_syms) 时域信号 tx_cp np.vstack([tx_time[-cp_len:], tx_time]) # 加循环前缀 tx_signal tx_cp.T.flatten() # 并串转换注意这里每个 OFDM 符号的 N 个频域符号经过 IFFT 后变成 N 个时域采样点加 CP 后一个符号变成 Ncp_len 个采样点最后按行展平成长串时域信号。6.2 三径信道与接收端解调# ---- 信道三径 ---- h np.array([1, 0.6, 0.3]) # 三条抽头代表多径 rx_signal np.convolve(tx_signal, h) # 线性卷积多径的真实效果 # ---- 接收端同步假设理想- 去 CP - FFT ---- rx rx_signal[:len(tx_signal)] # 截断模拟同步完成 rx_cp rx.reshape(num_syms, N cp_len) rx_no_cp rx_cp[:, cp_len:] # 去 CP只保留后面 N 个点 rx_freq np.fft.fft(rx_no_cp, axis1) # FFT 解调这里有个重要的细节我用 np.convolve 模拟多径它是线性卷积正好逼迫我们必须用 CP 来解决。你可以试着把 CP 去掉接收端直接对 tx_time 做 FFT看看星座图会变成什么样。6.3 对比结果有 CP 和无 CP 的星座图差异继续做信道估计和均衡# 信道频响对 h 补零到 N 点做 FFT H_freq np.fft.fft(h, N) # 频域均衡每个子载波除以自己的信道响应 rx_eq rx_freq / H_freq[None, :] # 解映射找离接收点最近的星座点 rx_hard np.argmin(np.abs(rx_eq[..., None] - const), axis-1) acc np.mean(rx_hard bits) print(有 CP 均衡后的准确率, acc)跑出来的结果只要信噪比不是太低准确率可以做到接近 1。而如果把 CP 去掉你会发现就算是理想信道估计星座图也散成一团——因为线性卷积的“上一块尾巴”覆盖到了当前符号上DFT 的循环卷积定理不再成立。我把这段代码从三径换成单径 h[1]再去掉均衡星座图就是完美的 QPSK 四个点。这正好验证了前面的结论OFDM 的一切都是围绕 DFT 的两个性质展开的一个是正交性一个是循环卷积定理。如果想要更贴近真实系统可以在接收端加噪声snr_db 20 noise 10**(-snr_db/20) / np.sqrt(2) * ( np.random.randn(num_syms, N) 1j * np.random.randn(num_syms, N) ) rx_no_cp rx_no_cp noise然后观察不同信噪比下的准确率变化。这个练习做完你对 OFDM 链路的理解会比看十遍教材都深。6.4 仿真里容易踩的坑几个仿真中常见的问题提前说出来帮你避开IFFT 和 FFT 的归一化numpy 的 ifft 默认除以 Nfft 不除一对收发正好抵消。但如果只做 FFT 不做 IFFT就会差一个 N 倍。线性卷积长度np.convolve 默认是 full 模式输出长度是 len(tx_signal)len(h)-1直接 reshape 会出错要先截断。信道频响要补零到 N 点再 FFT不能直接 FFT 长度为 3 的 h否则频域点数不够均衡结果完全不对。这些细节几乎每个人的第一版仿真都会遇到写出来帮后面的人少走弯路。7. OFDM 不是万能药PAPR、频偏与 DFT-s-OFDM 的补救7.1 峰均功率比PAPR问题OFDM 时域信号是 N 个独立子载波信号的叠加根据中心极限定理幅度分布接近高斯峰值功率会比平均功率高出一大截。射频功率放大器为了线性放大高峰值需要大幅回退工作点效率很低。这对终端更麻烦——本来电池就小射频效率还不高。你会在 LTE/5G 上行看到一种叫 DFT-s-OFDM 的方案先对数据做一次 DFT扩展再送入 IFFT。这个额外的一级 DFT 让时域信号退回到类似单载波的特性PAPR 大幅下降。它是 OFDM 家族里的“单载波性格”成员也可以理解为在 DFT 框架里做了一次信号结构的变换来换取更低的峰均比。7.2 载波频偏CFO与正交性破坏OFDM 对频率偏移极其敏感。收发端晶振如果不一致或者存在多普勒频移接收端采样的频点就会发生偏移子载波之间的正交性被破坏产生 ICI。子载波间隔越小这种破坏越明显。LTE 把 15kHz 作为移动场景的下限一个原因就是要给频偏留出容忍空间。工程上会用循环前缀里的信息做频偏估计和校正这也是同步头PSS/SSS存在的理由之一。如果你在仿真里加一个很小的频偏比如子载波间隔的 1%再去看星座图会发现星座点开始旋转、散开——这就是 CFO 的直观效果。实际系统里不先做频偏校正后面的一切都白搭。7.3 从 DFT 视角看 OFDM 演进OFDMA 与 5G 参数集OFDMA 不过是把 N 个子载波划分成组分配给不同用户每个用户占用一组子载波进行传输在 DFT 框架里就是“频域资源网格”的划分。5G NR 的数据承载在一个时频资源网格上本质也是 DFT 的二维版本——时间维度是符号序号频率维度是子载波序号。这也是为什么 5G 物理层里到处都是“资源块RB”的概念——一个 RB 是固定的子载波数乘符号数对应一个频域窗口。我自己的体会是OFDM 技术演进到 5G底层的 DFT 内核二十多年没变过变的只是参数配置和时频资源的组织方式。这就是数学工具先行的魅力——一套 DFT 理论支撑了从数字电视广播到 5G、WiFi 6、无人机图传的整个物理层通信版图。最后分享一个我调试 OFDM 链路时的小习惯先把信道设成单径、关掉噪声跑通一条干净的链路再逐步加多径、加频偏、加噪声。每加一个变量就看星座图怎么变。这样你能直观地看到 DFT 正交性、循环卷积定理分别是在哪个环节起作用的。这套“由简到繁”的调试顺序比直接上完整系统高效得多。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →