Main Content

wlanEHTRecoveryConfig

Store parameters recovered from EHT transmission

Since R2023b

Description

The wlanEHTRecoveryConfig object is an extremely high-throughput (EHT) recovery configuration object for EHT multi-user (EHT MU) packet formats.

Creation

Description

cfg = wlanEHTRecoveryConfig creates an EHT recovery configuration object, cfg, for EHT MU OFDMA and non-OFDMA packet formats. The output cfg contains the parameters recovered from decoding the signaling fields of EHT MU transmissions as defined in IEEE® P802.11be™/D5.0 [1].

On creation, the properties of a wlanEHTRecoveryConfig object are set to either -1 or 'unknown' to indicate an unknown or undefined value or status. You can set and update the properties of this object by specifying the values as decoded signaling fields, as demonstrated in the Recovery Procedure for an 802.11be Packet example. To update the properties encoded in the U-SIG field, use the interpretUSIGBits object function. To update the properties encoded in the EHT-SIG field, use the interpretEHTSIGCommonBits and interpretEHTSIGUserBits object functions.

example

cfg = wlanEHTRecoveryConfig(Name=Value) sets properties using one or more name-value arguments. For example, wlanEHTRecoveryConfig(ChannelBandwidth="CBW20",CompressionMode=0) creates an EHT recovery object with a channel bandwidth of 20 MHz and the compression mode set to 0.

example

Properties

expand all

Channel bandwidth of PPDU transmission, specified as one of these values:

  • 'unknown' — Unknown or undefined channel bandwidth

  • 'CBW20' — Channel bandwidth of 20 MHz

  • 'CBW40' — Channel bandwidth of 40 MHz

  • 'CBW80' — Channel bandwidth of 80 MHz

  • 'CBW160' — Channel bandwidth of 160 MHz

  • 'CBW320' — Channel bandwidth of 320 MHz

Data Types: char | string

Length of the L-SIG field, specified as -1 or as an integer in the interval [1, 4095]. A value of -1 indicates an unknown or undefined packet length. You can set this property after decoding the L-SIG field by using the wlanLSIGBitRecover function.

Data Types: double

Compression mode, specified as -1 or as an integer in the interval [0, 3]. A value of -1 indicates an unknown or undefined compression mode. The property indicates the PPDU type and compression mode as defined in Table 36-29 of [1]. You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Modulation and coding scheme (MCS) for the EHT-SIG field, specified as -1, 0, 1, 3, or 15. A value of -1 indicates an unknown or undefined MCS. The values 0, 1, 3, and 15 correspond respectively to the EHT-SIG field values 0, 1, 2, and 3 as defined in Table 36-1 of [1]. You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Number of EHT-SIG symbols signaled in the U-SIG field, specified as -1 or as an integer in the interval [1, 32]. A value of -1 indicates an unknown or undefined number of symbols. You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Extra OFDM symbol segment indicator, specified as -1 or as a logical value of 1 (true) or 0 (false).

A value of 1 (true) indicates the presence of an extra OFDM symbol segment for low-density parity-check (LDPC) coding. A value of 0 (false) indicates the absence of an extra OFDM symbol. A value of -1 indicates that the presence or absence of an extra symbol is unknown or undefined.

You can set this property after decoding the EHT-SIG field.

Data Types: double | logical

Pre-forward-error-correction (pre-FEC) padding factor, specified as -1 or as a positive integer in the interval [1, 4]. A value of -1 indicates an unknown or undefined padding factor.

You can set this property after decoding the EHT-SIG field.

Data Types: double

Packet extension (PE) disambiguity indicator, specified as -1 or as a logical value of 1 (true) or 0 (false). A value of -1 indicates an unknown or undefined PE disambiguity status.

You can set this property after decoding the EHT-SIG field.

Data Types: double | logical

Guard interval (cyclic prefix) duration for the data field within a packet, specified as -1 or as 0.8, 1.6, or 3.2. The positive values of this property are in microseconds. A value of -1 indicates an unknown or undefined guard interval duration.

