Main Content

interpretHESIGBUserBits

Update HE MU transmission parameters with HE-SIG-B user field bits

Description

user = interpretHESIGBUserBits(cfg,bits,failCRC) updates high-efficiency multi-user (HE MU) transmission parameters cfg by interpreting recovered HE-SIG-B user field bits. The function populates the properties of cfg that are relevant to the HE-SIG-B user field and returns updated HE MU transmission parameters user, a cell array of wlanHERecoveryConfig objects. If you use this syntax and the function cannot interpret the recovered HE-SIG-B user field bits, the function does not return an output and issues an error message.

example

[user,failInterpretation] = interpretHESIGBUserBits(cfg,bits,failCRC) returns the result of HE-SIG-B user field interpretation. If you use this syntax and the function cannot interpret the recovered HE-SIG-B user field bits for the kth user, the function returns the kth element of the failInterpretation output as 1 and does not return the kth element of the user output.

Examples

collapse all

Update a WLAN HE recovery configuration object by interpreting recovered HE-SIG-A and HE-SIG-B information bits.

Generate HE MU Waveform

Create a WLAN HE MU configuration object, setting the allocation index to 0.

cfgHEMU = wlanHEMUConfig(0);

Generate a WLAN waveform and PPDU field indices for the specified configuration.

waveform = wlanWaveformGenerator(1,cfgHEMU);
ind = wlanFieldIndices(cfgHEMU);

Recover L-SIG Bits

Create a WLAN recovery configuration object, specifying an HE MU packet format and the length of the L-SIG field.

cfg = wlanHERecoveryConfig('PacketFormat','HE-MU','ChannelBandwidth','CBW20');

Decode the L-SIG field and obtain the orthogonal frequency-division multiplexing (OFDM) information. The recovery configuration object requires this information to obtain the L-SIG length.

lsig = waveform(ind.LSIG(1):ind.LSIG(2));
lsigDemod = wlanHEDemodulate(lsig,'L-SIG',cfg.ChannelBandwidth);
info = wlanHEOFDMInfo('L-SIG',cfg.ChannelBandwidth);
lsigDemod = lsigDemod(info.DataIndices,:);

Recover the L-SIG bits and related information, making sure that the bits pass the parity check, and update the recovery configuration object with the L-SIG length. For this example we assume a noiseless channel. For more realistic results you can pass the waveform through an 802.11ax™ channel model by using the wlanTGaxChannel System object™ and work with the received waveform.

csi = ones(52,1);
[lsigBits,failCheck,lsigInfo] = wlanLSIGBitRecover(lsigDemod,0,csi);
cfg.LSIGLength = lsigInfo.Length;

Update Recovery Configuration Object with HE-SIG-A Bits

Decode the HE-SIG-A field and recover the HE-SIG-A bits, ensuring that the bits pass the cyclic redundancy check (CRC).

siga = waveform(ind.HESIGA(1):ind.HESIGA(2));
sigaDemod = wlanHEDemodulate(siga,'HE-SIG-A',cfg.ChannelBandwidth);
sigaDemod = sigaDemod(info.DataIndices,:);
[sigaBits,failCRC] = wlanHESIGABitRecover(sigaDemod,0,csi);
disp(failCRC)
   0

Update the recovery configuration object with the recovered HE-SIG-A bits. Display the updated object. A property value of -1 or 'Unknown' indicates an unknown or undefined property, which can be updated after decoding the HE-SIG-B common and user fields of the HE MU packet.

[cfg,failInterpretation] = interpretHESIGABits(cfg,sigaBits)
cfg = 
  wlanHERecoveryConfig with properties:

                    PacketFormat: 'HE-MU'
                ChannelBandwidth: 'CBW20'
                      LSIGLength: 878
                 SIGBCompression: 0
                         SIGBMCS: 0
                         SIGBDCM: 0
          NumSIGBSymbolsSignaled: 10
                            STBC: 0
                 LDPCExtraSymbol: 1
             PreFECPaddingFactor: 1
                  PEDisambiguity: 0
                   GuardInterval: 3.2000
                       HELTFType: 4
                 NumHELTFSymbols: 1
                UplinkIndication: 0
                        BSSColor: 0
                    SpatialReuse: 0
                    TXOPDuration: 127
                     HighDoppler: 0
                 AllocationIndex: -1
       NumUsersPerContentChannel: -1
         RUTotalSpaceTimeStreams: -1
                          RUSize: -1
                         RUIndex: -1
                           STAID: -1
                             MCS: -1
                             DCM: -1
                   ChannelCoding: 'Unknown'
                     Beamforming: -1
             NumSpaceTimeStreams: -1
    SpaceTimeStreamStartingIndex: -1

failInterpretation = logical
   0

Update Recovery Configuration Object with HE-SIG-B Common Field Bits

Decode the HE-SIG-B common field, ensuring that all content channels pass the CRC.

len = getSIGBLength(cfg);
sigbCommon = waveform(double(ind.HESIGA(2))+(1:len.NumSIGBCommonFieldSamples),:);
sigbCommonDemod = wlanHEDemodulate(sigbCommon,'HE-SIG-B',cfgHEMU.ChannelBandwidth);
sigbCommonDemod = sigbCommonDemod(info.DataIndices);
[sigbCommonBits,status,~] = wlanHESIGBCommonBitRecover(sigbCommonDemod,0,csi,cfg);
disp(status)
Success

