一、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个子载波)。
我画了一张图,帮你理解这个变化:
看到没?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