You can set this property after decoding the EHT-SIG field.

Data Types: double

EHT long training field (EHT-LTF) compression type of the recovered packet, specified as one of these values:

  • -1 — Unknown or undefined HE-LTF compression mode

  • 2 — 2 × EHT-LTF compression mode

  • 4 — 4 × EHT-LTF compression mode

You can set this property after decoding the EHT-SIG field.

Data Types: double

Number of EHT-LTF symbols, specified as -1 or as an integer in the interval [1, 8]. A value of -1 indicates an unknown or undefined number of symbols.

You can set this property after decoding the EHT-SIG field.

Data Types: double

Uplink transmission indicator, specified as -1 or as a logical value of 1 (true) or 0 (false). A value of 1 (true) indicates that the PPDU is sent on an uplink transmission. A value of 0 (false) indicates that the PPDU is sent on a downlink transmission. A value of -1 indicates an unknown or undefined transmission direction.

You can set this property after decoding the EHT-SIG field.

Data Types: double | logical

Basic service set (BSS) color identifier, specified as -1 or as an integer in the interval [0, 63]. A value of -1 indicates an unknown or undefined color.

You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Data Types: double

Spatial reuse indicator, specified as -1 or as an integer in the interval [0, 15]. A value of -1 indicates an unknown or undefined status.

You can set this property after decoding the EHT-SIG field.

Data Types: double

Duration for transmit opportunity (TXOP) protection, specified as -1 or as an integer in the interval [0, 8448]. The TXOPDuration property represents a duration in microseconds. In the TXOP subfield of the U-SIG field, these durations are represented by integers in the range [0, 127]. Therefore, a duration in microseconds must be converted according to the procedure set out in Table 36-1 of [1]. A value of -1 indicates an unknown or unspecified duration.

You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Data Types: double

Since R2024a

Resource unit (RU) allocation index, specified as an integer, row vector of integers, or matrix of integers. This property indicates the number of RUs, the size of each RU, and the number of users assigned to each RU. A value of -1 indicates an unknown or undefined allocation index. This property applies only to OFDMA transmissions.

For a description of the correspondence between allocation indices and RU allocations, see EHT MU Transmission.

You can set this property after decoding the EHT-SIG field.

Number of users in a non-OFDMA transmission, specified as -1 or as an integer in the interval [1, 8]. A value of -1 indicates an unknown or undefined number of users.

You can set this property after decoding the EHT-SIG field.

Data Types: double

Number of users per EHT-SIG content channel, specified as -1, a positive integer, a vector of positive integers, or a matrix of positive integers. A value of -1 indicates an unknown or undefined number of users.

The size of this property depends on the PPDU type:

  • For non-OFDMA transmissions, the size is 1-by-C, where C is the number of content channels. C is 1 for a 20 MHz channel and 2 for all other bandwidths.

  • For OFDMA transmissions, the size is L-by-C, where L is the number of 80 MHz subblocks. L is 4 for a 320 MHz channel, 2 for a 160 MHz channel, and 1 for all other bandwidths.

You can set this property after decoding the EHT-SIG field. The distribution of users on EHT-SIG content channels is defined in Section 36.3.12.8.5 of [1].

Data Types: double

Total number of space-time streams in the RU of interest, specified as -1 or as an integer in the interval [1, 8]. A value of -1 indicates an unknown or undefined number of space-time streams.

You can set this property after decoding the EHT-SIG field.

Data Types: double

RU size for the user of interest, specified as -1, one of the positive integers listed above, or a vector of positive integers from the list. A value of -1 indicates an unknown or undefined RU size. A vector value indicates that the RU is an MRU. The vector entries are the sizes of the individual RUs that make up the MRU.

You can set this property after decoding the EHT-SIG field.

Data Types: double

RU index for the user of interest, specified as -1, an integer in the interval [1, 148], or a vector of integers in the range [1, 148]. The RU index specifies the location of the RU in the channel.

