wlanHEMUConfig

Create HE-MU-format configuration object

Description

The wlanHEMUConfig object is a high-efficiency-format (HE-format) configuration object for the WLAN HE multiuser (HE MU) packet format.

Creation

Description

example

cfgHEMU = wlanHEMUConfig(AllocationIndex) creates cfgHEMU, a configuration object that initializes transmit parameters for a multiuser IEEE® 802.11™ HE-format PPDU for AllocationIndex, the input resource unit allocation. For a detailed description of the HE WLAN format, see [1].

example

cfgHEMU = wlanHEMUConfig(AllocationIndex,Name,Value) sets properties using one or more name-value pairs. Enclose each property name in quotation marks. For example, wlanHEMUConfig([200 114 114 200],'LowerCenter26ToneRU',true) specifies an 80-MHz bandwidth allocation for three users on three RUs with lower center 26-tone RU allocation signaling.

At runtime, the calling function validates object settings for properties relevant to the operation of the function.

Properties

expand all

Resource unit (RU) allocation index, specified as one, two, four, or eight integer values in the interval [0,223]. You can specify this value as an integer, a vector of integers, a string array, a character vector, or a cell array of character vectors. The format in which you specify these indices depends on how many you are specifying.

  • Specify a single allocation index using one integer in either of these forms:

    • A scalar integer

    • An 8-bit binary sequence specified as a string or character vector

  • Specify multiple allocation indices using two, four, or eight integer values in any of these forms:

    • A vector of integers

    • An 8-bit binary sequence specified as a string array

    • An 8-bit binary sequence specified as a cell array of character vectors

The allocation defines the number of RUs, the size of each RU, and the number of users assigned to each RU. For more information, see Allocation Index.

Note

This property is read-only after the object is created.

Data Types: double | char | string | cell

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

When you create a wlanHEMUConfig object, this property is configured based on the value to which you set the AllocationIndex property.

Note

This property is read-only after the object is created.

Data Types: char | string

Enable lower center 26-tone RU allocation signaling, specified as a logical value of 1 (true) or 0 (false). To enable the lower frequency center 26-tone RU, set this property to 1 (true). This property can be set during object creation only.

Dependencies

This property applies only when the AllocationIndex property defines a channel bandwidth of 80 MHz or 160 MHz and does not specify a full bandwidth allocation.

Data Types: logical

Enable upper center 26-tone RU allocation signaling, specified as a logical value of 1 (true) or 0 (false). To enable the upper frequency center 26-tone RU, set this property to 1 (true). This property can be set during object creation only.

Dependencies

This property applies only when the AllocationIndex property defines a channel bandwidth of 80 MHz or 160 MHz and does not specify a full bandwidth allocation.

Data Types: logical

Transmission properties of each RU in the transmission, specified as a cell array of wlanHEMURU objects. When you create a wlanHEMUConfig object, this property is configured based on the value to which you set the AllocationIndex property.

Each element of the RU cell array contains these subproperties:

Power boost factor, specified as a scalar in the interval [0.5, 2].

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 property equal to the sum of the number space-time streams for all users assigned to the RU.

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 NSTSTotal -by-NT, where:

    • NSTSTotal is the sum of the number of the space-time streams for all users assigned to the RU;

    • 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 Size-by-NSTSTotal-by-NT. The ChannelBandwidth property determines the value of the Size property. In this case, each occupied subcarrier has its own spatial mapping matrix.

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

This property applies only when you set the SpatialMapping property to 'Custom'.

Data Types: double
Complex Number Support: Yes

Enable beamforming, specified as a logical value of 1 (true) or 0 (false). To apply a beamforming steering matrix, set this property to 1 (true). The SpatialMappingMatrix property specifies the beamforming steering matrix.

Dependencies

This property applies only when you set the SpatialMapping property to 'Custom'.

Data Types: logical

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

Note

This property is read-only after the object is created.

Data Types: double

Resource unit index, specified as an integer in the interval [1, 74]. Use this property to indicate the location of the RU within the channel.

Note

This property is read-only after the object is created.

Example: In an 80-MHz transmission there are four possible 242-tone RUs, one in each 20-MHz subchannel. RU 242-1 (Size = 242, Index = 1) is the RU occupying the lowest absolute frequency within the 80MHz, and RU 242-4 (Size = 242, Index = 4) is the RU occupying the highest absolute frequency.

Data Types: double

Indices of users transmitted on the RU, in one-based format, specified as an integer or a vector of integers. This property indexes the appropriate cell array element of the User property.

Data Types: double

Data Types: cell

Transmission properties of each user, specified as a cell array of wlanHEMUUser objects. When you create a wlanHEMUConfig object, this property is configured based on the value to which you set the AllocationIndex property.

Each element of the User cell array contains these subproperties:

