众所周知通信标准主要规定发射端的格式,至于怎么接收和解调是看各厂自己的本事。从WiFi6开始,协议开始从数据填充机制和信号格式进行设计,以允许接收机有合理的解码延迟,保证解码性能和足够时间进行后续操作。
这可能是WiFi协议较为特有的现象。不像移动通信系统,比如LTE,接收机给发射机的ACK被调度在4ms之后,接收机可以在4ms期间内从容解码并准备ACK。WiFi协议并不像移动通信那样有集中式控制,其分布式的设计哲学要求接收机在极短的SIFS时间(10us或16us)内就要把ACK发出来,即要求接收机解码和解析延迟非常小。
从本系列前几篇文可知,如果发送的有效数据大小合适,它会恰好占满WiFi包的最后一个OFDM符号(车厢)。此时接收机的Viterbi解码器需要一直工作到最后一个OFDM符号内的最后一个bit。
根据Viterbi解码器原理,由于回朔长度(trace back length)的存在,输出bit存在一定的延迟。减小回朔长度可以降低这个解码延迟,但误码率会增大。误码率和解码延迟是一对矛盾。
WiFi6为了使接收机可以从容解码并进行后续处理,同时又不想改动已经存在了20多年的SIFS等关键MAC层参数,在标准中做了如下改进:
1. 卷积编码前的填充bit和6个0的尾bit不再像之前一样总是试图填满最后一个OFDM符号的最后一个bit,而是根据有效数据长度填至4个规定容量:最后一个OFDM符号的1/4,2/4,3/4,4/4子载波处。即解码器可以终止在最后一个OFDM符号的1/4,2/4,3/4,4/4子载波处,而不是必须工作完所有子载波。
可当填充在4/4处时不还是全部子载波吗?这时留给接收机的时间还是捉急啊。别急,还有第二个手段:包扩展(packet extension)
2. 根据最后一个OFDM符号有多满(1/4,2/4,3/4,4/4),在WiFi包之后继续发一些和WiFi包等功率的噪声信号(0/4/8/12/16us)。这样正在监听信道的其他节点以为包还没有发完,而正在解码这个包的节点在这个真正的WiFi包之后的噪声期间获得了更多的处理时间。
以上就是WiFi6中更为复杂的填充bit和解码终止位置的基本情况。
==============前方硬核,非技术人员尽快撤离。===============
举例:802.11ax,20MHz带宽,SU PPDU,单天线,RU大小242 tone(子载波),MCS 7(64QAM,5/6码率)
242 tone其中8个为导频子载波,剩下234个数据子载波。64QAM情况下,每个数据子载波承载6个编码后bit,即总共N\_CBPS=234*6=1404个编码后bit。5/6编码意味着编码前为N\_DBPS=1404*5/6=1170 bit。
标准中规定对于这种234个子载波(可承载234个QAM符号)的情况,每隔60个QAM符号为一个OFDM符号内的“4等分点”。即第60、120、180、234个QAM符号处即此OFDM符号的1/4、2/4、3/4和4/4子载波处。对应的编码后bit数分别为6*(60、120、180、234)=360、720、1080、1404,编码前bit数分别为(5/6)*6*(60、120、180、234)=300、600、900、1170。
假设要传输的AMPDU长度APEP_LENGTH=1500字节(不包括最后的EOF pading域,参见:WiFi芯片的维密(6)WiFi5时代物理层接收机Viterbi译码终止方法 - 纸飞机的文章 - 知乎https://aijishu.com/a/1060000000346165)。则进入最后一个OFDM符号的剩余有效数据数:N_excess=322 bit(16+8*1500+6-10*1170),前10个OFDM符号都满载1170个数据bit,第11个OFDM符号包含322个数据bit(等待进入编码器)。322 bit意味着它已超过1/4处(300编码前bit),填充目标设定为最接近的下一个,即2/4处,即600编码前bit。
对于这最后一个(第11个)OFDM符号,编码前填充目标为600 bit,其中包含N\_excess=322个数据bit,意味着还需要填充600-322=278 bit。278 bit包含34个整数字节(272个bit),34字节即是AMPDU的APEP\_LENGTH之后的EOF padding域所需要的构建的长度,因为MAC只负责填充整数字节。还剩278-272=6个bit需要PHY来填充。
当卷积码编码器把最后一个OFDM符号内的600个数据bit(含填充和6个0的尾bit)编码为720个编码bit,并映射为120个64QAM符号后,只能生成120个tones/子载波,还需要随机生成114个64QAM符号以凑成完整OFDM符号所需的234个tones/子载波。此即after FEC padding(编码后填充)。由于这些编码后填充已经与编码器无关,将来在接收机也不能(无需)输入解码器。
接下来就是决定这个WiFi包最后一个OFDM符号之后跟着发多长的噪声信号,即包扩展(packet extension),来假装这个WiFi包还没完。
首先允许一些牛b的厂家的高性能接收机不使用这个选项,即扩展为0。即使最后一个OFDM符号全填满有效数据,那些高性能接收机依然可以及时完成工作。因此PE属于芯片能力的一部分(当然芯片能力不止PE,包括非常多的参数)。在WiFi节点和其他节点通信之初,会互相报告芯片能力,决定发给对方时选用何种包扩展长度。
在WiFi6中,提供了一下包扩展(PE)能力/选项供选择:
a=1、2、3、4行分别代表最后一个OFDM符号填充至1/4、2/4、3/4、4/4时。
0us那一列即表示扩展始终为0。
8us那一列表示当填充至1/4、2/4时包扩展为0us,填充至3/4时发送4us的噪声扩展信号,填充至4/4时发送8us的噪声扩展信号。
16us那一列则为从前到后4种填充位置分别添加4、8、12、16us噪声扩展信号。
总的原则是:最后一个OFDM符号填的越满,则扩展信号越长,留给对方接收机的解码和后续处理时间越多。
作者: 纸飞机
原文链接:知乎
推荐阅读
- WiFi芯片的维密(6)WiFi5时代物理层接收机Viterbi译码终止方法
- WiFi芯片的维密(5)协议套娃 MSDU,A-MSDU,MPDU……
- WiFi芯片的维密(4)WiFi5时代MAC和PHY的甩锅之战4
- WiFi芯片的维密(3)为何有时WiFi速度那么慢!
更多IC设计技术干货请关注开源芯片/FPGA设计技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。