A value of -1 indicates an unknown or undefined RU index. A vector value indicates that the RU is an MRU. The vector entries are the indices of the individual RUs that make up the MRU.

You can set this property after decoding the EHT-SIG field.

Data Types: double

Puncturing pattern for OFDMA transmissions, specified as -1, a binary vector, or a binary matrix. A value of -1 indicates an unknown or undefined puncturing pattern. Otherwise, this property is an L-by-4 binary array, where L is the number of 80 MHz subblocks in the channel and the four columns correspond to 20 MHz subchannels. A value of 0 indicates that the corresponding 20 MHz subchannel is punctured.

You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Note

This property applies only to OFDMA transmissions with a channel bandwidth of 80 MHz or greater.

Puncturing pattern for non-OFDMA transmissions, specified as -1 or as an integer in the interval [0, 24]. The correspondence between puncturing patterns and integers in the interval [0, 24] is defined in Table 36-30 of [1]. A value of -1 indicates an unknown or undefined puncturing pattern. You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Data Types: double

Station (STA) identification number, specified as an integer in the interval [0, 2047]. A value of -1 indicates an unknown or undefined STA identification number.

The STA identification number is defined in Section 36.3.12.8.5 of [1]. The 11 least significant bits (LSBs) of the association identifier (AID) field are used to address the STA. The associated RU carries no data when STAID is 2046.

You can set this property after decoding the EHT-SIG field.

Data Types: double | single

User-specific MCS, specified as an integer in the interval [0, 15]. A value of -1 indicates an unknown or undefined MCS. This table shows the modulation type and coding rate for each valid value of MCS:

MCSModulationDual Carrier ModulationCoding Rate
0Binary phase-shift keying (BPSK)

Not applicable

1/2
1Quadrature phase-shift keying (QPSK)

Not applicable

1/2
2

Not applicable

3/4
316-point quadrature amplitude modulation (16-QAM)

Not applicable

1/2
43/4
564-QAM

Not applicable

2/3
63/4
75/6
8256-QAM3/4
95/6
101024-QAM3/4
115/6
124096-QAM3/4
135/6
15BPSK-DCMIn use1/2

A value of 14 for this property indicates that EHT DUP mode is in use, and that the value of the EHTDUPMode is true or 1. You can set this property after decoding the EHT-SIG field.

Data Types: double

Forward-error-correction (FEC) coding type for the EHT-Data field, specified as one of these values:

  • 'unknown' — Unknown or undefined channel coding type

  • 'bcc' — Binary convolutional coding (BCC)

  • 'ldpc' — LDPC coding

You can set this property after decoding the EHT-SIG field.

Data Types: char | string | enumeration

Beamforming steering matrix indicator, specified as -1 to indicate an unknown or undefined status or as a logical value of 1 (true) or 0 (false). A value of 1 (true) indicates that a beamforming steering matrix is applied to the received waveform.

You can set this property after decoding the EHT-SIG field.

Data Types: double | logical

Number of space-time streams for the user of interest, specified as -1 or as an integer in the interval [1, 8]. A value of -1 indicates an unknown or undefined number of space-time streams.

You can set this property after decoding the EHT-SIG field.

Data Types: double | single

Starting space-time stream index, specified as -1 or as an integer in the interval [1, 8]. A value of -1 indicates an unknown or undefined index.

When multiple users are transmitting in the same RU in a MU-MIMO configuration, each user must transmit on different space-time streams. The NumSpaceTimeStreams and SpaceTimeStreamStartIndex properties determine the starting space-time stream for each user. You can set this property after decoding the EHT-SIG field.

Data Types: double | single

Channelization for a 320 MHz channel bandwidth, specified as -1, 1, or 2. A value of -1 indicates an unknown or undefined channelization scheme.

A 320 MHz channel has three possible locations for the channel center frequencies. In accordance with Section 36.3.24.2 of [1], when you specify 1, these locations are numbered 31, 95, and 159. When you specify 2, the locations are numbers 63, 127, and 191.