Aggregated MPDU (A-MPDU) pre-end-of-frame (pre-EOF) padding (APEP) length, in bytes, specified as an integer in the interval [0, 6500531].

This property is used internally to determine the number of OFDM symbols in the data field. For more information, see [1].

Data Types: double

Modulation and coding scheme (MCS) used for transmission, specified as a nonnegative integer in the interval [0, 11]. Each value of this property corresponds to an MCS according to Tables 28-51–28-107 of [1]. This table shows the modulation type and coding rate for each valid value of MCS:

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

0 or 1

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

0 or 1

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

Number of space-time streams in the transmission, specified as an integer in the interval [1, 8]. The maximum number of space-time streams for any user within a MU-MIMO RU is four. The maximum value of the sum of the number of space-time streams over all users in an RU is eight. For information on these and other restrictions on the number of space-time streams, see Tables 28-1 and 28-27 of [1].

Data Types: double

Dual carrier modulation (DCM) indicator, specified as a logical value of 1 (true) or 1 (false). To indicate that DCM is used for the HE-Data field, set this property to 1 (true).

Dependencies

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

  • The MCS property is 0, 1, 3, or 4.

  • The STBC property is 0 (false).

  • The NumSpaceTimeStreams property is less than or equal to 2.

  • The RU property defines a single-user RU.

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 only set this property to 'BCC' when all of these conditions are satisfied:

  • The MCS property is not 10 or 11.

  • The size of any RU is less than or equal to 242. Obtain the RU sizes by using the ruInfo object function.

  • The NumSpaceTimeStreams property is less than or equal to 4.

Data Types: char | string

Station (STA) identifier, specified as an integer in the interval [0, 2047]. The value of this property specifies the station association identifier (AID) field as defined in Section 27.11.1 of [1]. The 11 least significant bits (LSBs) of the AID field are used to address the STA. When you set this property to 2046, the associated RU carries no data.

Data Types: double

RU number, specified as an integer or a vector of integers. This property indexes the appropriate cell array elements of the RU property.

Note

This property is read-only after the object is created.

Data Types: double

Nominal packet padding, in microseconds, specified as 0, 8, or 16. The wlanHEMUConfig object uses this property and the pre-forward-error-correction (pre-FEC) padding factor to calculate the duration, TPE, of the packet extension field. For more information about the packet extension field, see Section 28.3.12 of [1].

This table shows the possible values of TPE for different values of this property and a, a parameter defined by equation (28-72) or (28-73) of [1].

Value of aValue of TPE in Microseconds
NominalPacketPadding Set to 0NominalPacketPadding Set to 8NominalPacketPadding Set to 16
1004
2008
30412
40816

For an HE MU PPDU, equation (28-114) of [1] defines the value of TPE as the maximum of the TPE values specified for each user.

Data Types: double

Data Types: cell

Number of transmit antennas, specified as an integer in the interval [1, 8].

Data Types: double

Enable space-time block coding (STBC) of the PPDU data field for all users, specified as a logical value of 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 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 data field. The number of space-time streams is twice the number of spatial streams.

Dependencies

This property applies only when all of these conditions are satisfied:

  • The NumSpaceTimeStreams subproperty of each element of the User property is 2.

  • The DCM subproperty of each element of the User property is 0 (false).

  • No RU specifies multiuser multiple input/multiple output (MU-MIMO).

Data Types: logical

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

Data Types: double

HE-LTF compression mode, specified as 4 or 2. This property indicates the type of HE-LTF, where a value of 4 or 2corresponds to four times or two times HE-LTF duration compression mode, respectively. The HE-LTF type is enumerated in Table 28-1 of [1] as:

  • 2xHE-LTF – Duration of 6.4 μs with a guard interval duration of 0.8 μs or 1.6 μs

  • 4xHE-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 28.3.10.10 of [1].

Data Types: double

HE-SIG-B compression indicator, specified as a logical value of 1 (true) or 0 (false). To enable HE-SIG-B compression for a full-bandwidth 20-MHz MU-MIMO transmission, set this property to 1 (true).

Dependencies

This property applies only when you indicate a 20-MHz channel bandwidth by setting the AllocationIndex to a value in the interval [192,199].

Data Types: logical

Modulation and coding scheme (MCS) for the HE-SIG-B field, specified as an integer in the interval [0, 5].

Data Types: double

HE-SIG-B dual-carrier modulation (DCM) indicator, specified 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.

Dependencies

This property applies only when the MCS subproperty of each element of the User property is 0, 1, 3, or 4.

Data Types: logical

Uplink indication, specified as a logical value of 1 (true) or 0 (false). To indicate that the PPDU is sent on a downlink transmission, set this property to 0 (false). To indicate that the PPDU is sent on an uplink transmission, set this property to 1 (true).

Data Types: logical

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

Data Types: double

