PHY TX/RX Pipeline 与 Vector¶
TXVECTOR/RXVECTOR 是 MAC 与 PHY 的工程契约。它们不是一个“速率字段”,而是一组足以唯一解释 PPDU 的参数与结果。
TX Pipeline¶
flowchart LR
PSDU --> SCR[Scramble]
SCR --> FEC[BCC/LDPC]
FEC --> INT[Interleave / parse]
INT --> MAP[QAM mapping]
MAP --> RU[RU/subcarrier + pilot]
RU --> IFFT[IFFT + GI]
IFFT --> DFE[Digital front end]
DFE --> DAC[DAC / RF / PA]
TXVECTOR 应明确 PPDU type、bandwidth、MCS、NSS、GI/LTF、coding、STBC/DCM、beamforming、RU/user allocation、PSDU length或duration、TX power 与 puncturing。Hardware MAC 生成/选择参数,PHY 验证组合合法性;非法 Vector 要产生可定位 reason,而不是静默修正。
RX Pipeline¶
RF/ADC 后先做 Packet Detect 与 AGC,再利用 Preamble/LTF 完成 timing、CFO/SFO 和 channel estimation。SIG 字段决定后续解调参数;其中 HE-SIG-B 是 HE MU 专属信令之一,不应把它写成所有 HE PPDU 的公共步骤。
Energy/correlation detect
→ AGC convergence
→ coarse/fine timing + CFO
→ L-SIG / HE-SIG decode
→ RU/user selection
→ FFT/equalization/pilot tracking
→ soft demap + FEC decode
→ descramble → PSDU
PHY 输出 PSDU 给 MAC;MPDU/A-MPDU 的解析属于 MAC 语义。RXVECTOR 则报告 PPDU type、MCS/NSS/GI/LTF、RU、coding、RSSI/SNR/EVM、timestamp 和 PHY reason。
失败分层¶
| 最后成功点 | 可能问题 | 关键观测 |
|---|---|---|
| Energy detect | 灵敏度、干扰、门限 | noise floor、gain、false alarm |
| Preamble detect | AGC/CFO/相关 | AGC settle、CFO estimate |
| SIG decode | 格式/信道估计 | SIG CRC、LTF、unsupported vector |
| FEC decode | SNR/EVM/MCS | decoder iterations、codeword error |
| PSDU 输出 | MAC FCS/格式 | SIG 校验、译码状态与逐 MPDU FCS 边界 |
“RX FCS 高”不能直接推出 RF 差;错误可能来自干扰、CFO、channel estimation、过高 MCS,甚至 DMA/内存损坏。用 conducted reference、loopback 和已知 Vector 分层排除。
HE TB 的特殊挑战¶
AP 同时接收多个 STA 的 RU,每个用户存在独立 CFO、timing 与到达功率。Trigger 的 target RSSI、UL length 和参数约束帮助接收机对齐;调试应按 user/RU 输出 detect、SIG/FEC/FCS 结果,而不是只给整包成功失败。
Vector是跨层参数,不必等于某个C结构体¶
IEEE中的服务参数、Firmware命令、Hardware寄存器以及RX diagnostic metadata可以对应同一信息,但格式和有效时间不同。文章中的Vector指这一组契约,不能把所有RSSI/EVM字段都称作标准强制RXVECTOR字段。
在TX开始前验证format/BW/MCS/NSS/GI/LTF/coding/RU组合;PHY拒绝的原因要回传,避免Host仍将其计为air attempt。RX则应标明每个字段什么时候有效,例如SIG失败时MCS可能没有可信值。
OFDM数值关系¶
HE常用有效symbol时长12.8 μs,对应子载波间隔78.125 kHz;加GI后才是数据symbol周期。采样率20 MHz、256-point FFT的模型也给出 20 MHz/256=78.125 kHz。
这不是说256个tone都传数据;DC、guard、pilot与RU分配减少有效承载。普通242-tone RU的数据tone数为234,具体可用 wlanHEOFDMInfo 检查配置。
数据率近似 Ndata × bits_per_subcarrier × code_rate × NSS / Tsymbol。DCM、STBC、FEC padding与format限制需另外处理。EHT不能不加核对直接沿用HE参数表。
PHY流水线的两个反馈环¶
同步/AGC在前导码内尽快收敛;后续pilot tracking纠正随symbol积累的相位/采样偏差。信道估计决定equalizer,noise estimate影响soft demap的LLR尺度,LLR质量又影响FEC迭代与成功率。
因此“decoder failure”只是最后失败点,可能源自AGC clipping、CFO、timing或channel estimate。抓到错误率后应检查前级质量,而不是直接加大LDPC iteration。
PHY和MAC校验边界¶
部分SIG字段有各自的校验/校验位;MAC MPDU有FCS。不能把整个PSDU想象成拥有统一的“PHY CRC”。当A-MPDU中某MPDU FCS失败,要保留其边界和RX状态,区分信道解码错误与后续内存损坏。
对于HE TB,多用户共用部分格式信息并按用户恢复数据,不能期待每个用户都独立携带HE-SIG-B。AP Trigger上下文也是解释接收参数的一部分。
Golden Vector对照¶
固定payload、scrambler seed、format、RU/MCS/NSS/GI和channel impairment,比较各级bit/LLR/符号及最终MPDU。定点模型还需记录位宽、舍入、饱和、缩放,禁止仅凭两张星座图视觉相似验收。
参考:MathWorks Packet Recovery。仿真调用演示算法阶段,不等同于真实芯片处理延迟或硬件模块划分。
复习追问与答案¶
提高FFT点数必然增加数据率吗? 不,采样率、子载波间隔、GI、有效tone和编码共同决定。
为何SIG成功但数据失败? 训练/信令与payload使用的调制编码、长度和接收裕量不同,后续跟踪也可能失效。
看RXVECTOR先看什么? 先看valid/error与format,再解释其余字段,避免使用无效MCS/RSSI。