Main Content

interpretHESIGBCommonBits

Interpret HE-SIG-B common field bits and update HE transmission parameters

Since R2020b

Description

cfgUpdated = interpretHESIGBCommonBits(cfg,bits,status) updates high-efficiency multi-user (HE MU) transmission parameters cfg by interpreting bits, the recovered HE-SIG-B common field bits, and status, the result of content channel decoding. The function populates the properties of cfg that are relevant to the HE-SIG-B common field and returns updated HE MU transmission parameters cfgUpdated. If you use this syntax and the function cannot interpret the recovered HE-SIG-B common field bits, the function does not return an output and issues an error message.

[cfgUpdated,failInterpretation] = interpretHESIGBCommonBits(cfg,bits,status) returns the result of HE-SIG-B common field interpretation. If you use this syntax and the function cannot interpret the recovered HE-SIG-B common field bits, the function returns the failInterpretation output as 1 and cfgUpdated as cfg without updating any property values.

example

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-B common field bits, specified as a wlanHERecoveryConfig object.

Recovered HE-SIG-B common field bits, specified as binary-valued matrix whose size depends on the channel bandwidth of the transmission.

Channel BandwidthSize of bits
20 MHz18-by-1
40 MHz18-by-2
80 MHz27-by-2
160 MHz43-by-2

Data Types: int8

Result of content channel decoding, specified 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.

The value of this input depends on the result of the cyclic redundancy check (CRC) per content channel and the number of HE-SIG-B symbols signaled in the HE-SIG-A field. for more information, see wlanHESIGBCommonBitRecover.

Data Types: char | string

Output Arguments

collapse all

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

Result of HE-SIG-B common field interpretation, returned as a logical 0 or 1. A value of 1 indicates that the function cannot interpret the recovered HE-SIG-B common field bits. A value of 0 indicates that the function successfully interprets the HE-SIG-B common field bits.

Data Types: logical

References

[1] IEEE® Std 802.11ax™-2021 (Amendment to IEEE Std 802.11™-2020). “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 1: Enhancements for High Efficiency WLAN.” IEEE 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™.

Version History

Introduced in R2020b