一、OFDM基础与WiFi6演进:从OFDM到OFDMA,WiFi6为什么要改?

各位同学好,我是老张。今天咱们聊聊WiFi6最核心的一个改动——从OFDM到OFDMA。

说实话,我第一次看到OFDMA这个名词时,第一反应是:这不就是4G LTE那套东西吗?怎么WiFi也拿来用了?后来深入做了几个项目,才明白这背后的门道。

咱们先别急着跳进OFDMA的细节。先搞清楚OFDM是怎么回事。这是基础,绕不过去。

1.1 OFDM:WiFi4/5的物理层基石

OFDM,正交频分复用。名字听着唬人,说白了就是:把一条宽马路,切成很多条窄巷子

WiFi4(802.11n)和WiFi5(802.11ac)都用OFDM。一条20MHz或80MHz的信道,被切成52个或更多子载波。每个子载波上独立传数据。

为什么要这么干?两个原因:

  • 抗多径:无线信号会反射、折射,产生时延扩展。窄带子载波对时延不敏感,加个循环前缀(CP)就搞定了。
  • 频谱效率高:子载波之间正交,可以重叠,不浪费频谱。

我在做WiFi5芯片时,遇到过一个问题:OFDM的峰均比(PAPR)太高,导致PA效率上不去。嗯,这是OFDM的老毛病,后面咱们会专门讲。

1.2 OFDM的痛点:资源分配太粗放

OFDM好是好,但有个致命问题——资源分配的最小单位是整个信道

你想想看,一个20MHz信道,一次只能服务一个用户。哪怕你只发一个ACK包,也得占满整个信道。这就像你开一辆大卡车去送一封平信,浪费啊。

我举个例子:

  • 用户A要下载一个大文件,需要高吞吐
  • 用户B只发一个心跳包,几十个字节

在WiFi5里,如果用户B先抢到信道,用户A就得等着。等B发完那个小包,A才能开始传。这中间的空隙,信道就闲置了。

核心问题:OFDM是「单用户」传输机制。一次传输,一个用户独占所有子载波。这在物联网、智能家居场景下,效率极低。

1.3 OFDMA:把「独占」变成「共享」

WiFi6引入了OFDMA。全称是正交频分多址。多了一个「A」,代表多址接入。

说白了,OFDMA允许多个用户同时使用不同的子载波。一个20MHz信道,可以同时服务9个用户(最小RU是26个子载波)。

我画了一张图,帮你理解这个变化:

OFDM (WiFi4/5) 用户A 独占整个信道 OFDMA (WiFi6) 用户A 用户B 用户C 用户D 用户E 子载波组 (Resource Unit, RU) 26-tone RU 52-tone RU 106-tone RU 26-tone 242-tone RU → 更细粒度的资源分配 → 更低的时延

看到没?OFDMA把信道切成了更小的「资源单元」(RU)。每个RU可以分配给不同的用户。这样,小包用户不用等大包用户传完,大家各用各的RU,并行传输。

1.4 WiFi6为什么要改?三个核心原因

好,现在回答标题的问题:WiFi6为什么要从OFDM改成OFDMA?

原因一:提升多用户场景的效率

WiFi6的目标场景是密集部署——商场、机场、智能家居。几十个设备同时在线。OFDM一次只能服务一个,OFDMA一次能服务多个。效率提升是数量级的。

我曾经在客户现场测试过:一个AP下挂30个IoT设备,WiFi5的吞吐掉得惨不忍睹。换成WiFi6,同样的设备,吞吐稳定多了。这就是OFDMA的功劳。

原因二:降低时延

OFDMA让小包不用排队。你发一个传感器数据,几十个字节,OFDMA可以把你塞进一个26-tone的RU里,跟其他用户一起发。时延从几十毫秒降到几毫秒。

避坑指南:我曾经在WiFi6芯片调试时,发现OFDMA的调度算法没写好,导致RU分配不均匀,反而增加了时延。后来加了动态调度,根据每个用户的buffer状态实时调整RU大小,才解决问题。

原因三:更好的频谱利用

OFDMA可以灵活组合RU。比如一个用户需要高吞吐,给他分配242-tone RU(相当于整个20MHz)。另一个用户只发ACK,给26-tone RU就够了。频谱利用率大幅提升。

1.5 OFDMA的关键技术点

OFDMA不是简单地把子载波分一分就完事了。有几个技术难点:

技术点 说明 我的经验
RU分配 AP决定每个用户用哪个RU 调度算法是核心,做不好就白搭
前导码设计 需要让所有用户同步 HE前导码比VHT复杂很多
功率控制 不同RU上的用户功率要平衡 这个坑我踩过,后面章节细讲
信道估计 每个RU都要单独做信道估计 导频密度要够,否则性能差

1.6 一个简单的OFDMA资源分配示例

咱们用伪代码看看OFDMA的RU分配逻辑。这只是示意,实际芯片里的调度器复杂得多。

// OFDMA RU分配伪代码
// 输入:所有用户的buffer状态、信道质量
// 输出:RU分配表

function allocate_ru(users):
    // 按优先级排序
    sort_by_priority(users)
    
    // 总可用RU:20MHz下有9个26-tone RU
    total_ru = 9
    
    for user in users:
        if user.buffer_size < 100 bytes:
            // 小包用户,给最小RU
            assign_ru(user, RU_26TONE)
            total_ru -= 1
        else if user.buffer_size < 1000 bytes:
            // 中等包,给52-tone RU
            assign_ru(user, RU_52TONE)
            total_ru -= 2
        else:
            // 大包用户,给106-tone或更大
            assign_ru(user, RU_106TONE)
            total_ru -= 4
        
        if total_ru <= 0:
            break
    
    // 剩余RU留给下个传输机会
    return ru_allocation_table

嗯,代码很简单,但实际芯片里要考虑的因素多得多。比如信道质量差的用户,要给更多导频子载波;比如不同RU之间的干扰抑制;比如MCS(调制编码方案)的选择。

1.7 小结:OFDMA到底带来了什么?

咱们总结一下:

  • OFDM:一次传一个用户,适合高吞吐、少用户场景
  • OFDMA:一次传多个用户,适合多用户、低时延场景

WiFi6改OFDMA,不是技术炫技,是被现实逼出来的。物联网设备越来越多,每个设备的数据量不大,但数量巨大。OFDM在这种场景下效率太低,不改不行。

注意:OFDMA不是万能的。对于单用户大吞吐场景(比如下载一个大文件),OFDMA的优势不明显。WiFi6保留了OFDM模式,可以动态切换。这个切换逻辑,也是芯片设计的一个难点。

好了,这一章就到这里。OFDMA是WiFi6最核心的改动之一,理解它,后面讲MU-MIMO、资源调度、信道估计就容易多了。

下一章咱们聊聊WiFi6的另一个大招——MU-MIMO。跟OFDMA配合起来,效果更炸裂。


公众号:蓝海资料掘金营,微信deep3321