Main Content

wlanHETBConfig

Configure HE TB transmission

Since R2020a

Description

The wlanHETBConfig object is a configuration object for the WLAN high-efficiency trigger-based (HE TB) packet format.

Creation

Description

cfgHETB = wlanHETBConfig creates a configuration object that initializes parameters for an IEEE® 802.11™ HE TB uplink PPDU or HE TB feedback null data packet (NDP). For a detailed description of the HE WLAN formats, see [2].

example

cfgHETB = wlanHETBConfig(Name,Value) sets properties using one or more name-value pairs. Enclose each property name in single quotes. For example, 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.

example

Properties

expand all

HE TB PPDU and HE TB Feedback NDP Properties

Properties in this section apply to all HE TB transmission configurations.

Generate an HE TB feedback NDP, specified as one of these values.

  • 0 (false) — Generate an HE TB PPDU.

  • 1 (true) — Generate an HE TB feedback NDP.

The HE TB feedback NDP carries the NDP feedback report information described in NDP Feedback Report Procedure.

For more information about the HE TB feedback NDP, see Section 27.3.17 of [2].

Note

To generate a valid wlanHETBConfig object for an HE TB feedback NDP, use the getNDPFeedbackConfiguration object function.

Data Types: logical

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

Power scaling factor of pre-HE PPDU fields, specified as a scalar in the interval [1/√2, 1].

Data Types: double

Number of transmit antennas, specified as a positive integer.

Data Types: double

Cyclic 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.

Dependencies

To enable this property, set the NumTransmitAntennas property to a value greater than 8.

Data Types: double

Number of space-time streams in the transmission, specified as an integer in the interval [1, 8].

Data Types: double

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. If you set the FeedbackNDP property to 1 (true), then you must set this property to 1 or 2.

Data Types: double

Guard interval (cyclic prefix) duration for the data field within a packet, in microseconds, specified as 3.2 or 1.6.

Data Types: double

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 × HE-LTF — Duration of 3.2 microseconds with a guard interval duration of 0.8 or 1.6 microseconds

  • 2 × HE-LTF — Duration of 6.4 microseconds with a guard interval duration of 0.8 or 1.6 microseconds

  • 4 × HE-LTF — Duration of 12.8 microseconds with a guard interval duration of 0.8 or 3.2 microseconds

For more information on the HE-LTF, see Section 27.3.11.10 of [2].

Data Types: double

Number of HE-LTF symbols in the PPDU, specified as 1, 2, 4, 6, or 8.

Dependencies

  • 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

Basic service set (BSS) color identifier, specified as an integer in the interval [0, 63].

Data Types: double

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-22 of [2].

Data Types: double

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-22 of [2].

Data Types: double

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-22 of [2].

Data Types: double

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-22 of [2].

Data Types: double

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-22 of [2].

Data Types: double

HE TB PPDU Properties

Properties in this section apply only when the FeedbackNDP property is 0 (false). Use these properties to configure an HE TB PPDU in response to a trigger frame or a frame that contains a triggered response scheduling (TRS) Control subfield.

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 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

Resource unit (RU) size specified as 26, 52, 106, 242, 484, 996, or 1992.

Data Types: double

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

Spatial mapping scheme, specified as 'Direct', 'Hadamard', 'Fourier', or 'Custom'.

Dependencies

The default value, 'Direct', applies only when you set the NumTransmitAntennas and NumSpaceTimeStreams properties to the same value.

Data Types: char | string

Spatial 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-NTNSTS 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-NTNST 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 ChannelBandwidthValue 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.

Dependencies

To enable this property, set the SpatialMapping property to 'Custom'.

Data Types: double
Complex Number Support: Yes

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.

Dependencies

To enable this property, set the NumSpaceTimeStreams property to 2 and the DCM property to 0 (false).

Data Types: logical

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 this property.

Value of MCSModulation TypeDual Carrier ModulationCoding Rate
0Binary phase-shift keying (BPSK)

0 or 1

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

Not applicable

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

0 or 1

1/2
43/4
564-QAM

Not applicable

2/3
63/4
75/6
8256-QAM3/4
95/6
101024-QAM3/4
115/6

Data Types: double

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). Otherwise, set this property to 0 (false).

Dependencies

You can set this property to 1 (true) only when all of these conditions are satisfied.

Data Types: logical

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).

Dependencies

You can set this property to 'BCC' only when all of these conditions are satisfied.

If you set the TriggerMethod property to 'TRS', you can set this property to 'LDPC' only when all of these conditions are satisfied.

Data Types: char | string

Pre-forward-error-correction (pre-FEC) padding factor, specified as 1, 2, 3, or 4.

Data Types: double

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).

Dependencies

To enable this property, set the ChannelCoding property to 'LDPC'.

Data Types: logical

PE Disambiguity subfield value, specified as 1 (true) or 0 (false). For more information, see Section 27.3.12 of [2].

Data Types: logical

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.

Dependencies

To enable this property, set the TriggerMethod property to 'TriggerFrame'.

Data Types: double

Number of OFDM symbols in the HE-Data field, specified as a positive integer.

Dependencies

To enable this property, set the TriggerMethod property to 'TRS'.

Data Types: double

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].

Dependencies

To enable this property, set the TriggerMethod property to 'TRS'.

Data Types: double

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

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).

