Main Content


Generate VHT-Data field



y = wlanVHTData(psdu,cfg) generates a VHT-Data field[1] time-domain waveform from the input user data bits, psdu, for the specified configuration object, cfg. See VHT-Data Field Processing for waveform generation details.

y = wlanVHTData(psdu,cfg,scramInit) uses scramInit for the scrambler initialization state.


collapse all

Generate the waveform for a MIMO 20 MHz VHT-Data field.

Create a VHT configuration object. Assign a 20 MHz channel bandwidth, two transmit antennas, two space-time streams, and set MCS to four.

cfgVHT = wlanVHTConfig('ChannelBandwidth','CBW20','NumTransmitAntennas',2,'NumSpaceTimeStreams',2,'MCS',4);

Generate the user payload data and the VHT-Data field waveform.

psdu = randi([0 1],cfgVHT.PSDULength*8,1);
y = wlanVHTData(psdu,cfgVHT);
ans = 1×2

        2160           2

The 20 MHz waveform is an array with two columns, corresponding to two transmit antennas. There are 2160 complex samples in each column.

ans = 10×2 complex

  -0.0598 + 0.1098i  -0.1904 + 0.1409i
   0.6971 - 0.3068i  -0.0858 - 0.2701i
  -0.1284 + 0.9268i  -0.8318 + 0.3314i
  -0.1180 + 0.0731i   0.1313 + 0.4956i
   0.3591 + 0.5485i   0.9749 + 0.2859i
  -0.9751 + 1.3334i   0.0559 + 0.4248i
   0.0881 - 0.8230i  -0.1878 - 0.2959i
  -0.2952 - 0.4433i  -0.1005 - 0.4035i
  -0.5562 - 0.3940i  -0.1292 - 0.5976i
   1.0999 + 0.3292i  -0.2036 - 0.0200i

Input Arguments

collapse all

PHY service data unit (PSDU), specified as an Nb-by-1 vector. Nb is the number of bits and equals PSDULength × 8.

Data Types: double

Format configuration, specified as a wlanVHTConfig object.

Initial scrambler state of the data scrambler for each packet generated, specified as an integer, a binary vector, a 1-by-NU integer row vector, or a 7-by-NU binary matrix. NU is the number of users, from 1 to 4. If specified as an integer or binary vector, the setting applies to all users. If specified as a row vector or binary matrix, the setting for each user is specified in the corresponding column, as an integer in the interval [1, 127] or the corresponding binary vector.

The scrambler initialization used on the transmission data follows the process described in IEEE® Std 802.11™-2012, Section and IEEE Std 802.11ad™-2012, Section 21.3.9. The header and data fields that follow the scrambler initialization field (including data padding bits) are scrambled by XORing each bit with a length-127 periodic sequence generated by the polynomial S(x) = x7+x4+1. The octets of the PSDU (Physical Layer Service Data Unit) are placed into a bit stream, and within each octet, bit 0 (LSB) is first and bit 7 (MSB) is last. The generation of the sequence and the XOR operation are shown in this figure:

Conversion from integer to bits uses left-MSB orientation. For the initialization of the scrambler with decimal 1, the bits are mapped to the elements shown.

Bit Value0000001

To generate the bit stream equivalent to a decimal, use de2bi. For example, for decimal 1:

ans =

     0     0     0     0     0     0     1

Example: [1;0;1;1;1;0;1] conveys the scrambler initialization state of 93 as a binary vector.

Data Types: double | int8

Output Arguments

collapse all

VHT-Data field time-domain waveform, returned as an NS-by-NT matrix. NS is the number of time-domain samples and NT is the number of transmit antennas. See VHT-Data Field Processing for waveform generation details.

More About

collapse all

VHT-Data field

The VHT-Data field carries one or more frames from the medium access control (MAC) layer. This field follows the VHT-SIG-B field in a VHT PPDUs.

For a detailed description of the VHT-Data field, see section 21.3.10 of IEEE Std 802.11-2016. The VHT Data field consists of four subfields.

  • Service field — Contains a seven-bit scrambler initialization state, one bit reserved for future considerations, and eight bits for the VHT-SIG-B cyclic redundancy check (CRC) field

  • PSDU — Variable-length field containing a PLCP service data unit

  • PHY Pad — Variable number of bits passed to the transmitter to create a complete OFDM symbol

  • Tail — Bits required to terminate a convolutional code (not required when the transmission uses LDPC channel coding)


Physical layer (PHY) Service Data Unit (PSDU). A PSDU can consist of one medium access control (MAC) protocol data unit (MPDU) or several MPDUs in an aggregate MPDU (A-MPDU). In a single user scenario, the VHT-Data field contains one PSDU. In a multi-user scenario, the VHT-Data field carries up to four PSDUs for up to four users.


collapse all

VHT-Data Field Processing

The VHT-Data field encodes the service, PSDU, pad bits, and tail bits. The wlanVHTData function performs transmitter processing on the VHT-Data field and outputs the time-domain waveform for NT transmit antennas.

NES is the number of BCC encoders.
NSS is the number of spatial streams.
NSTS is the number of space-time streams.
NT is the number of transmit antennas.

BCC channel coding is shown.

For algorithm details, refer to IEEE Std 802.11ac™-2013 [1], Section and, respectively, single user and multi-user.


[1] IEEE Std 802.11ac™-2013 IEEE 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 4: Enhancements for Very High Throughput for Operation in Bands below 6 GHz.

Extended Capabilities

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

Introduced in R2015b

[1] IEEE Std 802.11ac-2013 Adapted and reprinted with permission from IEEE. Copyright IEEE 2013. All rights reserved.