wlanVHTData
Generate VHT-Data field
Syntax
Description
generates a VHT-Data field1
time-domain waveform from user data bits y
= wlanVHTData(psdu
,cfg
)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
Nb elements.
Nb 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 ith element of
the cell array must be a binary column vector. The length of this vector
must be equal to eight times the ith 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) = x7+x4+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 | X7 | X6 | X5 | X4 | X3 | X2 | X1 |
---|---|---|---|---|---|---|---|
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 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
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 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 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 NFFT subcarriers made up of Ng guardband subcarriers on either side of Nst 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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)