wlanHEMUConfig
Configure HE MU transmission
Description
The wlanHEMUConfig
object is a configuration object for the WLAN
high-efficiency multi-user (HE MU) packet format.
Creation
Description
sets properties using one or more name-value pairs. Enclose each property name in
quotation marks. For example, cfgHEMU
= wlanHEMUConfig(AllocationIndex
,Name,Value)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
AllocationIndex
— Resource unit allocation index
integer | vector of integers | character vector | cell array
Resource unit (RU) allocation index for each 20 MHz subchannel. This property 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.
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.
An integer in the interval [0, 223]
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 in the interval [0, 223]
An 8-bit binary sequence specified as a string array
An 8-bit binary sequence specified as a cell array of character vectors
In an 80 MHz transmission, you can signal a punctured 20 MHz subchannel at any location.
In a 160 MHz transmission, you can signal a punctured 20 or 40 MHz subchannel. You can only signal a punctured 20 MHz subchannel in the 40 MHz subchannel containing the primary 20 MHz subchannel, as shown in this figure.
Similarly, you can only signal a punctured 40 MHz subchannel in the 80 MHz subchannel containing the primary 20 MHz subchannel, as shown in this figure.
To signal a punctured 20 MHz subchannel, set the corresponding element of this property to
113
. To signal a punctured 40 MHz subchannel, set the two corresponding adjacent elements to114
.To signal an empty HE-SIG-B user field in an HE-SIG-B content channel, set the corresponding element of this property to
114
or115
.
Note
This property is read-only after the object is created.
Data Types: double
| char
| string
| cell
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
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
LowerCenter26ToneRU
— Enable lower center 26-tone RU allocation signaling
false
or 0
(default) | true
or 1
Enable lower center 26-tone RU allocation signaling, specified as a numeric or
logical 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
UpperCenter26ToneRU
— Enable upper center 26-tone RU allocation signaling
false
or 0
(default) | true
or 1
Enable upper center 26-tone RU allocation signaling, specified as a numeric or
logical 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
RU
— Transmission properties of each RU in transmission
cell array of wlanHEMURU
objects
Transmission properties of each RU in the transmission, specified as a cell array of
wlanHEMURU
objects. When you
create a wlanHEMUConfig
object, the AllocationIndex
property determines this property.
Data Types: cell
User
— Transmission properties of each user
cell array of wlanHEMUUser
objects
Transmission properties of each user, specified as a cell array of wlanHEMUUser
objects. When you
create a wlanHEMUConfig
object, the AllocationIndex
property determines this property.
Data Types: cell
PrimarySubchannel
— Index of primary 20 MHz subchannel
1
(default) | integer in the interval [1, 8]
Index of primary 20 MHz subchannel in an 80 or 160 MHz transmission, specified as one of these options.
When the
ChannelBandwidth
property is'CBW80'
, set this property to an integer in the interval [1, 4].When the
ChannelBandwidth
property is'CBW160'
, set this property to an integer in the interval [1, 8].
The location of the primary subchannel and the preamble puncturing pattern (defined
by the AllocationIndex
property) determine the bandwidth value signaled in the
HE-SIG-A field of the transmission, as specified in Table 27-20 of [2].
Dependencies
This property applies only when the AllocationIndex
property defines a channel bandwidth of 80 MHz or 160
MHz.
Data Types: double
NumTransmitAntennas
— Number of transmit antennas
1
(default) | positive integer
Number 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 vector
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
wlanHEMUConfig
object uses this cyclic shift value for each of the L additional antennas.A row vector of length L of integers in the interval [–200, 0] – the
wlanHEMUConfig
object uses the kth element as the cyclic shift value for the (k + 8)th transmit antenna.Note
If you specify this property as a row vector of length greater than L, the
wlanHEMUConfig
object uses only the first L elements. For example, if you set theNumTransmitAntennas
property to16
, thewlanHEMUConfig
object uses only the first L = 16 – 8 = 8 elements of this vector.
Dependencies
To enable this property, set the NumTransmitAntennas
property to a value greater than
8
.
Data Types: double
STBC
— Enable space-time block coding
false
or 0
(default) | true
or 1
Enable space-time block coding (STBC) of the PPDU data field for all users,
specified as a numeric or logical 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 theUser
property is2
.The
MCS
subproperty of each element of theUser
property is0
(false
).No RU specifies multi-user multiple input/multiple output (MU-MIMO).
Data Types: logical
GuardInterval
— Guard interval (cyclic prefix) duration
3.2
(default) | 1.6
| 0.8
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
HELTFType
— HE-LTF compression mode
4
(default) | 2
HE-LTF compression mode, specified as 4
or 2
.
This property indicates the type of HE-LTF, where a value of 4
or
2
corresponds to four times or two times HE-LTF duration compression
mode, respectively. The HE-LTF type is enumerated in Table 27-1 of [2]
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 27.3.11.10 of [2].
Data Types: double
SIGBCompression
— HE-SIG-B compression indicator
true
or 1
(default) | false
or 0
HE-SIG-B compression indicator, specified as a numeric or logical
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].
Note
This property is not used for bandwidths of 40, 80, or 160 MHz because, at these
bandwidths, the AllocationIndex
alone determines if HE-SIG-B
compression is used:
If you specify a single, full-band allocation index, the transmission uses HE-SIG-B compression. The allocation index is not signaled.
If you specify 2, 4, or 8 full-band allocation indices, the transmission does not use HE-SIG-B compression. The allocation indices are signaled.
For more information, see the tutorial on HE MU Transmission or the example Demonstrate SIGB Compression in HE MU Waveforms.
Data Types: logical
SIGBMCS
— MCS for HE-SIG-B field
0
(default) | integer in the interval [0, 5]
Modulation and coding scheme (MCS) for the HE-SIG-B field, specified as an integer in the interval [0, 5].
Data Types: double
SIGBDCM
— Enable DCM for HE-SIG-B field
false
or 0
(default) | true
or 1
HE-SIG-B dual-carrier modulation (DCM) indicator, specified as a numeric or logical
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
UplinkIndication
— Uplink indication
false
or 0
(default) | true
or 1
Uplink indication, specified as a numeric or logical 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
BSSColor
— Basic service set color identifier
0
(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
SpatialReuse
— Spatial reuse indication
0
(default) | integer in the interval [0, 15]
Spatial reuse indication, specified as an integer in the interval [0, 15].
Data Types: double
TXOPDuration
— Duration information for TXOP protection
127
(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 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 27-18 of [2].
Data Types: double
HighDoppler
— High-Doppler mode indicator
false
or 0
(default) | true
or 1
High-Doppler mode indicator, specified as a numeric or logical 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
MidamblePeriodicity
— Midamble periodicity of HE-data field
10
(default) | 20
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
getNumPostFECPaddingBits | Calculate required number of post-FEC padding bits |
getPSDULength | Calculate HE or WUR PSDU length |
packetFormat | WLAN packet format |
ruInfo | Resource unit allocation information |
showAllocation | Resource unit allocation |
transmitTime | Packet transmission time |
Examples
Create Multiuser HE Configuration Object
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 PostFECPaddingSource: 'mt19937ar with seed' PostFECPaddingSeed: 4 Read-only properties: RUNumber: 4
Create HE MU Object Using Binary Allocation Indexing
Create an HE MU configuration object for a 40 MHz transmission 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 PostFECPaddingSource: 'mt19937ar with seed' PostFECPaddingSeed: 1 Read-only properties: RUNumber: 1
ans = wlanHEMUUser with properties: APEPLength: 500 MCS: 3 NumSpaceTimeStreams: 1 DCM: 0 ChannelCoding: 'LDPC' STAID: 0 NominalPacketPadding: 8 PostFECPaddingSource: 'mt19937ar with seed' PostFECPaddingSeed: 2 Read-only properties: RUNumber: 2
Demonstrate SIGB Compression in HE MU Waveforms
HE MU-MIMO Configuration With SIGB Compression
Generate a full bandwidth HE MU-MIMO configuration at 20 MHz 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))
Generate a full bandwidth HE MU-MIMO waveform at 80 MHz 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
Generate a full bandwidth HE MU-MIMO configuration at 20 MHz 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))
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));
Generate a full bandwidth HE MU-MIMO waveform at 80 MHz bandwidth without SIGB compression. HE-SIG-B content channel 1 has seven users. HE-SIG-B content channel 2 has zero 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 Multiuser HE Object for Three Users in One RU with SIG-B Compression
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: {[1x1 wlanHEMUUser] [1x1 wlanHEMUUser] [1x1 wlanHEMUUser]} 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 Multiuser HE Object Using Upper Center 26-Tone RU
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
Disable a User in an HE MU Transmission
This example shows how to disable a user in an HE MU transmission.
Create an HE MU configuration object with allocation index equal to 112
. This specifies four 52-tone RUs in a 20 MHz channel bandwidth. Each RU has one user.
cfg = wlanHEMUConfig(112);
Display the allocation.
showAllocation(cfg)
Set the STAID
property of the third user to 2046
. This specifies that the RU that corresponds to the third user transmits no data.
cfg.User{3}.STAID = 2046;
Display the allocation.
showAllocation(cfg)
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.
RU and User Cell Arrays
When you create a wlanHEMUConfig
object, the properties
are set based on the chosen AllocationIndex
property and any name-value pairs you include. Upon creation of the object, RU
and User
cell arrays
are configured. The RU
cell array elements contain the configuration
properties for each RU. The User
cell array elements contain the
configuration properties for each user.
The UserNumbers
subproperty of the RU
property
indicates which users are transmitted on each RU.
The RUNumber
subproperty of the User
property
indicates which RUs are used to transmit data for each user.
As shown here, an RU can be assigned to multiple users.
After creating the object, you can modify some of the RU
and
User
properties, but other RU
and
User
properties are read-only. For more information about the
elements of the RU
cell array, see wlanHEMURU
. For more information about
the elements of the User
cell array, see wlanHEMUUser
.
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™.
You must specify the data type of the postFECPaddingBits
subproperty of the user
property as int8
.
Version History
Introduced in R2018b
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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)