wlanEHTRecoveryConfig
Description
The wlanEHTRecoveryConfig
object is an extremely high-throughput (EHT)
recovery configuration object for EHT multi-user (EHT MU) packet formats.
Creation
Description
creates an EHT
recovery configuration object, cfg
= wlanEHTRecoveryConfigcfg
, 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.
sets properties using one or more name-value arguments. For example,
cfg
= wlanEHTRecoveryConfig(Name=Value)wlanEHTRecoveryConfig(ChannelBandwidth="CBW20",CompressionMode=0)
creates an EHT recovery object with a channel bandwidth of 20 MHz and the compression
mode set to 0
.
Properties
ChannelBandwidth
— Channel bandwidth of PPDU transmission
'unknown'
(default) | 'CBW20'
| 'CBW40'
| 'CBW80'
| 'CBW160'
| 'CBW320'
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
LSIGLength
— Length of L-SIG field
-1
(default) | integer in the interval [1, 4095]
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
CompressionMode
— Compression mode
-1
(default) | integer in the interval [0, 3]
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.
EHTSIGMCS
— Modulation and coding scheme for EHT-SIG field
-1
(default) | 0
| 1
| 3
| 15
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.
NumEHTSIGSymbolsSignaled
— Number of EHT-SIG symbols signaled in U-SIG field
-1
(default) | integer in the interval [1, 32]
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.
LDPCExtraSymbol
— Extra OFDM symbol segment indicator
-1
(default) | 1
(true
) | 0
(false
)
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
PreFECPaddingFactor
— Pre-FEC padding factor
-1
(default) | integer
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
PEDisambiguity
— PE disambiguity indicator
-1
(default) | 1
(true
) | 0
(false
)
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
GuardInterval
— Guard interval (cyclic prefix) duration
-1
(default) | 0.8
| 1.6
| 3.2
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
EHTLTFType
— EHT-LTF compression mode of recovered packet
-1
(default) | 2
| 4
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 mode2
— 2 × EHT-LTF compression mode4
— 4 × EHT-LTF compression mode
You can set this property after decoding the EHT-SIG field.
Data Types: double
NumEHTLTFSymbols
— Number of EHT-LTF symbols
-1
(default) | integer in the interval [1, 8]
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
UplinkIndication
— Uplink transmission indicator
-1
(default) | 1
(true
) | 0
(false
)
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
BSSColor
— BSS color identifier
-1
(default) | integer in the interval [0, 63]
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
SpatialReuse
— Spatial reuse indicator
-1
(default) | integer in the interval [0, 15]
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
TXOPDuration
— Duration information for TXOP protection
-1
(default) | integer in the interval [0, 8448]
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
AllocationIndex
— RU allocation index
-1
(default) | integer | row vector of integers | matrix of integers
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.
NumNonOFDMAUsers
— Number of users in non-OFDMA transmission
-1
(default) | integer in the interval [1, 8]
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
NumUsersPerContentChannel
— Number of users per EHT-SIG content channel
-1
(default) | positive integer | vector of positive integers | matrix of positive integers
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
RUTotalSpaceTimeStreams
— Total number of space-time streams in RU of interest
-1
(default) | integer in the interval [1, 8]
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
RUSize
— RU size for user of interest
-1
(default) | 26
| 52
| 106
| 242
| 484
| 968
| 996
| 1992
| 3984
| vector of positive integers
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
RUIndex
— RU index for user of interest
-1
(default) | integer in the interval [1, 148] | vector of integers in the range [1, 148]
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
PuncturedPattern
— Puncturing pattern for OFDMA transmissions
-1
(default) | binary vector | binary matrix
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.
PuncturedChannelFieldValue
— Puncturing pattern for non-OFDMA transmissions
-1
(default) | integer in the interval [0, 24]
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
STAID
— STA identification number
-1
(default) | integer in the interval [0, 2047]
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
MCS
— User-specific MCS
-1
(default) | integer in the interval [0, 15]
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
:
MCS | Modulation | Dual Carrier Modulation | Coding Rate |
---|---|---|---|
0 | Binary phase-shift keying (BPSK) | Not applicable | 1/2 |
1 | Quadrature phase-shift keying (QPSK) | Not applicable | 1/2 |
2 | Not applicable | 3/4 | |
3 | 16-point quadrature amplitude modulation (16-QAM) | Not applicable | 1/2 |
4 | 3/4 | ||
5 | 64-QAM | Not applicable | 2/3 |
6 | 3/4 | ||
7 | 5/6 | ||
8 | 256-QAM | 3/4 | |
9 | 5/6 | ||
10 | 1024-QAM | 3/4 | |
11 | 5/6 | ||
12 | 4096-QAM | 3/4 | |
13 | 5/6 | ||
15 | BPSK-DCM | In use | 1/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
ChannelCoding
— FEC coding type
'unknown'
(default) | 'bcc'
| 'ldpc'
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
— Beamforming steering matrix indicator
-1
(default) | 1
(true
) | 0
(false
)
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
NumSpaceTimeStreams
— Number of space-time streams for user of interest
-1
(default) | integer in the interval [1, 8]
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
SpaceTimeStreamStartIndex
— Starting space-time stream index
-1
(default) | integer in the interval [1, 8]
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
— Channelization for 320 MHz
-1
(default) | 1
| 2
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
PPDUType
— EHT PPDU type
'unknown'
(default) | 'su'
| 'dl-mumimo'
| 'dl_ofdma'
| 'ndp'
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 CompressionMode | Value of NumEHTSIGSymbolsSignaled | Value of EHTSIGMCS | Value of PPDUType |
---|---|---|---|
0 | Any | Any | 'dl_ofdma' |
1 | 1 | 0 | 'ndp' |
1 or 3 | 'su' | ||
2 | 0 | ||
4 | 15 | ||
2 | Any | Any | 'dl_mumimo' |
All other combinations of the three properties result in a value of
'unknown'
.
Data Types: char
| string
| enumeration
EHTDUPMode
— EHT DUP mode
-1
| false
or 0
| true
or 1
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
psduLength | EHT PSDU length |
packetFormat | WLAN packet format |
interpretUSIGBits | Interpret U-SIG field bits and update EHT transmission parameters |
interpretEHTSIGCommonBits | Interpret EHT-SIG common field bits and update EHT MU transmission parameters |
interpretEHTSIGUserBits | Interpret EHT-SIG user field bits and update EHT MU transmission parameters |
Examples
Create EHT Recovery Configuration Object
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
Recover EHT-Data Field from EHT SU Transmission
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
Recover EHT-SIG Common Field Bits from OFDMA Transmission
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
PPDU
The physical layer (PHY) protocol data unit (PPDU) is the complete physical layer convergence procedure (PLCP) frame, including PLCP headers, MAC headers, the MAC data field, and the MAC and PLCP trailers.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2023bR2024b: Generate C/C++ code for 802.11be blind recovery
When you use the wlanEHTRecoveryConfig
object for 802.11be blind recovery, you can now generate C and C++ code using MATLAB®
Coder™.
R2024a: OFDMA support
You can now blindly recover the transmission parameters of OFDMA configurations. The
AllocationIndex
property stores resource unit allocation
information.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)