Spatial reuse indication, specified as an integer in the interval [0, 15].

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 field of HE-SIG-A is equal to TXOPDuration. Therefore a duration in microseconds must be converted according to the procedure set out in Table 28-18 of [1].

Data Types: double

High-Doppler mode indicator, specified as a logical value of 0 (false) or 1 (true). To indicate high-Doppler mode in the HE-SIG-A field, set this property to 1 (true).

Dependencies

The 1 (true) value for this property is valid only when the NumSpaceTimeStreams subproperty of each element of the RU property is less than or equal to 4.

Data Types: logical

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

Dependencies

This property applies only when the HighDoppler property is 1 (true).

Data Types: double

Object Functions

getPSDULengthReturn HE format PSDU length
packetFormat Return WLAN packet format
ruInfoReturn HE format resource unit allocation information
showAllocationShow resource unit (RU) allocation

Examples

collapse all

Create a 20 MHz multiuser HE configuration object with the allocation index set to 0. An allocation index of 0 specifies nine 26-tone RUs in a 20 MHz channel.

cfgMU = wlanHEMUConfig(0);
for i=1:numel(cfgMU.User)
    % Set the APEPLength of each user
    cfgMU.User{i}.APEPLength = 100;
end

Display the configuration object properties for the fourth user.

cfgMU.User{4}
ans = 
  wlanHEMUUser with properties:

              APEPLength: 100
                     MCS: 0
     NumSpaceTimeStreams: 1
                     DCM: 0
           ChannelCoding: 'LDPC'
                   STAID: 0
    NominalPacketPadding: 0

   Read-only properties:
                RUNumber: 4

Create a 40-MHz HE MU configuration with an allocation index of 11000000 for each 20-MHz subchannel. This configuration specifies two 242-tone RUs, each with one user.

cfgHEMU = wlanHEMUConfig(["11000000" "11000000"],'NumTransmitAntennas',2);

Configure the first RU and the first user.

cfgHEMU.RU{1}.SpatialMapping = 'Direct';
cfgHEMU.User{1}.APEPLength = 1e3;
cfgHEMU.User{1}.MCS = 2;
cfgHEMU.User{1}.NumSpaceTimeStreams = 2;
cfgHEMU.User{1}.ChannelCoding = 'LDPC';
cfgHEMU.User{1}.NominalPacketPadding = 16;

Configure the second RU and the second user.

cfgHEMU.RU{2}.SpatialMapping = 'Fourier';
cfgHEMU.User{2}.APEPLength = 500;
cfgHEMU.User{2}.MCS = 3;
cfgHEMU.User{2}.NumSpaceTimeStreams = 1;
cfgHEMU.User{2}.ChannelCoding = 'LDPC';
cfgHEMU.User{2}.NominalPacketPadding = 8;

Display the configuration object properties for both RUs and both users.

disp(cfgHEMU)
  wlanHEMUConfig with properties:

                     RU: {[1x1 wlanHEMURU]  [1x1 wlanHEMURU]}
                   User: {[1x1 wlanHEMUUser]  [1x1 wlanHEMUUser]}
    NumTransmitAntennas: 2
                   STBC: 0
          GuardInterval: 3.2000
              HELTFType: 4
                SIGBMCS: 0
                SIGBDCM: 0
       UplinkIndication: 0
               BSSColor: 0
           SpatialReuse: 0
           TXOPDuration: 127
            HighDoppler: 0

   Read-only properties:
       ChannelBandwidth: 'CBW40'
        AllocationIndex: [192 192]
cfgHEMU.RU{1:2}
ans = 
  wlanHEMURU with properties:

    PowerBoostFactor: 1
      SpatialMapping: 'Direct'

   Read-only properties:
                Size: 242
               Index: 1
         UserNumbers: 1

ans = 
  wlanHEMURU with properties:

    PowerBoostFactor: 1
      SpatialMapping: 'Fourier'

   Read-only properties:
                Size: 242
               Index: 2
         UserNumbers: 2

cfgHEMU.User{1:2}
ans = 
  wlanHEMUUser with properties:

              APEPLength: 1000
                     MCS: 2
     NumSpaceTimeStreams: 2
                     DCM: 0
           ChannelCoding: 'LDPC'
                   STAID: 0
    NominalPacketPadding: 16

   Read-only properties:
                RUNumber: 1

ans = 
  wlanHEMUUser with properties:

              APEPLength: 500
                     MCS: 3
     NumSpaceTimeStreams: 1
                     DCM: 0
           ChannelCoding: 'LDPC'
                   STAID: 0
    NominalPacketPadding: 8

   Read-only properties:
                RUNumber: 2

HE MU-MIMO Configuration With SIGB Compression

Use Only User Field Bits

Generate a full bandwidth HE MU-MIMO configuration at 20MHz bandwidth with SIGB compression. All three users are on a single content channel, which includes only the user field bits.

