wlanHEMUConfig

Create multiuser HE format configuration object

Syntax

cfgHEMU = wlanHEMUConfig(AllocationIndex)
cfgHEMU = wlanHEMUConfig(AllocationIndex,Name,Value)

Description

example

cfgHEMU = wlanHEMUConfig(AllocationIndex) creates a configuration object that initializes parameters for a multiuser IEEE® 802.11™ high efficiency (HE) format PPDU. For a detailed description of the WLAN HE format, see IEEE 802.11ax™ [1].

example

cfgHEMU = wlanHEMUConfig(AllocationIndex,Name,Value) creates a multiuser HE format configuration object that overrides the default settings using one or more Name,Value pair arguments.

Some of the wlanHEMUConfig object properties are read-only or can be set only during object creation using name-value pairs. See wlanHEMUConfig Properties for the complete set of wlanHEMUConfig object properties.

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

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

   Read-only properties:
               RUNumber: 4

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

cfgMU = wlanHEMUConfig(["11000000" "11000000"]);
cfgMU.NumTransmitAntennas = 2;   

Configure the first RU and the first user.

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

Configure the second RU and the second user.

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

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

cfgMU
cfgMU = 
  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]

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

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

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

   Read-only properties:
               RUNumber: 1

ans = 
  wlanHEMUUser with properties:

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

   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

Input Arguments

collapse all

Resource unit (RU) allocation index, specified by 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 OFDMA Allocation Index.

Note

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

Data Types: double | char | string | cell

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: [200 114 114 200],'LowerCenter26ToneRU',true specifies an 80 MHz bandwidth allocation, for three users on three RUs, that uses the lower center 26 tones on the last RU.

Enable lower center 26-tone RU allocation signaling, specified as a logical value. Using name-value pairs when the object is created, specify LowerCenter26ToneRU,true to enable the lower frequency center 26-tone RU. 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. Using name-value pairs when the object is created, specify UpperCenter26ToneRU,true to enable the upper frequency center 26-tone RU. 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

Number of transmit antennas, specified as a positive 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. STBC transmits multiple copies of the data stream across assigned antennas.

  • When set to false, STBC is not applied to the data field, and the number of space-time streams is equal to the number of spatial streams.

  • When set to true, STBC is applied to the data field, and the number of space-time streams is double the number of spatial streams.

Dependencies

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

  • The NumSpaceTimeStreams property is 2.

  • The DCM property is false for all users.

  • No RU specifies MU-MIMO.

Data Types: logical

Cyclic prefix length, in microseconds, for the data field within a packet, specified as 3.2, 1.6, or 0.8.

Data Types: double

HE-LTF compression mode of HE PPDU, specified as 4, 2 or 1. This value corresponds four times, two times, or one times HE-LTF duration compression mode, respectively. The HE-LTF type is enumerated in Table 28-1 of IEEE 802.11ax/D2.0 as:

  • 1x HE-LTF — For 3.2 μs with a guard interval duration of 0.8 μs or 1.6μs

  • 2x HE-LTF — For 6.4 μs with a guard interval duration of 0.8 μs or 1.6 μs

  • 4x HE-LTF — For 12.8 μs with a guard interval duration of 0.8 μs or 3.2 μs

Data Types: double

Modulation and coding scheme for the HE-SIG-B field, specified as a nonnegative integer in the interval [0, 5].

Data Types: double

Enable DCM for the HE-SIG-B field, specified as a logical value.

Dependencies

This property applies only when the MCS property is 0, 1, 3, or 4.

Data Types: logical

Uplink indication, specified as false or true. Specify UplinkIndication as false to indicate that the PPDU is sent on a downlink transmission. Specify UplinkIndication as true to indicate that the PPDU is sent on an uplink transmission.

Data Types: logical

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

Data Types: double

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

Data Types: double

Duration information for TXOP protection, specified as a nonnegative 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 indication, specified as a logical value. Set HighDoppler to true to indicate high Doppler in HE-SIG-A.

Dependencies

The true value for this property is valid only when the NumSpaceTimeStreams property is less than or equal to 4 for any RU.

Data Types: logical

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

Dependencies

This property applies only when HighDoppler is true.

Data Types: double

Output Arguments

collapse all

Multiuser HE PPDU configuration, returned as a wlanHEMUConfig object. The properties of cfgHEMU are described in wlanHEMUConfig Properties.

More About

collapse all

PPDU

The physical layer convergence procedure (PLCP) protocol data unit (PPDU) is the complete PLCP frame, including PLCP headers, MAC headers, the MAC data field, and the MAC and PLCP trailers.

References

[1] IEEE Std P802.11ax™/D2.0 Draft Standard for Information technology — Telecommunications and information exchange between systems — Local and metropolitan area networks — Specific requirements — Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications — Amendment 6: Enhancements for High Efficiency WLAN.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Introduced in R2018b