Dependencies

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

Midamble periodicity of the HE-Data field, in number of OFDM symbols, specified as 10 or 20.

Dependencies

To enable this property, set the HighDoppler property to 1 (true).

Data Types: double

Reserved bits in the HE-SIG-A field, specified as a nine-element binary-valued column vector.

Data Types: double

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

Post-FEC padding bit seed for the mt19937ar algorithm, specified as a nonnegative integer.

Dependencies

To enable this property, set the PostFECPaddingSource property to "mt19937ar with seed".

Data Types: double

Post-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

HE TB Feedback NDP Properties

Properties in this section apply only when the FeedbackNDP property is 1 (true).

RU tone set index for an HE TB feedback NDP, specified as one of these options.

  • When the ChannelBandwidth property is 'CBW20', set this property to an integer in the interval [1, 18].

  • When the ChannelBandwidth property is 'CBW40', set this property to an integer in the interval [1, 36].

  • When the ChannelBandwidth property is 'CBW80', set this property to an integer in the interval [1, 72].

  • When the ChannelBandwidth property is 'CBW160', set this property to an integer in the interval [1, 144].

This property defines the subcarrier allocation tone sets in the high-efficiency long training field (HE-LTF) on which the STA transmits the HE TB feedback NDP.

Data Types: double

Feedback status, specified as 1 (true) or 0 (false). The value of this property indicates the value of the bit used for tone modulation in each tone set specified by the RUToneSetIndex property. The feedback status and RU tone set index determine the HE-LTF subcarrier mapping in accordance with Table 27-30 of [2].

Data Types: logical

Object Functions

getNDPFeedbackConfigurationValid HE TB feedback NDP PHY configuration
getNumPostFECPaddingBitsCalculate required number of post-FEC padding bits
getPSDULengthCalculate HE or WUR PSDU length
getTRSConfigurationValid HE TB PHY configuration in response to triggering frame containing TRS Control subfield
packetFormat WLAN packet format
ruInfoResource unit allocation information
showAllocationResource unit allocation
transmitTimePacket transmission time

Examples

collapse all

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');

Figure contains an axes object. The axes object with title HE TB Waveform, xlabel Time (nanoseconds), ylabel Amplitude contains an object of type line.

Configure an uplink HE TB feedback NDP transmission with four stations (STAs), a channel bandwidth of 20 MHz, and a signal-to-noise ratio (SNR) of 20 dB.

numSTA = 4;
cbw = 'CBW20';
snr = 20;
cfgSTA = cell(1,numSTA);

Specify the resource unit (RU) tone set index, starting space-time stream, and feedback status for all STAs.

ruToneSetIndex = repmat([1 2],1,round(numSTA/2));
startingSTS = repmat([1 2],1,round(numSTA/2));
feedbackStatus = repmat([1 0],1,round(numSTA/2));

Create a valid HE TB feedback NDP configuration.

cfg = wlanHETBConfig;
cfg = getNDPFeedbackConfiguration(cfg);

Configure the channel for transmission, assuming no variation across STAs.

tgax = wlanTGaxChannel('ChannelBandwidth',cbw, ...
    'TransmissionDirection','Uplink', ...
    'SampleRate',wlanSampleRate(cfg));
chanInfo = info(tgax);
awgn = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)', ...
    'SignalPower',1/tgax.NumReceiveAntennas);

Configure STAs and generate an HE TB feedback NDP waveform.

rx = 0;
for idx = 1:numSTA
    
    % Configure STAs
    
    cfg.RUToneSetIndex = ruToneSetIndex(idx);
    cfg.StartingSpaceTimeStream = startingSTS(idx);
    cfg.FeedbackStatus = feedbackStatus(idx);
    cfgSTA{idx} = cfg;
    
    % Generate transmit waveform
    
    waveform = wlanWaveformGenerator([],cfg);
    
    % Pass waveform through TGax channel
    
    rx = rx + tgax([waveform; zeros(15,size(waveform,2))]);
end

Pass the waveform through the AWGN channel, accounting for the noise energy in nulls to ensure the SNR is defined per active and complementary subcarrier.

field = 'HE-LTF';
ofdmInfo = wlanHEOFDMInfo(field,cbw,cfg.GuardInterval);
awgn.SNR = snr - 10*log10(ofdmInfo.FFTLength/12);
rx = awgn(rx);

Get the field indices and extract the HE-LTF.

ind = wlanFieldIndices(cfgSTA{1});
offset = chanInfo.ChannelFilterDelay;
heltf = rx(offset+(ind.HELTF(1):ind.HELTF(2)),:);

Demodulate the HE-LTF.

rxSym = wlanHEDemodulate(heltf,field,cbw,cfg.GuardInterval,cfg.HELTFType);

Recover the feedback status for the STAs.

status = zeros(1,numSTA);
for n = 1:numSTA
    status(n) = wlanHETBNDPFeedbackStatus(rxSym,cfgSTA{n});
end

Compare the transmitted and received feedback status for the STAs.

disp(isequal(feedbackStatus(1:numSTA),status))
   1

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:

                FeedbackNDP: 0
              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');

Figure contains an axes object. The axes object with title HE TB Waveform, xlabel Time (nanoseconds), ylabel Amplitude contains an object of type line.

More About

expand all

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

Version History

Introduced in R2020a