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-Barker | 11MHz | 11chips | 1 | DBPSK | 1mbps |
DSSS-Barker | 11MHz | 11chips | 2 | DQPSK | 2mbps |
HR-DSSS-CCK | 11MHz | 8chips | 4 | DQPSK | 5.5mbps |
HR-DSSS-CCK | 11MHz | 8chips | 8 | DQPSK | 11mbps |
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相关的几个概念:
Symbol | Explanation | 解释 |
---|---|---|
R | Coding Rate | 码率 |
NSS | Number of spatial streams | 空间流数 |
NSD | Number of complex data numbers per spatial stream per OFDM symbol | 数据子载波个数 |
NSP | Number of pilot values per OFDM symbol | pilot子载波个数 |
NBPSCS(iSS) | Number of coded bits per single carrier for each spatial stream, iSS = 1,…,NSS | 每个空间流中每个单载波的编码比特数 |
NCBPS | Number of coded bits per OFDM symbol | 每个OFDM符号中的编码比特数 |
NDBPS | Number 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速率参考如下表格:
Modulation | Coding 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) |
---|---|---|---|---|---|---|
BPSK | 1/2 | 1 | 48 | 48 | 24 | 6 |
BPSK | 3/4 | 1 | 48 | 48 | 36 | 9 |
QPSK | 1/2 | 2 | 48 | 96 | 48 | 12 |
QPSK | 3/4 | 2 | 48 | 96 | 72 | 18 |
16QAM | 1/2 | 4 | 48 | 192 | 96 | 24 |
16QAM | 3/4 | 4 | 48 | 192 | 144 | 36 |
64QAM | 2/3 | 6 | 48 | 288 | 192 | 48 |
64QAM | 3/4 | 6 | 48 | 288 | 216 | 54 |
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.11ac的部分MCS,摘选自802.11-2020
从上表发现MCS9显示“Not valid”,可以从前一节给出的计算速率的公式中发现原因,MCS9的码率®是5/6,这样算出来NDBPS不是一个整数。
4、802.11ax的速率
802.11ax引入了OFDMA导致复杂度有了一定的提升,先看速率相关的变化。子载波间隔变小使子载波数量进一步提升,进而使每个OFDM符号的时长变长。具体如下表格,摘选自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打开的话会使实际数据子载波变为原来的一半。
部分MCS信息,摘自802.11ax