Create HE TB configuration object
The wlanHETBConfig
object is a configuration object for the WLAN HE
trigger-based (HE TB) packet format.
creates a
configuration object that initializes parameters for an IEEE®
802.11™ HE TB uplink PPDU. For a detailed description of the HE WLAN formats, see
[2].cfgHETB
= wlanHETBConfig
sets
properties using one or more name-value pairs. Enclose each property name in single
quotes. For example, cfgHETB
= wlanHETBConfig(Name,Value)wlanHETBConfig('ChannelBandwidth','CBW80')
specifies a channel bandwidth of 80 MHz.
At runtime, the calling function validates object settings for properties relevant to the operation of the function.
TriggerMethod
— Triggering frame type'TriggerFrame'
(default) | 'TRS'
Triggering frame type, specified as one of these values.
'TriggerFrame'
– Generate an HE TB PPDU in response to a
Trigger frame. For more information about Trigger frames, see section 9.3.1.22 of
[2].
'TRS'
– Generate an HE TB PPDU in response to a frame that
contains a triggered response scheduling (TRS) Control subfield. For more
information, see section 9.2.4.6a.1 of [2].
Note
To generate a valid wlanHETBConfig
object for a transmission in
response to a frame containing a TRS Control subfield, use the getTRSConfiguration
object function.
Data Types: char
| string
ChannelBandwidth
— Channel bandwidth of PPDU transmission'CBW20'
(default) | 'CBW40'
| 'CBW80'
| 'CBW160'
Channel bandwidth of PPDU transmission, specified as one of these values.
'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
RUSize
— RU size242
(default) | 26
| 52
| 106
| 484
| 996
| 1992
Resource unit (RU) size specified as one of these values. 26
,
52
, 106
, 242
,
484
, 996
, or 1992
.
Data Types: double
RUIndex
— RU index for subcarrier allocation1
(default) | integer in the interval [1, 74]RU index for subcarrier allocation, specified as an integer in the interval [1, 74]. 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. Similarly, RU number 242-4 is the highest absolute frequency.
Data Types: double
PreHEPowerScalingFactor
— Power scaling factor for pre-HE PPDU fields1
(default) | scalar in the interval [1/√2, 1]Power scaling factor of pre-HE PPDU fields, specified as a scalar in the interval [1/√2, 1].
Data Types: double
NumTransmitAntennas
— Number of transmit antennas1
(default) | positive integerNumber of transmit antennas, specified as a positive integer.
Data Types: double
PreHECyclicShifts
— Cyclic shift values of additional transmit antennas-75
(default) | integer in the interval [-200, 0] | row vectorCyclic shift values, in nanoseconds, of additional transmit antennas for the pre-HE
fields of the waveform. The first eight antennas use the cyclic shift values specified
in Table 21-10 of [1]. The remaining
L antennas use the values you specify in this property, where L = NumTransmitAntennas
–
8. Specify this property as one of these values:
An integer in the interval [-200, 0] – the wlanHETBConfig
object
uses this cyclic shift value for each of the L additional
antennas.
A row vector of length L – the wlanHETBConfig
object uses the kth entry as the cyclic shift value for the (k + 8)th transmit antenna.
Note
If you specify this property as a row vector of length N > L, the wlanHETBConfig
object uses only the first
L entries. For example, if you set the
NumTransmitAntennas
property to 16
,
the wlanHETBConfig
object uses only the first L = 16 – 8 = 8 entries of this property.
To enable this property, set the NumTransmitAntennas
property to a value greater than
8
.
Data Types: double
NumSpaceTimeStreams
— Number of space-time streams1
(default) | integer in the interval [1, 8]Number of space-time streams in the transmission, specified as an integer in the interval [1, 8].
Data Types: double
StartingSpaceTimeStream
— Starting space-time stream index1
(default) | integer in the interval [1, 8]Starting space-time stream index, in one-based form, specified as an integer in the
interval [1, 8]. In a multi-user multiple-input multiple-output (MU-MIMO) configuration
with multiple users on the same RU, each user must transmit on a distinct space-time
stream. In this case, you must set this property and the NumSpaceTimeStreams
property to ensure that each space-time stream
transmits at most one user.
Data Types: double
SpatialMapping
— Spatial mapping scheme'Direct'
(default) | 'Hadamard'
| 'Fourier'
| 'Custom'
Spatial mapping scheme, specified as 'Direct'
,
'Hadamard'
, 'Fourier'
, or
'Custom'
.
The default value, 'Direct'
, applies only when you set the
NumTransmitAntennas
and NumSpaceTimeStreams
properties to the same value.
Data Types: char
| string
SpatialMappingMatrix
— Spatial mapping matrix1
(default) | complex-valued scalar | complex-valued matrix | complex-valued 3-D arraySpatial mapping matrix, specified as one of these values.
A complex-valued scalar – this value applies to all the subcarriers.
A complex-valued matrix of size NSTS -by-NT – NSTS is the number of space-time streams, and NT is the number of transmit antennas. In this case, the spatial mapping matrix applies to all the subcarriers.
A complex-valued 3-D array of size
NST-by-NSTS-by-NT
– NST is the number of occupied
subcarriers. The ChannelBandwidth
property determines the value of
NST. In this case, each occupied
subcarrier has its own spatial mapping matrix.
This table shows the value of the ChannelBandwidth
property and the corresponding value of
NST.
Value of ChannelBandwidth | Value of NST |
---|---|
'CBW20' | 242 |
'CBW40' | 484 |
'CBW80' | 996 |
'CBW160' | 1992 |
Use this property to rotate and scale the output vector of the constellation mapper. The spatial mapping matrix is used for beamforming and mixing space-time streams over the transmit antennas. The calling function normalizes the spatial mapping matrix for each subcarrier.
Example: [0.5 0.3; 0.4 0.4; 0.5 0.8]
represents a spatial mapping
matrix with three space-time streams and two transmit antennas.
To enable this property, set the SpatialMapping
property to 'Custom'
.
Data Types: double
Complex Number Support: Yes
STBC
— Enable STBCfalse
or 0
(default) | true
or 1
Enable space-time block coding (STBC) of the HE-Data field, specified as
1
(true
) or 0
(false
). STBC transmits multiple copies of the data stream across
assigned antennas.
When you set this property to 0
(false
),
STBC is not applied to the HE-Data field. The number of space-time streams is
equal to the number of spatial streams.
When you set this property to 1
(true
),
STBC is applied to the HE-Data field. The number of space-time streams is twice
the number of spatial streams.
To enable this property, set the NumSpaceTimeStreams
property to 2
and the DCM
property to 0
(false
).
Data Types: logical
MCS
— Modulation and coding scheme0
(default) | integer in the interval [0, 11]Modulation and coding scheme (MCS) used in transmitting the current packet,
specified as an integer in the interval [0, 11]. This table shows the modulation type
and coding rate for each valid value of MCS
.
Value of MCS | Modulation Type | Dual Carrier Modulation | Coding Rate |
---|---|---|---|
0 | Binary phase-shift keying (BPSK) |
| 1/2 |
1 | Quadrature phase-shift keying (QPSK) | 1/2 | |
2 | Not applicable | 3/4 | |
3 | 16-point quadrature amplitude modulation (16-QAM) |
| 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 |
Data Types: double
DCM
— DCM indicatorfalse
or 0
(default) | true
or 1
Dual carrier modulation (DCM) indicator, specified as 1
(true
) or 0
(false
). To use
DCM for the HE-Data field, set this property to 1
(true
).
You can set this property to 1
(true
) only
when all of these conditions are satisfied.
The NumSpaceTimeStreams
property is 1
or
2
.
The MCS
property is 0
, 1
, 3
, or
4
.
The STBC
property is 0
(false
).
Data Types: logical
ChannelCoding
— FEC coding type'LDPC'
(default) | 'BCC'
Forward-error-correction (FEC) coding type for the HE-Data field, specified as
'LDPC'
for low-density parity-check (LDPC) coding or
'BCC'
for binary convolutional coding (BCC).
You can set this property to 'BCC'
only when all of these
conditions are satisfied.
The RUSize
property is 26
, 52
, 106
,
or 242
.
The NumSpaceTimeStreams
property is 1
,
2
, 3
, or 4
.
The MCS
property is not 10
or 11
.
If you set the TriggerMethod
property to 'TRS'
, you can only set
this property to 'LDPC'
when all of these conditions are satisfied.
The RUSize
property is 484
, 996
,
or 1992
.
The PreFECPaddingFactor
property is 4
.
The LDPCExtraSymbol
property is 1
(true
).
Data Types: char
| string
PreFECPaddingFactor
— Pre-FEC padding factor4
(default) | 1
| 2
| 3
Pre-forward-error-correction (pre-FEC) padding factor, specified as
1
, 2
, 3
, or
4
.
Data Types: double
PEDisambiguity
— PE-disambiguity indicator0
(false
) (default) | 1
(true
)Packet extension (PE) disambiguity indicator, specified as 1
(true
) or 0
(false
). For more
information, see section 27.3.12 of [2].
Data Types: logical
LDPCExtraSymbol
— Extra OFDM symbol segment indicator0
(false
) (default) | 1
(true
)Extra orthogonal frequency-division multiplexing (OFDM) symbol segment indicator,
specified as 1
(true
) or 0
(false
). To indicate the presence of an extra OFDM symbol segment
for LDPC coding, set this property to 1
(true
).
Otherwise, set this property to 0
(false
).
To enable this property, set the ChannelCoding
property to 'LDPC'
.
Data Types: logical
LSIGLength
— Length of L-SIG field142
(default) | integer in the interval [1, 4093]Length of L-SIG field, in OFDM symbols, specified as an integer in the interval [1,
4093]. The L-SIG length must satisfy mod(LSIGLength,3)
=
1
, where mod(a,m)
returns the remainder after
dividing a
by m
. For more information, see
mod
.
To enable this property, set the TriggerMethod
property to 'TriggerFrame'
.
Data Types: double
NumDataSymbols
— Number of OFDM symbols in HE-Data field10
(default) | positive integerNumber of OFDM symbols in the HE-Data field, specified as a positive integer.
To enable this property, set the TriggerMethod
property to 'TRS'
.
Data Types: double
GuardInterval
— Guard interval (cyclic prefix) duration3.2
(default) | 1.6
Guard interval (cyclic prefix) duration for the data field within a packet, in
microseconds, specified as 3.2
or 1.6
.
Data Types: double
HELTFType
— HE-LTF compression mode of HE PPDU4
(default) | 2
| 1
HE-LTF compression mode of HE PPDU, specified as 4
,
2
, or 1
. This property indicates the type of
HE-LTF, where a value of 4
, 2
, or
1
corresponds to four, two, or one multiple of the HE-LTF duration
compression mode, respectively. Table 27-1 of [2] enumerates the
HE-LTF type options as:
1 x HE-LTF – Duration of 3.2 μs with a guard interval duration of 0.8 μs or 1.6μs
2 x HE-LTF – Duration of 6.4 μs with a guard interval duration of 0.8 μs or 1.6 μs
4 x HE-LTF – Duration of 12.8 μs with a guard interval duration of 0.8 μs or 3.2 μs
For more information on the HE-LTF, see Section 27.3.10.10 of [2].
Data Types: double
NumHELTFSymbols
— Number of HE-LTF symbols in PPDU1
(default) | 2
| 4
| 6
| 8
Number of HE-LTF symbols in the PPDU, specified as 1
,
2
, 4
, 6
, or
8
.
If you set the TriggerMethod
property to 'TRS'
, then you must
set this property to 1
.
If you set the HighDoppler
property to 1
(true
), then you must set this property to
1
, 2
, or 4
.
Data Types: double
SingleStreamPilots
— HE-LTF single-stream pilots indicatortrue
or 1
(default) | false
or 0
HE-LTF single-stream pilots indicator, specified as 1
(true
) or 0
(false
). To
indicate that the HE-LTF uses single-stream pilots, set this property to
1
(true
). Otherwise, set this property to
0
(false
).
Data Types: logical
BSSColor
— BSS color identifier0
(default) | integer in the interval [0, 63]Basic service set (BSS) color identifier, specified as an integer in the interval [0, 63].
Data Types: double
SpatialReuse1
— Value of Spatial Reuse 1 subfield15
(default) | integer in the interval [0, 15]Value of Spatial Reuse 1 subfield in the HE-SIG-A field, specified as an integer in the interval [0, 15]. For more information, see Table 27-20 of [2].
Data Types: double
SpatialReuse2
— Value of Spatial Reuse 2 subfield15
(default) | integer in the interval [0, 15]Value of Spatial Reuse 2 subfield in the HE-SIG-A field, specified as an integer in the interval [0, 15]. For more information, see Table 27-20 of [2].
Data Types: double
SpatialReuse3
— Value of Spatial Reuse 3 subfield15
(default) | integer in the interval [0, 15]Value of Spatial Reuse 3 subfield in the HE-SIG-A field, specified as an integer in the interval [0, 15]. For more information, see Table 27-20 of [2].
Data Types: double
SpatialReuse4
— Value of Spatial Reuse 4 subfield15
(default) | integer in the interval [0, 15]Value of Spatial Reuse 4 subfield in the HE-SIG-A field, specified as an integer in the interval [0, 15]. For more information, see Table 27-20 of [2].
Data Types: double
TXOPDuration
— Duration information for TXOP protection127
(default) | integer in the interval [0, 127]Duration information for transmit opportunity (TXOP) protection, specified as an integer in the interval [0, 127]. Except for the first bit, which specifies TXOP length granularity, each bit of the TXOP subfield in the HE-SIG-A field is equal to the value of this property. Therefore, a duration in microseconds must be converted according to the procedure set out in Table 27-20 of [2].
Data Types: double
HighDoppler
— High-Doppler mode indicatorfalse
or 0
(default) | true
or 1
High-Doppler mode indicator, specified as 1
(true
) or 0
(false
). To
indicate high-Doppler mode in the HE-SIG-A field, set this property to
1
(true
). Otherwise, set this property to
0
(false
).
You can set this property to 1
(true
) only
when the TriggerMethod
property is 'TriggerFrame'
and the
NumSpaceTimeStreams
property is 1
,
2
, 3
, or 4
for any
RU.
Data Types: logical
MidamblePeriodicity
— Midamble periodicity of HE-Data field10
(default) | 20
Midamble periodicity of the HE-Data field, in number of OFDM symbols, specified as
10
or 20
.
To enable this property, set the HighDoppler
property to 1
(true
).
Data Types: double
DefaultPEDuration
— Packet extension duration0
(default) | 4
| 8
| 12
| 16
Packet extension duration, in microseconds, specified as 0
,
4
, 8
, 12
, or
16
. For more information about the packet extension field, see
Section 27.3.12 of [2].
To enable this property, set the TriggerMethod
property to 'TRS'
.
Data Types: double
HESIGAReservedBits
— Reserved bits in HE-SIG-A fieldones(9,1)
(default) | nine-element binary-valued column vectorReserved bits in the HE-SIG-A field, specified as a nine-element binary-valued column vector.
Data Types: double
PostFECPaddingSource
— Post-FEC padding bit source'mt19937ar with seed'
(default) | 'Global stream'
| 'User-defined'
Post-FEC padding bit source used by the wlanWaveformGenerator
function, specified as one of these values.
'mt19937ar with seed'
— Generate normally
distributed random bits by using the mt19937ar algorithm with seed specified
in the PostFECPaddingSeed
property.
'Global stream'
— Generate normally distributed
random bits by using the current global random number stream.
'User-defined'
— Use the bits specified in the
PostFECPaddingBits
property as the post-FEC padding
bits.
Data Types: char
| string
PostFECPaddingSeed
— Post-FEC padding bit seed for mt19937ar algorithm73
(default) | nonnegative integerPost-FEC padding bit seed for the mt19937ar algorithm, specified as a nonnegative integer.
To enable this property, set the PostFECPaddingSource
property to 'mt19937ar with seed'
.
Data Types: double
PostFECPaddingBits
— Post-FEC padding bits0
(default) | binary-valued column vectorPost-FEC padding bits, specified as a binary-valued scalar or column vector.
To generate a waveform, the wlanWaveformGenerator
function requires
n bits, where n depends on the specified
configuration. To calculate n, use the getNumPostFECPaddingBits
object function with the specified
configuration object as the input argument and specify this property as a vector of
length n. Alternatively, specify this input as a binary-valued scalar
or column vector of arbitrary length. If the length of this property is less than
n, the waveform generator loops the vector to create a vector of
length n. If the length of this property is greater than
n, the function uses only the first n entries
as the post-FEC padding bits.
Note
For C/C++ code generation, you must specify the data type of this property as
int8
.
Data Types: single
| double
| int8
getNumPostFECPaddingBits | Calculate required number of post-FEC padding bits |
getPSDULength | Calculate HE PSDU length |
getTRSConfiguration | Valid HE TB PHY configuration in response to triggering frame containing TRS Control subfield |
packetFormat | Return WLAN packet format |
ruInfo | Return HE format resource unit allocation information |
showAllocation | Show resource unit (RU) allocation |
Configure and generate a WLAN waveform containing an HE TB uplink packet.
Create a configuration object for a WLAN HE TB uplink transmission.
cfgHETB = wlanHETBConfig;
Obtain the PSDU length, in bytes, from the configuration object by using the getPSDULength
object function.
psduLength = getPSDULength(cfgHETB);
Generate a PSDU of the relevant length.
psdu = randi([0 1],8*psduLength,1);
Generate and plot the waveform.
waveform = wlanWaveformGenerator(psdu,cfgHETB); figure; plot(abs(waveform)); title('HE TB Waveform'); xlabel('Time (nanoseconds)'); ylabel('Amplitude');
Configure and generate a WLAN HE TB waveform to be transmitted in response to a frame containing a TRS Control subfield.
Create an HE TB configuration object, specifying the triggering frame type.
cfgHETB = wlanHETBConfig('TriggerMethod','TRS');
Generate a valid configuration by using the getTRSConfiguration
object function, displaying the result.
cfgTRS = getTRSConfiguration(cfgHETB)
cfgTRS = wlanHETBConfig with properties: TriggerMethod: 'TRS' ChannelBandwidth: 'CBW20' RUSize: 242 RUIndex: 1 PreHEPowerScalingFactor: 1 NumTransmitAntennas: 1 NumSpaceTimeStreams: 1 StartingSpaceTimeStream: 1 SpatialMapping: 'Direct' STBC: 0 MCS: 0 DCM: 0 ChannelCoding: 'BCC' PreFECPaddingFactor: 4 NumDataSymbols: 10 DefaultPEDuration: 0 GuardInterval: 3.2000 HELTFType: 4 NumHELTFSymbols: 1 SingleStreamPilots: 1 BSSColor: 0 SpatialReuse1: 15 SpatialReuse2: 15 SpatialReuse3: 15 SpatialReuse4: 15 TXOPDuration: 127 HighDoppler: 0 HESIGAReservedBits: [9x1 double] PostFECPaddingSource: 'mt19937ar with seed' PostFECPaddingSeed: 73
Get the PSDU length in bytes and generate a PSDU for transmission.
psduLength = getPSDULength(cfgTRS); psdu = randi([0 1],8*psduLength,1);
Generate and plot the waveform.
waveform = wlanWaveformGenerator(psdu,cfgTRS); figure; plot(abs(waveform)); title('HE TB Waveform'); xlabel('Time (nanoseconds)'); ylabel('Amplitude');
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.
[1] IEEE Std 802.11-2016 (Revision of IEEE Std 802.11-2012). “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 P802.11ax™/D4.1. “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 1: Enhancements for High Efficiency WLAN.” Draft Standard for Information technology — Telecommunications and information exchange between systems. Local and metropolitan area networks — Specific requirements.
You must specify the data type of the postFECPaddingBits
property
as int8
.
wlanDMGConfig
| wlanHEMUConfig
| wlanHERecoveryConfig
| wlanHTConfig
| wlanNonHTConfig
| wlanS1GConfig
| wlanVHTConfig
getPSDULength
| getTRSConfiguration
| packetFormat
| ruInfo
| showAllocation
| wlanHEDemodulate
| wlanWaveformGenerator
You have a modified version of this example. Do you want to open this example with your edits?