Create HE MU configuration object
The wlanHEMUConfig
object is a configuration object for the WLAN HE
multi-user (HE MU) packet format.
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.
AllocationIndex
— Resource unit allocation indexResource 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
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 signalingfalse
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.
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 signalingfalse
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.
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 transmissionwlanHEMURU
objectsTransmission 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:
PowerBoostFactor
— Power boost factor1
(default) | scalar in the interval [0.5, 2]Power boost factor, specified as a scalar in the interval [0.5, 2].
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
property equal to the sum of the number
space-time streams for all users assigned to the RU.
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 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.
This property applies only when you set the SpatialMapping
property to 'Custom'
.
Data Types: double
Complex Number Support: Yes
Beamforming
— Enable beamformingtrue
or 1
(default) | false
or 0
Enable beamforming, specified as a numeric or logical 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.
This property applies only when you set the SpatialMapping
property to 'Custom'
.
Data Types: logical
Size
— Resource unit size242
(default) | positive integerResource 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
Index
— Resource unit index1
(default) | integer in the interval [1, 74]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
UserNumbers
— User index number1
| integer | vector of integersIndices 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
User
— Transmission properties of each userwlanHEMUUser
objectsTransmission 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.
APEPLength
— APEP length100
(default) | integer in the interval [0, 6500531]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 [2].
Data Types: double
MCS
— MCS used for transmission0
(default) | integer in the interval [0, 11]Modulation and coding scheme (MCS) used for transmission, specified as a
nonnegative integer in the interval [0, 11]. This table
shows the modulation type and coding rate for each valid value of
MCS
:
MCS | Modulation | 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
NumSpaceTimeStreams
— Number of space-time streams1
(default) | integerNumber 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 18-1 and 27-28 of [2].
Data Types: double
DCM
— DCM indicatorfalse
or 0
(default) | true
or 1
Dual carrier modulation (DCM) indicator, specified as a numeric or logical
1
(true
) or 1
(false
). To indicate that DCM is used for the HE-Data field,
set this property to 1
(true
).
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
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 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
STAID
— STA identifier0
(default) | integer in the interval [0, 2047]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 26.11.1 of [2]. 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
RUNumber
— RU number1
(default) | integer | vector of integersRU 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
NominalPacketPadding
— Nominal packet padding0
(default) | 8
| 16
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 27.3.12 of [2].
This table shows the possible values of TPE for different values of this property and a, a parameter defined by equation (27-83) or (27-84) of [2].
Value of a | Value of TPE in Microseconds | ||
---|---|---|---|
NominalPacketPadding Set to
0 | NominalPacketPadding Set to
8 | NominalPacketPadding Set to
16 | |
1 | 0 | 0 | 4 |
2 | 0 | 0 | 8 |
3 | 0 | 4 | 12 |
4 | 0 | 8 | 16 |
For an HE MU PPDU, equation (27-113) of [2] defines the value of TPE as the maximum of the TPE values specified for each user.
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 algorithmPost-FEC padding bit seed for the mt19937ar algorithm, specified as a
nonnegative integer. The default value of this property for an element of the
User
property is the user number,
i.e., the default value of
User{k}.PostFECPaddingSeed
is
k for all integers k in the interval [1,
Nusers].
Nusers is the number of users in the
transmission.
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
Data Types: cell
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 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 the
NumTransmitAntennas
property to 16
,
the wlanHEMUConfig
object uses only the first L = 16 – 8 = 8 elements of this vector.
To enable this property, set the NumTransmitAntennas
property to a value greater than
8
.
Data Types: double
STBC
— Enable space-time block codingfalse
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.
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 multi-user multiple input/multiple output (MU-MIMO).
Data Types: logical
GuardInterval
— Guard interval (cyclic prefix) duration3.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 mode4
(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.10.10 of [2].
Data Types: double
SIGBCompression
— HE-SIG-B compression indicatortrue
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
).
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
SIGBMCS
— MCS for HE-SIG-B field0
(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 fieldfalse
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.
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 indicationfalse
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 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
SpatialReuse
— Spatial reuse indication0
(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 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 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 indicatorfalse
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
).
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
.
This property applies only when the HighDoppler
property is 1
(true
).
Data Types: double
getNumPostFECPaddingBits | Calculate required number of post-FEC padding bits |
getPSDULength | Calculate HE PSDU length |
packetFormat | Return WLAN packet format |
ruInfo | Return HE format resource unit allocation information |
showAllocation | Show resource unit (RU) allocation |
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 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
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 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
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.
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 wlanHEMUConfig
object, you can modify some of the RU
and User
properties but other RU
and User
properties are
read-only. See wlanHEMURU
for details on the elements
of the RU
cell array. See wlanHEMUUser
for details on the
elements of the User
cell array.
[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
subproperty of the user
property as int8
.
wlanDMGConfig
| wlanHEMURU
| wlanHEMUUser
| wlanHERecoveryConfig
| wlanHESUConfig
| wlanHETBConfig
| wlanHTConfig
| wlanNonHTConfig
| wlanS1GConfig
| wlanVHTConfig
You have a modified version of this example. Do you want to open this example with your edits?