802.11速率详解

news/2024/11/22 12:36:03/

0、序

802.11协议发展过程中定义了很多种速率,比如1mbps/65mbps等等,不同协议版本的速率都有差异,这些速率数值都是怎么计算出来的?芯片在发送数据的时候到底该选择什么速率来发送呢?本次先探讨前半部分,下一次再探讨后半部分。

1、802.11/802.11b的速率

802.11/802.11b定义了两种物理层标准,分别是FHSS( Frequency-Hopping SpreadSpectrum,跳频扩频技术)和DSSS( Direct Sequence Spread Spectrum,直接序列扩频技术)。

1.1、FHSS

FHSS定义了1mbps和2mbps两个物理层速率,目前该技术已经被IEEE802.11废弃,标准文档里面早已看不到它的身影了。FHSS采用伪随机跳频序列在发送的过程中不停地变换通信频率,收发双方遵守相同的跳频规则跳到相同的频率上进行数据的收发。跳频不仅可以提升自身的抗干扰性,同时对周围环境也不会产生持续的干扰。但是每个事物都有双面性,跳频也存在不足之处,虽然跳频使用的带宽很大,但是在任意时刻发送数据所使用的带宽却很小,因此限制了无线通信的吞吐量。
虽然在IEEE802.11里面已经不再使用跳频技术了,但是跳频技术依然是蓝牙物理层的技术,蓝牙未来的发展趋势是低功耗但对带宽要求却相对不高。

1.2、DSSS

扩频是指将发送的信号用伪随即编码进行调制并最终扩展到更大的带宽上进行传输。最开始DSSS采用Barker码,速率也只有1mbps和2mbps。802.11b对DSSS-Barker进行了增强,提出了HR-DSSS(High Rate - Direct Sequence Spread Spectrum)采用CCK编码方式,速率达到了5.5mbps和11mbps。
优势是自身抗干扰性强容易被接收,但是不足之处是发送效率较低。
目前Beacon帧速率都采用1mbps速率发送,原因就是Beacon帧是个非常重要广播帧,要同时保证抗干扰和版本兼容性。
DSSS的基本单位是chip,DSSS和HR-DSSS的chip速率都是11MHz。DSSS采用11-chip Barker码,一个符号是11 chips默认发送1bit,调制方式有DBPSK和DQPSK,速率分别是1mbps和2mbps。HR-DSSS的一个符号是8chips,均采用DQPSK调制,一个符号可以传输4bits和8bits,速率分别是5.5mbps和11mbps。

物理层技术chip rate每个符号长度每个符号发送bit数调制方式速率
DSSS-Barker11MHz11chips1DBPSK1mbps
DSSS-Barker11MHz11chips2DQPSK2mbps
HR-DSSS-CCK11MHz8chips4DQPSK5.5mbps
HR-DSSS-CCK11MHz8chips8DQPSK11mbps

2、802.11a/g的速率

从802.11a就已经开始使用 OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用),OFDM的基本原理是把无线信道划分成若干个正交的子信道,在每个子信道上使用一个正交的子载波进行传输,各个子信道的传输可以并行进行。这钟方式提升了频谱利用率,同时也能够实现多用户同时接入。由于把高速数据流分散到各个子信道上进行传输,这样每个子信道就变成低速数据流,提升了系统健壮性。
802.11a/g新增以下几种速率:6mbps/9mbps/12mbps/18mbps/24mbps/36mbps/48mbps/54mbps,其中6mbps/12mbps/24mbps是需要强制支持的。这些速率都是怎么得来的?先看看跟OFDM相关的几个概念:

SymbolExplanation解释
RCoding Rate码率
NSSNumber of spatial streams空间流数
NSDNumber of complex data numbers per spatial stream per OFDM symbol数据子载波个数
NSPNumber of pilot values per OFDM symbolpilot子载波个数
NBPSCS(iSS)Number of coded bits per single carrier for each spatial stream, iSS = 1,…,NSS每个空间流中每个单载波的编码比特数
NCBPSNumber of coded bits per OFDM symbol每个OFDM符号中的编码比特数
NDBPSNumber of data bits per OFDM symbol每个OFDM符号中的编码数据比特数