You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field.

Data Types: double

EHT PPDU type, specified as one of these values:

  • 'unknown' — Unknown or undefined PPDU type

  • 'su' — single user PPDU type

  • 'dl_mumimo' — Non-OFDMA MU PPDU type

  • 'dl_ofdma' — OFDMA PPDU type

  • 'ndp' — Sounding null data packet (NDP) PPDU type

You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field. Otherwise, it is read-only. The value of this property depends on the CompressionMode, NumEHTSIGSymbolsSignaled, and EHTSIGMCS properties.

Value of CompressionModeValue of NumEHTSIGSymbolsSignaledValue of EHTSIGMCSValue of PPDUType
0AnyAny'dl_ofdma'
110'ndp'
1 or 3'su'
20
415
2AnyAny'dl_mumimo'

All other combinations of the three properties result in a value of 'unknown'.

Data Types: char | string | enumeration

EHT DUP mode, specified as -1 or as a logical value of 1 (true) or 0 (false). A value of -1 indicates an unknown or undefined EHT DUP mode.

You can set this property by using the interpretUSIGBits object function after decoding the U-SIG field. Otherwise, it is read-only.

Data Types: double | logical

Object Functions

psduLengthEHT PSDU length
packetFormat WLAN packet format
interpretUSIGBitsInterpret U-SIG field bits and update EHT transmission parameters
interpretEHTSIGCommonBitsInterpret EHT-SIG common field bits and update EHT MU transmission parameters
interpretEHTSIGUserBitsInterpret EHT-SIG user field bits and update EHT MU transmission parameters

Examples

collapse all

Create a recovery configuration object with default property values.

cfg = wlanEHTRecoveryConfig;

Overwrite the default settings by specifying properties. Display the resultant object. The PPDUType property is set to su because it depends on the CompressionMode, NumEHTSIGSymbolsSignaled, and EHTSIGMCS properties.

cfg.ChannelBandwidth = "CBW320";
cfg.LSIGLength = 500;
cfg.CompressionMode = 1;
cfg.NumEHTSIGSymbolsSignaled = 1;
cfg.EHTSIGMCS = 1;
disp(cfg)
  wlanEHTRecoveryConfig with properties:

                ChannelBandwidth: 'CBW320'
                      LSIGLength: 500
                 CompressionMode: 1
                       EHTSIGMCS: 1
        NumEHTSIGSymbolsSignaled: 1
                 LDPCExtraSymbol: -1
             PreFECPaddingFactor: -1
                  PEDisambiguity: -1
                   GuardInterval: -1
                      EHTLTFType: -1
                NumEHTLTFSymbols: -1
                UplinkIndication: -1
                        BSSColor: -1
                    SpatialReuse: -1
                    TXOPDuration: -1
                NumNonOFDMAUsers: -1
       NumUsersPerContentChannel: -1
         RUTotalSpaceTimeStreams: -1
                          RUSize: -1
                         RUIndex: -1
      PuncturedChannelFieldValue: -1
                           STAID: -1
                             MCS: -1
                   ChannelCoding: unknown
                     Beamforming: -1
             NumSpaceTimeStreams: -1
    SpaceTimeStreamStartingIndex: -1
                  Channelization: -1

   Read-only properties:
                        PPDUType: su
                      EHTDUPMode: 0

Generate EHT SU Waveform

Create a single-user EHT configuration object with a channel bandwidth of 320 MHz.

chanBW = "CBW320";
cfgEHTSU = wlanEHTMUConfig(chanBW);

Create an EHT recovery object with the same channel bandwidth.

cfg = wlanEHTRecoveryConfig(ChannelBandwidth=chanBW);

Create a sequence of data bits. Use the bits to generate a time-domain waveform for the specified configuration. Pass the waveform through an AWGN channel with a signal-to-noise ratio of 10 dB. Return the PPDU field indices.