Update the recovery configuration object with the recovered HE-SIG-B common field bits and display the updated object. A field returned as -1 or 'Unknown' indicates an unknown or undefined property value, which can be updated after decoding the HE-SIG-B user field of the HE MU packet.

[cfg,failInterpretation] = interpretHESIGBCommonBits(cfg,sigbCommonBits,status)
cfg = 
  wlanHERecoveryConfig with properties:

                    PacketFormat: 'HE-MU'
                ChannelBandwidth: 'CBW20'
                      LSIGLength: 878
                 SIGBCompression: 0
                         SIGBMCS: 0
                         SIGBDCM: 0
          NumSIGBSymbolsSignaled: 10
                            STBC: 0
                 LDPCExtraSymbol: 1
             PreFECPaddingFactor: 1
                  PEDisambiguity: 0
                   GuardInterval: 3.2000
                       HELTFType: 4
                 NumHELTFSymbols: 1
                UplinkIndication: 0
                        BSSColor: 0
                    SpatialReuse: 0
                    TXOPDuration: 127
                     HighDoppler: 0
                 AllocationIndex: 0
       NumUsersPerContentChannel: 9
         RUTotalSpaceTimeStreams: -1
                          RUSize: -1
                         RUIndex: -1
                           STAID: -1
                             MCS: -1
                             DCM: -1
                   ChannelCoding: 'Unknown'
                     Beamforming: -1
             NumSpaceTimeStreams: -1
    SpaceTimeStreamStartingIndex: -1

failInterpretation = logical
   0

Update Recovery Configuration Object with HE-SIG-B User Field Bits

Decode the HE-SIG-B user field, ensuring that all users pass the CRC.

sigbUser = waveform(ind.HESIGB(1):ind.HESIGB(2));
sigbUserDemod = wlanHEDemodulate(sigbUser,'HE-SIG-B',cfgHEMU.ChannelBandwidth);
sigbUserDemod = sigbUserDemod(info.DataIndices,:);
[sigbUserBits,failCRC,~] = wlanHESIGBUserBitRecover(sigbUserDemod,0,csi,cfg);
disp(failCRC)
   0   0   0   0   0   0   0   0   0

Update the recovery configuration object with the recovered HE-SIG-B user field bits.

[user,failInterpretation] = interpretHESIGBUserBits(cfg,sigbUserBits,failCRC);

Display the results of interpretation and the third element of the user output.

disp(failInterpretation)
   0   0   0   0   0   0   0   0   0
disp(user{3})
  wlanHERecoveryConfig with properties:

                    PacketFormat: 'HE-MU'
                ChannelBandwidth: 'CBW20'
                      LSIGLength: 878
                 SIGBCompression: 0
                         SIGBMCS: 0
                         SIGBDCM: 0
          NumSIGBSymbolsSignaled: 10
                            STBC: 0
                 LDPCExtraSymbol: 1
             PreFECPaddingFactor: 1
                  PEDisambiguity: 0
                   GuardInterval: 3.2000
                       HELTFType: 4
                 NumHELTFSymbols: 1
                UplinkIndication: 0
                        BSSColor: 0
                    SpatialReuse: 0
                    TXOPDuration: 127
                     HighDoppler: 0
                 AllocationIndex: 0
       NumUsersPerContentChannel: 9
         RUTotalSpaceTimeStreams: 1
                          RUSize: 26
                         RUIndex: 3
                           STAID: 0
                             MCS: 0
                             DCM: 0
                   ChannelCoding: 'LDPC'
                     Beamforming: 0
             NumSpaceTimeStreams: 1
    SpaceTimeStreamStartingIndex: 1

Input Arguments

collapse all

HE MU transmission parameters before interpretation of HE-SIG-A bits, specified as a wlanHERecoveryConfig object.

Recovered HE-SIG-B user field bits, specified as a binary-valued matrix of size 21-by-Nusers, where Nusers is the number of users in the transmission.

Data Types: double | int8

CRC result for each user, specified as a logical-valued row vector of length Nusers, 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 in the kth entry indicates that the Kth user's bits failed the CRC. A value of 0 in the kth entry indicates that the kth user's bits passed the CRC.

Data Types: logical

Output Arguments

collapse all

Updated HE MU transmission parameters, returned as a cell array of wlanHERecoveryConfig objects. The function updates the properties of each object in accordance with the recovered HE-SIG-B user field bits. For information on the contents of the HE-SIG-B field, see [1].

Data Types: cell

Result of HE-SIG-B user field interpretation, returned as a logical-valued row vector of length Nusers, where Nusers is the number of users in the transmission. A value of 1 in the kth entry indicates that the function cannot interpret the recovered HE-SIG-B user field bits for user k. A value of 0 in the kth entry indicates that the function can successfully interpret the HE-SIG-B user field bits for user k.

Data Types: logical

References

[1] IEEE P802.11ax™/D4.1. “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 1: 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 R2020b