每个OFDM符号分成了数据子载波和pilot子载波,每个子载波上会编码一定的比特数,那么每个OFDM符号一共编码的数据比特数为:
NDBPS = NCBPS x R = NSD x NBPSCS x R
802.11a/g中每个OFDM符号一共有52个子载波,其中48个数据子载波,4个pilot子载波。
每个OFDM符号持续的时长TSIGNAL为4us(3.2us符号时长,0.8us的GI),那么最终计算出来的速率为:
DataRate = NDBPS / TSIGNAL
802.11a/g速率参考如下表格:

ModulationCoding rate ( R )Coded bits per subcarrier (NBPSC)subcarriers per OFDM symbol (NSD)Coded bits per OFDM symbol (NCBPS)Data bits per OFDM symbol (NDBPS)Data rate (Mb/s) (20 MHz channel spacing)
BPSK1/214848246
BPSK3/414848369
QPSK1/2248964812
QPSK3/4248967218
16QAM1/24481929624
16QAM3/444819214436
64QAM2/364828819248
64QAM3/464828821654

3、802.11n/ac的速率

802.11n/ac在子载波数目上多了4个,达到了56个子载波,其中52个数据子载波,4个pilot子载波,同时支持5/6码率,速率要比802.11a/g高一些,MCS的概念就是从这里开始使用。
下面是802.11n的MCS,摘选自802.11-2020
802.11n HT MCS
下面是802.11ac的部分MCS,摘选自802.11-2020
802.11ac VHT-MCS
从上表发现MCS9显示“Not valid”,可以从前一节给出的计算速率的公式中发现原因,MCS9的码率®是5/6,这样算出来NDBPS不是一个整数。

4、802.11ax的速率

802.11ax引入了OFDMA导致复杂度有了一定的提升,先看速率相关的变化。子载波间隔变小使子载波数量进一步提升,进而使每个OFDM符号的时长变长。具体如下表格,摘选自802.11ax
802.11ax
子载波间隔由312.5KHz减小到78.125KHz,OFDM符号数据时长由3.2us变成12.8us,同时支持三种GI,相应地OFDM符号长度也有三种:13.6us/14.4us/16us。
下图摘自802.11ax,20MHz的总子载波达到了242个,其中pilot子载波8个,数据子载波234个,但是由于802.11ax引入了DCM机制导致实际的数据子载波个数不一样,DCM打开的话会使实际数据子载波变为原来的一半。
802.11ax不同带宽的子载波个数
部分MCS信息,摘自802.11ax
802.11ax MCS


http://www.ppmy.cn/news/740697.html

相关文章

电信10兆指的是多少Mbps

一般电信10兆(10Mbps)指的是:下载速度最大在1.25MB/s 1Mbps(兆位/秒) 0.125MB/S(兆字节/秒) 8Mbps(兆位/秒) 1MB/S(兆字节/秒)…

UDP大块数据传输测试

前一阵子我对UDP传输大块数据方面做了一些尝试,在本文中总结了一些失败的教训。 对于本文所述“大块数据”,我定义为大小在数MB至数GB之间的数据块。数据可以在内存里,也可以来自文件。 方案1:逐包请求 此方案采用逐包请求模式&…

什么是提示词工程师?

前言 你可能听说过人工智能模型,但你是否知道,背后的神奇之处源自于那些执着于提示设计和优化的专业人员?提示词工程师是引导我们与机器对话的幕后英雄,他们通过精心构造的提示,让模型理解我们的意图、解答问题&#…

如何找到jdk的安装路径

在开始那里找到jdk 然后打开文件所在位置 这是快捷方式 然后右键 打开文件所在的位置(第三个选项) (这个截不了图) 再往回退一格,就是jdk安装路径了。

如何查看jdk安装路径

1.开始–点击运行(或者搜索),输入:cmd 2.然后在命令提示符中,输入:java -version查看安装的jdk版本号 假如看到有版本提示那么安装成功 3.如果忘记了java jdk的安装路径,可在命令提示符中输入:java -verb…

如何查找jdk安装目录

如何查找jdk安装目录 1.右击鼠标–>属性–>控制面板主页(打开控制面板) 2.程序–>右击java–>打开–>查看(可看到jdk安装路径)

怎么看jdk的安装路径

首先,先来说下第一种情况。已经安装好了jdk,也配置了环境变量,这种情况下,查看jdk路径是很容易的。 在window环境下,我们先执行java -version 指令查看是否已经配置过java了,如果查到java版本则证明已经安…

Windows 查看本机JDK安装路径

先输入 java -version 查询java版本,确定是否安装 再输入 java -verbose 最后最有一行即为安装路径