# wlanVHTData

Generate VHT-Data field

## Syntax

## Description

generates a VHT-Data field`y`

= wlanVHTData(`psdu`

,`cfg`

)^{1}
time-domain waveform from user data bits `psdu`

for
transmission parameters `cfg`

. See VHT-Data Field Processing for waveform generation details.

generates an oversampled VHT-Data waveform with the specified oversampling factor.
For more information about oversampling, see FFT-Based Oversampling.`y`

= wlanVHTData(___,OversamplingFactor=`osf`

)

## Examples

### Generate VHT-Data Waveform

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); size(y)

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

y(1:10,:)

`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

`psdu`

— PHY service data unit

binary column vector | row cell array

PHY service data unit (PSDU), specified as a binary column vector or row cell array.

If you specify `psdu`

as a column vector, it must have
*N*_{b} elements.
*N*_{b} is the number of bits and
is equal to the `PSDULength`

property of the
`cfg`

input multiplied by eight.

If you specify `psdu`

as a row cell array, its length
must be equal to the `NumUsers`

property of the
`cfg`

input. The *i*th element of
the cell array must be a binary column vector. The length of this vector
must be equal to eight times the *i*th element of the
`PSDULength`

property.

**Data Types: **`double`

| `int8`

`cfg`

— Transmission parameters

`wlanVHTConfig`

object

Transmission parameters, specified as a `wlanVHTConfig`

object.

`scramInit`

— Scrambler initialization state

`93`

(default) | integer in the interval [1, 127] | integer row vector | binary vector | binary matrix

Initial scrambler state of the data scrambler for each packet generated, specified as an
integer, a binary vector, a
1-by-`N`

_{U} integer row vector, or
a 7-by-`N`

_{U} binary matrix.
`N`

_{U} 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 18.3.5.5 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)* =
*x*^{7}+*x*^{4}+1. The octets of the PSDU are placed into a bit stream and, within each octet,
bit 0 (LSB) is first and bit 7 (MSB) is last. This figure shows the generation of the sequence
and the XOR operation.

Conversion from integer to bits uses left-MSB orientation. For example,
initializing the scrambler with decimal `1`

, the bits map to these
elements.

Element | X^{7} | X^{6} | X^{5} | X^{4} | X^{3} | X^{2} | X^{1} |
---|---|---|---|---|---|---|---|

Bit Value | 0 | 0 | 0 | 0 | 0 | 0 | 1 |

To generate the bit stream equivalent to a decimal, use the `int2bit`

function.
For example, for decimal
`1`

:

int2bit(1,7)' 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`

`osf`

— Oversampling factor

`1`

(default) | scalar greater than or equal to 1

Oversampling factor, specified as a scalar greater than or equal to 1. The oversampled cyclic prefix length must be an integer number of samples.

**Data Types: **`single`

| `double`

| `int8`

| `int16`

| `int32`

| `int64`

| `uint8`

| `uint16`

| `uint32`

| `uint64`

## Output Arguments

`y`

— VHT-Data field time-domain waveform

matrix

VHT-Data field time-domain
waveform, returned as an *N*_{S}-by-*N*_{T} matrix. *N*_{S} is
the number of time-domain samples and *N*_{T} is
the number of transmit antennas. See VHT-Data Field Processing for waveform generation details.

## More About

### 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 PPDU.

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)

### PSDU

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.

## Algorithms

### 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 *N _{T}* transmit
antennas.

N is the number
of BCC encoders._{ES} |

N is the number
of spatial streams._{SS} |

N is the number
of space-time streams._{STS} |

N is the number
of transmit antennas._{T} |

BCC channel coding is shown.

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

### FFT-Based Oversampling

An *oversampled* signal is a signal sampled at a frequency that is
higher than the Nyquist rate. WLAN signals maximize occupied bandwidth by using small
guardbands, which can pose problems for anti-imaging and anti-aliasing filters. Oversampling
increases the guardband width relative to the total signal bandwidth, which increases the
number of samples in the signal.

This function performs oversampling by using a larger IFFT and zero pad when generating an
OFDM waveform. This diagram shows the oversampling process for an OFDM waveform with
*N*_{FFT} subcarriers made up of
*N*_{g} guardband subcarriers on either side of
*N*_{st} occupied bandwidth subcarriers.

## References

[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™.

## Version History

**Introduced in R2015b**

## See Also

^{1} IEEE Std 802.11ac-2013 Adapted and reprinted
with permission from IEEE. Copyright IEEE 2013. All rights
reserved.

## 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)