wlanHERecoveryConfig
Store parameters recovered from HE transmission
Description
The wlanHERecoveryConfig
object is a high-efficiency (HE) recovery
configuration object for HE single-user (HE SU), HE extended-range single-user (HE ER SU), and
HE multi-user (HE MU) packet formats.
Creation
Description
creates an HE
recovery configuration object, cfg
= wlanHERecoveryConfigcfg
, for HE SU, HE ER SU, and HE MU
packet formats. The output cfg
contains the parameters recovered from
decoding the signaling fields of HE SU, HE ER SU, and HE MU transmissions as defined in
[2].
On creation, the properties of a wlanHERecoveryConfig
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.11ax Packet example. To update the properties
relevant to the HE-SIG-A field, use the interpretHESIGABits
object function. To update the properties relevant to the HE-SIG-B field, use the
interpretHESIGBCommonBits
and interpretHESIGBUserBits
object functions.
sets
properties using one or more name-value pairs. Enclose each property name in quotation
marks. For example,
cfg
= wlanHERecoveryConfig(Name,Value)wlanHERecoveryConfig('PacketFormat','HE-SU','GuardInterval',1.6)
creates an HE recovery configuration object for an HE SU packet with a guard interval of
1.6 microseconds.
Properties
PacketFormat
— Recovered HE packet format
'Unknown'
(default) | 'HE-SU'
| 'HE-EXT-SU'
| 'HE-MU'
Recovered HE packet format, specified as 'Unknown'
,
'HE-SU'
, 'HE-EXT-SU'
, or
'HE-MU'
.
The length information in the L-SIG field and the four orthogonal frequency-division multiplexing (OFDM) symbols following the RL-SIG field determine the packet format. For more information, see Recovery Procedure for an 802.11ax Packet.
Data Types: char
| string
ChannelBandwidth
— Channel bandwidth of PPDU transmission
'Unknown'
(default) | 'CBW20'
| 'CBW40'
| 'CBW80'
| 'CBW160'
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
Data Types: char
| string
LSIGLength
— Length of L-SIG field
-1
(default) | integer in the interval [1, 4095]
Length of L-SIG field, specified as -1
to indicate an unknown or
undefined packet length or as an integer in the interval [1, 4095]. You can set this
property after decoding the L-SIG field by using the wlanLSIGBitRecover
function.
Data Types: double
PreamblePuncturing
— Preamble puncturing mode
'Unknown'
(default) | 'None'
| 'Mode-1'
| 'Mode-2'
| 'Mode-3'
| 'Mode-4'
Preamble puncturing mode, specified as one of these values:
'Unknown'
– Unknown or undefined preamble puncturing in the recovered waveform'None'
– No preamble puncturing in the recovered waveform'Mode-1'
– Preamble puncturing in the secondary 20-MHz subchannel. This value applies only when theChannelBandwidth
property is'CBW80'
.'Mode-2'
– Preamble puncturing in one of the 20-MHz subchannels of the secondary 40 MHz. This value applies only when theChannelBandwidth
property is'CBW80'
.'Mode-3'
– Preamble puncturing in the secondary 20-MHz subchannel. This value applies only when theChannelBandwidth
property is'CBW160'
.'Mode-4'
– Preamble puncturing in the primary 40-MHz subchannel. This value applies only when theChannelBandwidth
property is'CBW160'
.
Specifying PreamblePuncturing
indicates a punctured 20-MHz or
40-MHz subchannel in the preamble. You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
.
Data Types: char
| string
SIGBCompression
— HE-SIG-B compression indicator
-1
(default) | 1
(true
) | 0
(false
)
HE-SIG-B compression indicator, specified as -1
to indicate an
unknown or undefined state or as a logical value of 1
(true
) or
0
(false
). A value of 1
(true
) indicates that the
HE-SIG-B field is compressed. A value of 0
(false
) indicates that the
HE-SIG-B field is not compressed
You can set this property by using the interpretHESIGABits
object functions after decoding the HE-SIG-A field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
and the ChannelBandwidth
property is 'CBW20'
.
Data Types: double
| logical
SIGBMCS
— MCS of HE-SIG-B field
-1
(default) | integer in the interval [–1, 5]
Modulation and coding scheme (MCS) of the HE-SIG-B field, specified as an integer in
the interval [–1, 5]. A value of -1
indicates an unknown or undefined
MCS.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
.
Data Types: double
SIGBDCM
— HE-SIG-B DCM indicator
-1
(default) | 1
(true
) | 0
(false
)
HE-SIG-B dual-carrier modulation (DCM) 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 the HE-SIG-B field is modulated with DCM. A
value of 0
(false
) indicates that the HE-SIG-B field is not modulated
with DCM.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
and when the
SIGBMCS
property is 0
, 1
, 3
, or
4
.
Data Types: double
| logical
NumSIGBSymbolsSignaled
— Number of HE-SIG-B symbols signaled in HE-SIG-A field
-1
(default) | integer in the interval [1, 16]
Number of HE-SIG-B symbols signaled in the HE-SIG-A field, specified as
-1
to indicate an unknown or undefined number of symbols or as an
integer in the interval [1, 16]. A value of 16
indicates that there
are 16 or more HE-SIG-B symbols signaled.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
and when the
SIGBCompression
property is 0
(false
).
Data Types: double
STBC
— Space-time block coding indicator
-1
(default) | 1
(true
) | 0
(false
)
Space-time block coding (STBC) 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 STBC is
enabled in the PPDU data field transmission. A value of 0
(false
)
indicates that STBC is not enabled.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Dependencies
This property can only be 1
(true
) when the NumSpaceTimeStreams
is 2
and when the DCM
is
0
.
Data Types: double
| logical
LDPCExtraSymbol
— Extra OFDM symbol segment indicator
-1
(default) | 1
(true
) | 0
(false
)
Extra orthogonal frequency-division multiplexing (OFDM) symbol segment 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 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.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
| logical
PreFECPaddingFactor
— Pre-FEC padding factor
-1
(default) | integer
Pre-forward-error-correction (pre-FEC) padding factor, specified as
-1
to indicate an unknown or undefined padding factor or as a
positive integer in the interval [1, 4].
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
PEDisambiguity
— PE-disambiguity indicator
-1
(default) | 1
(true
) | 0
(false
)
Packet extension (PE) disambiguity indicator, specified as -1
to
indicate an unknown or undefined PE disambiguity status or as a logical value of
1
(true
) or 0
(false
). For more information, see section 27.3.13 of [2].
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A 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, in
microseconds, specified as -1
to indicate an unknown or undefined
guard interval length, or as 0.8
, 1.6
, or
3.2
.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
HELTFType
— HE-LTF compression mode of recovered packet
-1
(default) | 1
| 2
| 4
HE long training field (HE-LTF) compression type of recovered packet, specified as one of these values:
-1
– Unknown or undefined HE-LTF compression mode1
– A compression of HE-LTF duration2
– A compression of twice the HE-LTF duration4
– A compression of four times the HE-LTF duration
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
NumHELTFSymbols
— Number of HE-LTF symbols
-1
(default) | integer in the interval [1, 8]
Number of HE-LTF symbols, specified as -1
or an integer in the
interval [1, 8]. A value of -1
indicates an unknown or undefined
number of HE-LTF symbols.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
UplinkIndication
— Uplink transmission indicator
-1
(default) | 1
(true
) | 0
(false
)
Uplink transmission indicator, specified as -1
to indicate an
unknown or undefined transmission direction 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.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
| logical
BSSColor
— BSS color identifier
-1
(default) | integer in the interval [–1, 63]
Basic service set (BSS) color identifier, specified as an integer in the interval
[–1, 63]. A value of -1
indicates an unknown or undefined color. For
more information, see section 26.11.4 of [2].
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
SpatialReuse
— Spatial reuse indicator
–1 (default) | integer in the interval [–1, 15]
Spatial reuse indicator, specified as an integer in the interval [–1, 15]. A value
of -1
indicates an unknown or undefined status.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
TXOPDuration
— Duration information for TXOP protection
-1
(default) | integer in the interval [–1, 127]
Duration for transmit opportunity (TXOP) protection, specified as an integer in the
interval [–1, 127]. A value of -1
indicates an unknown or undefined
duration.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
HighDoppler
— High-Doppler mode indicator
-1
(default) | 1
(true
) | 0
(false
)
High-Doppler mode 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 high-Doppler
mode in the HE-SIG-A field.
You can set this property by using interpretHESIGABits
after decoding the HE-SIG-A field.
Data Types: double
| logical
MidamblePeriodicity
— Midamble periodicity of HE-Data field
-1
(default) | 10
| 20
Midamble periodicity of the HE-Data field, in OFDM symbols, specified as
-1
to indicate an unknown or undefined periodicity, or as
10
or 20
.
You can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field.
Data Types: double
AllocationIndex
— RU allocation indices for each 20-MHz subchannel
-1
(default) | integer | vector of integers
Resource unit (RU) allocation indices for each 20-MHz subchannel, specified as an
integer or a vector of integers in the interval [–1, 223]. A value of
-1
indicates an unknown or undefined allocation index. The
recovered bits determine how many allocation indices are set, which determines the
format of this property.
The allocation indices define bandwidth allocation by specifying the number of RUs, size of each RU, and number of users assigned to each RU. For more information, see HE MU Transmission.
For a full-bandwidth multiuser multiple-input/multiple output (MU-MIMO) waveform,
you can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field. For an OFDM waveform, you can set
this property after decoding the HE-SIG-B field.
Dependencies
This property applies only when PacketFormat
is
'HE-MU'
.
Data Types: double
LowerCenter26ToneRU
— Enable lower center 26-tone RU allocation signaling
-1
(default) | 1
(true
) | 0
(false
)
Indicate lower center 26-tone RU signaling, specified as -1
to
indicate an unknown status or as a logical value of 1
(true
) or
0
(false
). A value of 1
(true
) indicates the presence of
the lower frequency center 26-tone RU.
You can set this property after decoding the HE-SIG-B field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
, the ChannelBandwidth
property is 'CBW80'
or
'CBW160'
, and a full bandwidth allocation is not used.
Data Types: double
| logical
UpperCenter26ToneRU
— Enable upper center 26-tone RU allocation signaling
-1
(default) | 1
(true
) | 0
(false
)
Enable upper center 26-tone RU signaling, specified as -1
to
indicate an unknown status or as a logical value of 1
(true
) or
0
(false
). A value of 1
(true
) indicates the presence of
the upper frequency center 26-tone RU.
You can set this property after decoding the HE-SIG-B field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
, the ChannelBandwidth
property is 'CBW160'
, and a full
bandwidth allocation is not used.
Data Types: double
| logical
NumUsersPerContentChannel
— Number of users per SIGB content channel
-1
(default) | positive integer
Number of users per SIGB content channel, specified as -1
or a
positive integer. A value of -1
indicates an unknown or undefined
number of users.
This property is applicable for both full-bandwidth MU-MIMO and OFDMA allocation. For a full-bandwidth MU-MIMO waveform, the distribution of users on the SIGB content channel is defined in section 27.3.11.8 of [2]. For an OFDMA waveform, the decoded HE-SIG-B common field determines the distribution of users.
For a full-bandwidth MU-MIMO waveform, you can set this property by using the
interpretHESIGABits
object function after decoding the HE-SIG-A field. For an OFDMA waveform, you can set
this property after decoding the HE-SIG-B field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
.
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 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 HE-SIG-B field.
Dependencies
This property applies only when PacketFormat
is 'HE-MU'
.
Data Types: double
RUSize
— RU size for user of interest
-1
(default) | 26
| 52
| 106
| 242
| 484
| 996
| 1992
RU size for user of interest, specified as -1
,
26
, 52
, 106
,
242
, 484
, 996
, or
1992
. A value of -1
indicates an unknown or
undefined RU size.
For an HE SU or HE ER SU packet, you can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field. For an HE MU packet, you can set this
property after decoding the HE-SIG-B field.
Data Types: double
RUIndex
— RU index for user of interest
-1
(default) | positive integer
RU index for user of interest, specified as -1
or a positive
integer. A value of -1
indicates an unknown or undefined RU index.
The RU index specifies the location of the RU within the channel. For example, an 80 MHz
transmission contains four 242-tone RUs (one for each 20 MHz subchannel). RU number
242-1 (size 242, index 1) is the lowest absolute frequency within the 80 MHz channel. RU
number 242-4 is the highest absolute frequency.
For an HE SU or HE ER SU packet, you can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field. For an HE MU packet, you can set this
property after decoding the HE-SIG-B field.
Data Types: double
STAID
— STA identification number
–1 (default) | integer in the interval [–1, 2047]
Station (STA) identification number, specified as an integer in the interval [–1,
2047]. A value of -1
indicates an unknown or undefined STA
identification number.
The STA identification number is defined in section 26.11.1 of [2]. 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 HE-SIG-B field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
.
Data Types: double
MCS
— User-specific MCS
-1
(default) | integer in the interval [–1, 11]
User-specific MCS, specified as an integer in the interval [–1, 11]. 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 | Coding Rate |
---|---|---|
0 | Binary phase-shift keying (BPSK) | 1/2 |
1 | Quadrature phase-shift keying (QPSK) | 1/2 |
2 | 3/4 | |
3 | 16-point quadrature amplitude modulation (16-QAM) | 1/2 |
4 | 3/4 | |
5 | 64-QAM | 2/3 |
6 | 3/4 | |
7 | 5/6 | |
8 | 256-QAM | 3/4 |
9 | 5/6 | |
10 | 1024-QAM | 3/4 |
11 | 5/6 |
You can set this property after decoding the HE-SIG-B field.
Data Types: double
DCM
— DCM indicator
-1
(default) | 1
(true
) | 0
(false
)
DCM 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 DCM is
used for the HE-Data field. A value of 0
(false
) indicates that DCM is
not used.
For an HE SU or HE ER SU packet, you can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field. For an HE MU packet, you can set this
property after decoding the HE-SIG-B field.
Dependencies
DCM can be used only when all of these conditions are satisfied:
The
PacketFormat
property is'HE-SU'
.The
NumSpaceTimeStreams
property is less than or equal to 2.STBC
is0
(false
).The
MCS
property is0
,1
,3
, or4
.
Data Types: double
| logical
ChannelCoding
— FEC coding type
'Unknown'
(default) | 'BCC'
| 'LDPC'
Forward-error-correction (FEC) coding type for the HE-Data field, specified as one of these values:
'Unknown'
– Unknown or undefined channel coding type'BCC'
– Binary convolutional coding (BCC)'LDPC'
– LDPC coding
For an HE SU or HE ER SU packet, you can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field. For an HE MU packet, you can set this
property after decoding the HE-SIG-B field.
Data Types: char
| string
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.
For an HE SU waveform, you can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field. For an HE MU waveform, you can set
this property after decoding the HE-SIG-B field.
Data Types: double
| logical
PreHESpatialMapping
— Spatial mapping of pre-HE-STF portion
-1
(default) | 1
(true
) | 0
(false
)
Spatial mapping of pre-HE-short-training-field (pre-HE-STF) portion of the PPDU,
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 the pre-HE-STF portion of the PPDU is spatially mapped in the same way as
the first symbol of the HE-LTF on each tone.
For a full-bandwidth MU-MIMO waveform, you can set this property by using the
interpretHESIGABits
object function after decoding the HE-SIG-A field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-SU'
.
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 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.
For an HE SU or HE ER SU packet, you can set this property by using the interpretHESIGABits
object function after decoding the HE-SIG-A field. For an HE MU packet, you can set this
property after decoding the HE-SIG-B field.
Data Types: double
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 HE-SIG-B
field.
Dependencies
This property applies only when the PacketFormat
property is 'HE-MU'
Data Types: double
Object Functions
getPSDULength | Calculate HE or WUR PSDU length |
getSIGBLength | Return information relevant to HE-SIG-B field length |
interpretHESIGABits | Interpret HE-SIG-A field bits and update HE transmission parameters |
interpretHESIGBCommonBits | Interpret HE-SIG-B common field bits and update HE transmission parameters |
interpretHESIGBUserBits | Interpret HE-SIG-B user field bits and update HE transmission parameters |
packetFormat | WLAN packet format |
Examples
Create HE-SU Recovery Configuration Object
Create a recovery configuration object with default property values.
cfg = wlanHERecoveryConfig;
Overwrite the default settings by specifying the channel bandwidth, packet format, and L-SIG length of the recovered signal. Display the resultant object.
cfg.ChannelBandwidth = 'CBW40'; cfg.PacketFormat = 'HE-SU'; cfg.LSIGLength = 100; disp(cfg);
wlanHERecoveryConfig with properties: PacketFormat: 'HE-SU' ChannelBandwidth: 'CBW40' LSIGLength: 100 STBC: -1 LDPCExtraSymbol: -1 PreFECPaddingFactor: -1 PEDisambiguity: -1 GuardInterval: -1 HELTFType: -1 NumHELTFSymbols: -1 UplinkIndication: -1 BSSColor: -1 SpatialReuse: -1 TXOPDuration: -1 HighDoppler: -1 MidamblePeriodicity: -1 RUSize: -1 RUIndex: -1 MCS: -1 DCM: -1 ChannelCoding: 'Unknown' Beamforming: -1 PreHESpatialMapping: -1 NumSpaceTimeStreams: -1
Create HE-MU Recovery Configuration Object
Create an HE recovery configuration object for the specified packet format, channel bandwidth, and L-SIG length.
cfg = wlanHERecoveryConfig('PacketFormat','HE-MU','ChannelBandwidth','CBW80','LSIGLength',100);
Display the recovery configuration object.
disp(cfg);
wlanHERecoveryConfig with properties: PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW80' LSIGLength: 100 PreamblePuncturing: 'Unknown' SIGBCompression: -1 SIGBMCS: -1 SIGBDCM: -1 NumSIGBSymbolsSignaled: -1 STBC: -1 LDPCExtraSymbol: -1 PreFECPaddingFactor: -1 PEDisambiguity: -1 GuardInterval: -1 HELTFType: -1 NumHELTFSymbols: -1 UplinkIndication: -1 BSSColor: -1 SpatialReuse: -1 TXOPDuration: -1 HighDoppler: -1 MidamblePeriodicity: -1 AllocationIndex: -1 LowerCenter26ToneRU: -1 NumUsersPerContentChannel: -1 RUTotalSpaceTimeStreams: -1 RUSize: -1 RUIndex: -1 STAID: -1 MCS: -1 DCM: -1 ChannelCoding: 'Unknown' Beamforming: -1 NumSpaceTimeStreams: -1 SpaceTimeStreamStartingIndex: -1
Return HE-SIG-B Field Length Information
Create a WLAN HE-MU-format configuration object, specifying the allocation index.
cfgHEMU = wlanHEMUConfig(0);
Generate a WLAN waveform for the specified configuration and return the PPDU field indices.
waveform = wlanWaveformGenerator(1,cfgHEMU); ind = wlanFieldIndices(cfgHEMU);
Decode the L-SIG field and obtain the OFDM information. This information is required to obtain the L-SIG length, which is used in the recovery configuration object.
lsig = waveform(ind.LSIG(1):ind.LSIG(2),:); lsigDemod = wlanHEDemodulate(lsig,'L-SIG',cfgHEMU.ChannelBandwidth); preHEInfo = wlanHEOFDMInfo('L-SIG',cfgHEMU.ChannelBandwidth);
Recover the L-SIG information bits and related information, making sure that the bits pass the parity check. 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(preHEInfo.DataIndices,:,:),0,csi);
Decode the HE-SIG-A field and recover the HE-SIG-A information 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',cfgHEMU.ChannelBandwidth); preHEInfo = wlanHEOFDMInfo('HE-SIG-A',cfgHEMU.ChannelBandwidth); [bits,failCRC] = wlanHESIGABitRecover(sigaDemod(preHEInfo.DataIndices,:,:),0,csi);
Create a WLAN recovery configuration object, specifying an HE-MU-format packet and the length of the L-SIG field.
cfg = wlanHERecoveryConfig('PacketFormat','HE-MU','LSIGLength',lsigInfo.Length);
Update the recovery configuration object with the recovered HE-SIG-A bits.
cfgUpdated = interpretHESIGABits(cfg,bits);
Return and display the HE-SIG-B information.
info = getSIGBLength(cfgUpdated); disp(info);
NumSIGBCommonFieldSamples: 80 NumSIGBSymbols: 10
Recover HE-Data Field from HE SU Transmission
Configure an HE SU transmission by creating a configuration object with the specified modulation and coding scheme (MCS). Extract the channel bandwidth.
cfgHESU = wlanHESUConfig('MCS',0);
cbw = cfgHESU.ChannelBandwidth;
Create a sequence of data bits and generate an HE SU waveform.
bits = randi([0 1],8*getPSDULength(cfgHESU),1,'int8');
waveform = wlanWaveformGenerator(bits,cfgHESU);
Create a WLAN recovery configuration object, specifying the known channel bandwidth and packet format.
cfgRX = wlanHERecoveryConfig('ChannelBandwidth',cbw,'PacketFormat','HE-SU');
Recover the HE signaling fields by retrieving the field indices and performing the relevant demodulation operations.
ind = wlanFieldIndices(cfgRX); heLSIGandRLSIG = waveform(ind.LSIG(1):ind.RLSIG(2),:); symLSIG = wlanHEDemodulate(heLSIGandRLSIG,'L-SIG',cbw); info = wlanHEOFDMInfo('L-SIG',cbw);
Merge the L-SIG and RL-SIG fields for diversity and obtain the data subcarriers.
symLSIG = mean(symLSIG,2); lsig = symLSIG(info.DataIndices,:);
Decode the L-SIG field, assuming a noiseless channel, and use the length field to update the recovery object.
noiseVarEst = 0; [~,~,lsigInfo] = wlanLSIGBitRecover(lsig,noiseVarEst); cfgRX.LSIGLength = lsigInfo.Length;
Recover and demodulate the HE-SIG-A field, obtain the data subcarriers, and recover the HE-SIG-A bits.
heSIGA = waveform(ind.HESIGA(1):ind.HESIGA(2),:);
symSIGA = wlanHEDemodulate(heSIGA,'HE-SIG-A',cbw);
siga = symSIGA(info.DataIndices,:);
[sigaBits,failCRC] = wlanHESIGABitRecover(siga,0);
Update the recovery configuration object with the recovered HE-SIG-A bits and obtain the updated field indices.
cfgHE = interpretHESIGABits(cfgRX,sigaBits); ind = wlanFieldIndices(cfgHE);
Retrieve and decode the HE-Data field.
heData = waveform(ind.HEData(1):ind.HEData(2),:); symData = wlanHEDemodulate(heData,'HE-Data', ... cbw,cfgHE.GuardInterval,[cfgHE.RUSize cfgHE.RUIndex]); infoData = wlanHEOFDMInfo('HE-Data',cbw,cfgHE.GuardInterval,[cfgHE.RUSize cfgHE.RUIndex]); rxDataSym = symData(infoData.DataIndices,:,:); dataBits = wlanHEDataBitRecover(rxDataSym,noiseVarEst,cfgHE);
Confirm that the recovered bits match the transmitted bits.
isequal(bits,dataBits)
ans = logical
1
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.
References
[1] IEEE Std 802.11™-2020 (Revision of 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® 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 R2019a
See Also
Objects
Functions
wlanFieldIndices
|wlanHEDataBitRecover
|wlanHELTFChannelEstimate
|wlanHESIGABitRecover
|wlanHESIGBCommonBitRecover
|wlanHESIGBUserBitRecover
|wlanLSIGBitRecover
|wlanSampleRate
Topics
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)