bits = randi([0 1],8*psduLength(cfgEHTSU),1);
tx = wlanWaveformGenerator(bits,cfgEHTSU);
rx = awgn(tx,10);
ind = wlanFieldIndices(cfg);

Recover L-SIG Bits

Demodulate the L-LTF and estimate the channel. Using the demodulated symbols, estimate the noise power.

lltf = rx(ind.LLTF(1):ind.LLTF(2),:);
lltfDemod = wlanEHTDemodulate(lltf,"L-LTF",cfg);
lltfChanEst = wlanLLTFChannelEstimate(lltfDemod,chanBW);
nVar = wlanLLTFNoiseEstimate(lltfDemod);

Decode the L-SIG field and obtain the OFDM information. The recovery configuration object requires this information to obtain the L-SIG length.

lsig = rx(ind.LSIG(1):ind.LSIG(2));
lsigDemod = wlanEHTDemodulate(lsig,"L-SIG",cfg);
info = wlanEHTOFDMInfo("L-SIG",cfg);
lsigDemodData = lsigDemod(info.DataIndices,:);

Estimate the channel at the L-SIG field and equalize the L-SIG symbols.

preEHTChanEst = wlanPreEHTChannelEstimate(lsigDemod,lltfChanEst,chanBW);
lsigEq = wlanEHTEqualize(lsigDemodData,preEHTChanEst(info.DataIndices,:),nVar,cfg,"L-SIG");

Recover the L-SIG bits and set the L-SIG length of the recovery object.

[lsigBits,failCheck,lsigInfo] = wlanLSIGBitRecover(lsigEq,0);
cfg.LSIGLength = lsigInfo.Length;

Update Recovery Configuration Object with U-SIG Bits

Demodulate the U-SIG field.

usig = rx(ind.USIG(1):ind.USIG(2),:);
usigDemod = wlanEHTDemodulate(usig,"U-SIG",cfg);

Get the OFDM information that corresponds to the U-SIG field. Use this information to isolate the data subcarriers.

preEHTInfo = wlanEHTOFDMInfo("U-SIG",cfg);
usigDataSym = usigDemod(preEHTInfo.DataIndices,:);

Equalize the U-SIG data symbols.

x = wlanEHTEqualize(usigDataSym,preEHTChanEst(preEHTInfo.DataIndices,:),nVar,cfg,"U-SIG");

Recover the U-SIG bits, ensuring that the bits pass the cyclic redundancy check (CRC).

[usigBits,failCRC] = wlanUSIGBitRecover(x,nVar);
disp(failCRC)
   0   0   0   0

Update the recovery configuration object with the U-SIG bits. Display the updated object. A property value of -1 or unknown indicates an unknown or undefined property, which you can update after decoding the EHT-SIG common and user fields of the EHT SU packet.

[cfg,failInterpretation] = interpretUSIGBits(cfg,usigBits,failCRC) % This syntax does not cause an error if interpretation fails
cfg = 
  wlanEHTRecoveryConfig with properties:

                ChannelBandwidth: 'CBW320'
                      LSIGLength: 39
                 CompressionMode: 1
                       EHTSIGMCS: 0
        NumEHTSIGSymbolsSignaled: 2
                 LDPCExtraSymbol: -1
             PreFECPaddingFactor: -1
                  PEDisambiguity: -1
                   GuardInterval: -1
                      EHTLTFType: -1
                NumEHTLTFSymbols: -1
                UplinkIndication: 0
                        BSSColor: 0
                    SpatialReuse: -1
                    TXOPDuration: -1
                NumNonOFDMAUsers: -1
       NumUsersPerContentChannel: -1
         RUTotalSpaceTimeStreams: -1
                          RUSize: -1
                         RUIndex: -1
      PuncturedChannelFieldValue: 0
                           STAID: -1
                             MCS: -1
                   ChannelCoding: unknown
                     Beamforming: -1
             NumSpaceTimeStreams: -1
    SpaceTimeStreamStartingIndex: -1
                  Channelization: 1

   Read-only properties:
                        PPDUType: su
                      EHTDUPMode: 0

