wlanHESIGBCommonBitRecover

Recover common field bits in HE-SIG-B field

Description

example

[bits,status,cfgUpdated] = wlanHESIGBCommonBitRecover(sym,noiseVarEst,cfg) recovers bits, the HE-SIG-B common field bits in an IEEE® 802.11ax™ high-efficiency multiuser (HE MU) transmission.

The function recovers bits from sym, the demodulated and equalized HE-SIG-B common field symbols. The cfg input parameterizes the transmission, which is subject to channel noise with estimated variance noiseVarEst.

The function also returns status, the result of content channel decoding, and cfgUpdated, the updated transmission parameters recovered from the decoded HE-SIG-B field.

For more information on 802.11ax signal recovery, see the 802.11ax Signal Recovery with Preamble Decoding example.

[bits,status,cfgUpdated] = wlanHESIGBCommonBitRecover(sym,noiseVarEst,csi,cfg) also enhances the demapping of orthogonal frequency-division multiplexing (OFDM) subcarriers by using channel state information csi.

Examples

collapse all

Recover the information bits in the HE-SIG-B common field of a WLAN HE MU waveform.

Generate an HE MU waveform for the specified information bits and HE-MU-format configuration object.

AllocationIndex = 192;
cfgHE = wlanHEMUConfig(AllocationIndex,'SIGBCompression',false);
bits = [1;0];
waveform = wlanWaveformGenerator(bits,cfgHE);

Extract the L-SIG and HE-SIG-A portions from the waveform.

ind = wlanFieldIndices(cfgHE);
rxLSIG = waveform(ind.LSIG(1):ind.LSIG(2),:);
rxSIGA = waveform(ind.HESIGA(1):ind.HESIGA(2),:);

Create an HE recovery configuration object for an HE-MU-format packet, specifying the channel bandwidth and packet format.

cbw = cfgHE.ChannelBandwidth;
cfgRecovery = wlanHERecoveryConfig('ChannelBandwidth',cbw,'PacketFormat','HE-MU');

Perform orthogonal frequency-division multiplexing (OFDM) demodulation to extract the L-SIG and HE-SIG-A fields, assuming no channel noise.

noiseVarEst = 0;
info = wlanHEOFDMInfo('L-SIG',cbw);
lsigDemod = wlanHEDemodulate(rxLSIG,'L-SIG',cbw);
sigaDemod = wlanHEDemodulate(rxSIGA,'HE-SIG-A',cbw);
[~,~,lsigInfo] = wlanLSIGBitRecover(lsigDemod(info.DataIndices,:),noiseVarEst);
cfgRecovery.LSIGLength = lsigInfo.Length;
siga = wlanHESIGABitRecover(sigaDemod(info.DataIndices,:),noiseVarEst);

Update the HE recovery configuration object with the HE-SIG-A information bits.

cfg = interpretHESIGABits(cfgRecovery,siga);

Extract the HE-SIG-B field.

s = getSIGBLength(cfg);
rxSIGB = waveform(ind.HESIGA(2)+(1:s.NumSIGBCommonFieldSamples),:);

Demodulate and decode the HE-SIG-B common field, displaying the result.

sigbDemod = wlanHEDemodulate(rxSIGB,'HE-SIG-B',cbw);
sigb = sigbDemod(info.DataIndices,:,:);
[bits,status,cfgUpdated] = wlanHESIGBCommonBitRecover(sigb,noiseVarEst,cfg);
disp(bits')
   0   0   0   0   0   0   1   1   0   0   0   0   0   0   0   0   0   0
disp(status)
Success

Input Arguments

collapse all

Demodulated and equalized HE-SIG-B symbols, specified as a complex-valued column vector. The length of the vector is equal to the number of active subcarriers, which depends on the channel bandwidth of the transmission.

  • If the channel bandwidth is 20 MHz, specify this argument as a 52-by-1 vector.

  • If the channel bandwidth is 40 MHz, 80 MHz, or 160 MHz, specify this argument as a 104-by-1 vector. This vector must contain the combined 20 MHz subchannel repetitions.

The ChannelBandwidth property of the cfg input determines the channel bandwidth.

Data Types: double
Complex Number Support: Yes

Noise variance estimate, specified as a nonnegative scalar.

Data Types: double

HE MU transmission parameters, specified as a wlanHERecoveryConfig object.

Channel state information, specified as an NSD-by-1 real-valued vector, where NSD is the number of data subcarriers in the HE-SIG-B field.

Data Types: double

Output Arguments

collapse all

Recovered HE-SIG-B common field bits for each content channel of the HE-SIG-B field, returned as a binary column vector or matrix. The size of this output depends on the channel bandwidth of the transmission according to this table.

Channel Bandwidth/MHzSize of bits
2018-by-1
4018-by-2
8027-by-2
16043-by-2

Data Types: int8

Result of content channel decoding, returned as one of these values.

  • 'Success' – All content channels passed the cyclic redundancy check (CRC).

  • 'ContentChannel1Fail' – Content channel 1 failed the CRC, and the number of HE-SIG-B symbols signaled in the HE-SIG-A field is less than 16.

  • 'ContentChannel2Fail' – Content channel 2 failed the CRC, and the number of HE-SIG-B symbols signaled in the HE-SIG-A field is less than 16.

  • 'UnknownNumUsersContentChannel1' – Content channel 1 failed the CRC, and the number of HE-SIG-B symbols signaled in the HE-SIG-B field is 16.

  • 'UnknownNumUsersContentChannel2' – Content channel 2 failed the CRC, and the number of HE-SIG-B symbols signaled in the HE-SIG-B field is 16.

  • 'AllContentChannelCRCFail' – All content channels failed the CRC.

If the number of HE-SIG-B symbols signaled in the HE-SIG-A field is less than 16 and any content channel fails the CRC, the HE-SIG-A field determines the length of the HE-SIG-B field. If the number of HE-SIG-B symbols signaled in the HE-SIG-A field is 16 and any content channel fails the CRC, the length of the HE-SIG-B field is undetermined.

Data Types: char

Updated HE MU transmission parameters recovered from the decoded HE-SIG-B field, returned as a wlanHERecoveryConfig object.

References

[1] IEEE Std 802.11™– 2016. “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications." IEEE Standard for Information Technology – Telecommunications and information exchange between systems – Local and metropolitan area networks – Specific requirements.

[2] IEEE P802.11ax/D3.1 “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 6: Enhancements for High Efficiency WLAN." Draft Standard for Information Technology – Telecommunications and information exchange between systems – Local and metropolitan area networks – Specific requirements.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Introduced in R2019b