cfgHE = wlanHEMUConfig(194);
cfgHE.NumTransmitAntennas = 3;

Create PSDU data for all users.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Generate and plot the waveform.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y))

HE-SIG-B Content Assign 4 Users in Channel 1 and 3 Users in Channel 2

Generate a full bandwidth HE MU-MIMO waveform at 80MHz bandwidth with SIGB compression. HE-SIG-B content channel 1 has four users. HE-SIG-B content channel 2 has three users.

cfgHE = wlanHEMUConfig(214);
cfgHE.NumTransmitAntennas = 7;

Create PSDU data for all users.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Generate and plot the waveform.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y));

HE MU-MIMO Configuration Without SIGB Compression

Use Common and User Field Bits

Generate a full bandwidth HE MU-MIMO configuration at 20MHz bandwidth without SIGB compression. All three users are on a single content channel, which includes both common and user field bits.

cfgHE = wlanHEMUConfig(194);
cfgHE.SIGBCompression = false;
cfgHE.NumTransmitAntennas = 3;

Create PSDU data for all users.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Generate and plot the waveform.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y))

HE-SIG-B Content Assign 4 Users in Channel 1 and 2 Users in Channel 2

Generate an 80 MHz HE MU waveform for six users without SIGB compression. HE-SIG-B content channel 1 has four users. HE-SIG-B content channel 2 has two users.

cfgHE = wlanHEMUConfig([202 114 192 193]);
cfgHE.NumTransmitAntennas = 6;
for i = 1:numel(cfgHE.RU)
    cfgHE.RU{i}.SpatialMapping = 'Fourier';
end

Create PSDU data for all users.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Generate and plot the waveform.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y));

HE-SIG-B Content Assign 7 Users in Channel 1 and No Users in Channel 2

Generate a full bandwidth HE MU-MIMO waveform at 80MHz bandwidth without SIGB compression. HE-SIG-B content channel 1 has seven users. HE-SIG-B content channel 2 has no users.

cfgHE = wlanHEMUConfig([214 115 115 115]);
cfgHE.NumTransmitAntennas = 7;

Create PSDU data for all users.

psdu = cell(1,numel(cfgHE.User));
psduLength = getPSDULength(cfgHE);
for j = 1:numel(cfgHE.User)
    psdu = randi([0 1],psduLength(j)*8,1,'int8');
end

Generate and plot the waveform.

y = wlanWaveformGenerator(psdu,cfgHE);
plot(abs(y))

Create an 80 MHz MU-MIMO configuration with three users in a single RU with SIG-B compression. Display the configuration object properties.

cfgMU = wlanHEMUConfig(210);
cfgMU.NumTransmitAntennas = 3;
cfgMU.User{1}.NumSpaceTimeStreams = 1;
cfgMU.User{2}.NumSpaceTimeStreams = 1;
cfgMU.User{3}.NumSpaceTimeStreams = 1;
disp(cfgMU)
  wlanHEMUConfig with properties:

                     RU: {[1x1 wlanHEMURU]}
                   User: {1x3 cell}
    NumTransmitAntennas: 3
                   STBC: 0
          GuardInterval: 3.2000
              HELTFType: 4
                SIGBMCS: 0
                SIGBDCM: 0
       UplinkIndication: 0
               BSSColor: 0
           SpatialReuse: 0
           TXOPDuration: 127
            HighDoppler: 0

   Read-only properties:
       ChannelBandwidth: 'CBW80'
        AllocationIndex: 210

Create a 160 MHz configuration using the upper center 26-tone RU. A total of four RUs are created. The RU tone assignments are 996, 484, 484, and 26. One user is allocated to each RU. The last RU created is the center 26-tone RU. Display the configuration properties of the object.

cfgMU = wlanHEMUConfig([208 115 115 115 200 114 114 200], ...
    'UpperCenter26ToneRU',true);
cfgMU.RU{:}
ans = 
  wlanHEMURU with properties:

    PowerBoostFactor: 1
      SpatialMapping: 'Direct'

   Read-only properties:
                Size: 996
               Index: 1
         UserNumbers: 1

ans = 
  wlanHEMURU with properties:

    PowerBoostFactor: 1
      SpatialMapping: 'Direct'

   Read-only properties:
                Size: 484
               Index: 3
         UserNumbers: 2

ans = 
  wlanHEMURU with properties:

    PowerBoostFactor: 1
      SpatialMapping: 'Direct'

   Read-only properties:
                Size: 484
               Index: 4
         UserNumbers: 3

ans = 
  wlanHEMURU with properties:

    PowerBoostFactor: 1
      SpatialMapping: 'Direct'

   Read-only properties:
                Size: 26
               Index: 56
         UserNumbers: 4

More About

expand all

References

[1] IEEE P802.11ax™/D3.1. “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 6: 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™.

Introduced in R2018b