failInterpretation = logical
   0

Update Recovery Configuration Object with EHT-SIG Common Field Bits

Update the field indices with the new information from the U-SIG bits.

ind = wlanFieldIndices(cfg);

Demodulate the EHT-SIG field. Get the corresponding OFDM information.

ehtSig = rx(ind.EHTSIG(1):ind.EHTSIG(2),:);
ehtsigDemod = wlanEHTDemodulate(ehtSig,"EHT-SIG",cfg);
preEHTInfo = wlanEHTOFDMInfo("EHT-SIG",cfg);

Equalize the EHT-SIG data symbols.

x = wlanEHTEqualize(ehtsigDemod(preEHTInfo.DataIndices,:),preEHTChanEst(preEHTInfo.DataIndices,:), ...
    nVar,cfg,"EHT-SIG");

Recover and interpret the EHT-SIG common field bits.

[ehtsigCommonBits,failCRC,cfg] = wlanEHTSIGCommonBitRecover(x,nVar,cfg); % This syntax causes an error if interpretation fails

Update Recovery Configuration Object with EHT-SIG User Field Bits

Recover and interpret the EHT-SIG user field bits. Display the updated recovery configuration object.

[ehtsigUserBits,failCRC] = wlanEHTSIGUserBitRecover(x,nVar,cfg);
cfg = interpretEHTSIGUserBits(cfg,ehtsigUserBits,failCRC); % This syntax causes an error if interpretation fails
cfg = cfg{1};
disp(cfg)
  wlanEHTRecoveryConfig with properties:

                ChannelBandwidth: 'CBW320'
                      LSIGLength: 39
                 CompressionMode: 1
                       EHTSIGMCS: 0
        NumEHTSIGSymbolsSignaled: 2
                 LDPCExtraSymbol: 1
             PreFECPaddingFactor: 3
                  PEDisambiguity: 0
                   GuardInterval: 3.2000
                      EHTLTFType: 4
                NumEHTLTFSymbols: 1
                UplinkIndication: 0
                        BSSColor: 0
                    SpatialReuse: 0
                    TXOPDuration: -1
                NumNonOFDMAUsers: 1
       NumUsersPerContentChannel: 1
         RUTotalSpaceTimeStreams: 1
                          RUSize: 3984
                         RUIndex: 1
      PuncturedChannelFieldValue: 0
                           STAID: 0
                             MCS: 0
                   ChannelCoding: ldpc
                     Beamforming: 0
             NumSpaceTimeStreams: 1
    SpaceTimeStreamStartingIndex: 1
                  Channelization: 1

   Read-only properties:
                        PPDUType: su
                      EHTDUPMode: 0

Recover EHT-Data Field

Update the field indices with the new information from the EHT-SIG bits.

ind = wlanFieldIndices(cfg);

Demodulate the EHT-Data field and recover the bits. Verify that the recovered bits match the transmitted bits.

ehtData = rx(ind.EHTData(1):ind.EHTData(2),:);
ehtdataDemod = wlanEHTDemodulate(ehtData,"EHT-Data",cfg);
infoData = wlanEHTOFDMInfo("EHT-Data",cfg);
rxDataSym = ehtdataDemod(infoData.DataIndices,:,:);
dataBits = wlanEHTDataBitRecover(rxDataSym,nVar,cfg);
isequal(bits,dataBits)
ans = logical
   1

Generate EHT MU OFDMA Waveform

Create an EHT MU configuration object, setting the allocation index to 48. This setting specifies an OFDMA configuration with one 106+26-tone MRU and one 106-tone RU in a 20 MHz channel. Both resource units have one user.

allocationtx = 48;
cfgEHTMU = wlanEHTMUConfig(allocationtx);

Create an EHT recovery object with the same channel bandwidth.

chanBW = cfgEHTMU.ChannelBandwidth;
cfg = wlanEHTRecoveryConfig(ChannelBandwidth=chanBW);

