wlanHESIGBUserBitRecover

Recover user field bits in HE-SIG-B field

Description

example

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

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

The function also returns failCRC, the result of the cyclic redundancy check (CRC) on bits, 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,failCRC,cfgUpdated] = wlanHESIGBUserBitRecover(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 user field of a WLAN HE MU waveform.

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

cfgHE = wlanHEMUConfig(192);
bits = [1;0;1;1];
waveform = wlanWaveformGenerator(bits,cfgHE);

Extract the L-SIG and HE-SIG-A portions of 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.

rxSIGB = waveform(ind.HESIGB(1):ind.HESIGB(2),:);

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

sigbDemod = wlanHEDemodulate(rxSIGB,'HE-SIG-B',cbw);
sigb = sigbDemod(info.DataIndices,:,:);
[bits,failCRC,cfgUpdated] = wlanHESIGBUserBitRecover(sigb,noiseVarEst,cfg);
disp(bits')
  Columns 1 through 19

   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

  Columns 20 through 21

   0   1
disp(failCRC)
   0

Input Arguments

collapse all

Demodulated and equalized HE-SIG-B symbols, specified as a complex-valued 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.

Data Types: double
Complex Number Support: Yes

Channel 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 user field bits, returned as a 21-by-Nusers binary matrix, where Nusers is the number of users in the transmission. Each column of this argument contains the recovered user field bits for the corresponding user.

Data Types: int8

CRC result for each user, returned as a 1-by-Nusers logical vector, where Nusers is the number of users in the transmission. Each element of this argument represents the result of the CRC for the corresponding user. A value of 1 indicates that the user bits failed the CRC. A value of 0 indicates that the user bits passed the CRC.

Data Types: logical

Updated HE MU transmission parameters recovered from the decoded HE-SIG-B field, returned as a 1-by-Nusers cell array of wlanHERecoveryConfig objects. Nusers is the number of users in the transmission.

Note

The wlanHESIGBUserBitRecover function does not return the updated transmission parameters for users whose FailCRC result is 1.

Data Types: cell

Limitations

The wlanHESIGBUserBitRecover function returns output arguments bits, failCRC, and cfgUpdated only for users in a valid HE-SIG-B content channel. If the function cannot decode an HE-SIG-B content channel, then it does not return any output arguments for users in that content channel. For more information on allocating users across HE-SIG-B content channels in HE MU transmissions, see Multiuser HE Transmission.

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