openwifi · 2022年08月11日 · 北京市

WiFi芯片的维密(6)WiFi5时代物理层接收机Viterbi译码终止方法

这里接着讨论上一篇https://aijishu.com/a/1060000000345599的两个遗留问题:

  1. 为何自802.11ac开始PHY变成先Pad(0~7bit)最后加6个0 bit,而不是之前的先加6个0 bit再Pad 若干bit?
  2. 802.11ac中,接收机的Viterbi解码器如何知道何时停止工作?

第一个问题的答案是可以使发射机加扰器的操作更简单。

考虑802.11a/g/n的情况,16+N+6+N_pad个bit送入卷积编码器之前需要经过加扰器(https://aijishu.com/a/1060000000344966)。经过加扰器后6个0不再是0,所以协议要求在送入编码器之前还要把已经被加扰为非0的6个bit重新“硬生生”变回0(否则达不到使编码器回到0状态目的)。也就是说,加扰器需要在加扰完有用数据即将加扰6个0的时刻,故意不对这6个0进行加扰,当这6个0过后,继续对后续N_pad个bit正常加扰(保证没有连续0或者1)。听着就心累。

自802.11ac开始,加扰器可以连续运作,因为它知道6个0 bit一定在最后(即上图),且不用加扰,而不用考虑在中间某个地方跳过6个bit。

802.11ac也开始引入多用户并行传输,即MU-MIMO。多用户即意味着发射机多个编码器需要进行归零(tail)操作,由于每个用户的有效数据长度、MCS(数据率)等都可能不同,只在最后加6个0 bit也会大大方便针对每个用户的加扰器操作,而无需关心每个用户有效数据长度。这是因为多个用户通过MU方式共享一个MIMO数据包内时,他们一定拥有同样多的OFDM符号(车厢)数量。无论针对哪个用户,加扰器只需要一股脑运行至OFDM符号可承载的最后一个bit(即上图中4*N\_DBPS bit,MU情况下每个用户N\_DBPS不同),然后将最后6个bit置0即可。

再来看第二个问题:接收机Viterbi解码器如何终止?这里有两个选择。

第一个选择:跑完所有OFDM符号可承载的全部bit(图中4*N_DBPS bit)后终止。因为6个0bit本身就在最后,因此解码器跑到最后时假设编码器回零是对的,此假设可提高解码可靠性( WiFi芯片的维密(1)https://aijishu.com/a/1060000000344477)。而且跑到最后也可以使之前的bit有最大的判决回溯长度,这也可进一步提高解码可靠性。缺点是在有效数据没有那么多时(AMPDU中有较多填充bit时),可能进行了无效的有效数据之后的解码,增大了解码延迟和功耗。

第二个选择:根据AMPDU帧结构的“长度自解释”性,跟踪有效数据何时结束,在有效数据结束时终止解码。在有效数据AMPDU较短(较多填充bit)可以降低解码延迟和功耗。但这里的问题是发射机在有效数据结束时并非立刻填6个0,而是先填充随机bit,最后才是6个0,因此有效数据可能结束在编码器的任意状态,此时解码可靠性就不如终止在0状态(6个0的tail bit)。好在有效数据内部自带CRC校验,如果有效数据结束且CRC校验是对的,终止解码就没问题了。否则可以尝试继续运行解码器,提高有效数据尾部几个bit的解码可靠性,看何时CRC校验可以变对。最差情况就跑到最后6个0bit的地方(图中4*N_DBPS bit)。显然,当有效数据恰好(几乎)填满所有OFDM符号(车厢)时,是不得不解码到最后的。因此第一种选择也是第二种选择里可能出现的最极端情况,接收机必须支持解码到最后这种极端情况下的的延迟和功耗。

关于有效数据AMPDU的“长度自解释”和CRC校验,可参考标准中的Frame formats --> Aggregate MPDU (A-MPDU)章节。这里将相关内容整理至一张图。

从上图可知,AMPDU是由一个个的子帧subframe(绿色)组成,最后还有一个帧结束EOF域(紫色)。EOF域和子帧的结构都是开头一个分隔符delimiter(蓝色),然后是MPDU(红色,分隔符里的长度域为0时则不存在 -- EOF域即如此,EOF域也可包含0个子帧),最后是填充域,填充至4字节整数倍。

分隔符delimiter(蓝色)里有其后的MPDU长度以及一些其他标识,还有分隔符本身的CRC,CRC之后还有分隔符的签名序列(独特字),供接收机查找定位分隔符和MPDU起始位置。

MPDU(红色),根据MPDU类型(数据、管理、控制)它有不同定义的MAC头结构,后面是数据内容(frame body),最后是FCS也就是此MPDU的CRC校验。

可见有了以上AMPDU的结构,每个MPDU的起始位置和长度都是通过分隔符delimiter可解析的,而且每个MPDU 都带CRC校验,供接收机决定是否可终止Viterbi解码。

至于为何AMPDU填充至4字节整数倍,是因为802.11ac的“火车头”VHT-SIG-B里的长度域APEP_LENGTH( WiFi芯片的维密(4)WiFi5时代MAC和PHY的甩锅之战https://aijishu.com/a/1060000000345599)是以4字节为单位的,而不是传统的以字节为单位。因为ac可适配更多字节在一个WiFi包里(更大MIMO和带宽,更高吞吐),需要扩展包长范围(相较11n)。长度域以4字节为单位,意味着相同长度域bit数情况下可表示长度范围已增大为原来(以字节为单位时)的4倍,可以避免“火车头”里的长度域bit开销变大。“火车头”里的信息都很关键,寸土寸金。

作者: 纸飞机
原文链接:知乎

推荐阅读

更多IC设计技术干货请关注开源芯片/FPGA设计技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
2177
内容数
35
开源Wi-Fi芯片openwifi项目相关技术进展,欢迎加入
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息