Generate a time-domain waveform for the EHT MU configuration. Pass the waveform through an AWGN channel with a signal-to-noise ratio of 15 dB. Return the PPDU field indices.

bits = [1;0;0;1];
tx = wlanWaveformGenerator(bits,cfgEHTMU);
rx = awgn(tx,15);
ind = wlanFieldIndices(cfg);

Recover L-SIG Bits

Demodulate the L-LTF and estimate the channel. Using the demodulated symbols, estimate the noise power.

lltf = rx(ind.LLTF(1):ind.LLTF(2),:);
lltfDemod = wlanEHTDemodulate(lltf,"L-LTF",cfg);
lltfChanEst = wlanLLTFChannelEstimate(lltfDemod,chanBW);
nVar = wlanLLTFNoiseEstimate(lltfDemod);

Decode the L-SIG field and obtain the OFDM information. The recovery configuration object requires this information to obtain the L-SIG length.

lsig = rx(ind.LSIG(1):ind.LSIG(2));
lsigDemod = wlanEHTDemodulate(lsig,"L-SIG",cfg);
info = wlanEHTOFDMInfo("L-SIG",cfg);
lsigDemodData = lsigDemod(info.DataIndices,:);

Estimate the channel at the L-SIG field and equalize the L-SIG symbols.

preEHTChanEst = wlanPreEHTChannelEstimate(lsigDemod,lltfChanEst,chanBW);
lsigEq = wlanEHTEqualize(lsigDemodData,preEHTChanEst(info.DataIndices,:),nVar,cfg,"L-SIG");

Recover the L-SIG bits and set the L-SIG length of the recovery object.

[lsigBits,failCheck,lsigInfo] = wlanLSIGBitRecover(lsigEq,0);
cfg.LSIGLength = lsigInfo.Length;

Update Recovery Configuration Object with U-SIG Bits

Demodulate the U-SIG field.

usig = rx(ind.USIG(1):ind.USIG(2),:);
usigDemod = wlanEHTDemodulate(usig,"U-SIG",cfg);

Get the OFDM information that corresponds to the U-SIG field. Use this information to isolate the data subcarriers.

preEHTInfo = wlanEHTOFDMInfo("U-SIG",cfg);
usigDataSym = usigDemod(preEHTInfo.DataIndices,:);

Equalize the U-SIG data symbols.

x = wlanEHTEqualize(usigDataSym,preEHTChanEst(preEHTInfo.DataIndices,:),nVar,cfg,"U-SIG");

Recover the U-SIG bits.

[usigBits,failCRC] = wlanUSIGBitRecover(x,nVar);

Update the recovery configuration object with the U-SIG bits.

[cfg,failInterpretation] = interpretUSIGBits(cfg,usigBits,failCRC);

Recover Allocation Index

Update the field indices with the new information from the U-SIG bits.

ind = wlanFieldIndices(cfg);

Demodulate the EHT-SIG field. Get the corresponding OFDM information.

ehtSig = rx(ind.EHTSIG(1):ind.EHTSIG(2),:);
ehtsigDemod = wlanEHTDemodulate(ehtSig,"EHT-SIG",cfg);
preEHTInfo = wlanEHTOFDMInfo("EHT-SIG",cfg);

Equalize the EHT-SIG data symbols.

x = wlanEHTEqualize(ehtsigDemod(preEHTInfo.DataIndices,:),preEHTChanEst(preEHTInfo.DataIndices,:), ...
    nVar,cfg,"EHT-SIG");

Recover and interpret the EHT-SIG common field bits.

[ehtsigCommonBits,~,cfg] = wlanEHTSIGCommonBitRecover(x,nVar,cfg);

Verify that the recovered allocation index matches the value you specified. Display the PPDU type.

isequal(cfg.AllocationIndex,allocationtx)
ans = logical
   1

disp(cfg.PPDUType)
    dl_ofdma

More About

expand all

Extended Capabilities

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

Version History

Introduced in R2023b

expand all