Recover VHT-SIG-B information bits
Recover VHT-SIG-B bits in a perfect channel having 80 MHz channel bandwidth, one space-time stream, and one receive antenna.
wlanVHTConfig object having a channel bandwidth of 80 MHz. Using the object, create a VHT-SIG-B waveform.
cfg = wlanVHTConfig('ChannelBandwidth','CBW80'); [txSig,txBits] = wlanVHTSIGB(cfg);
For a channel bandwidth of 80 MHz, there are 242 occupied subcarriers. The channel estimate array dimensions for this example must be [Nst,Nsts,Nr] = [242,1,1]. The example assumes a perfect channel and one receive antenna. Therefore, specify the channel estimate as a column vector of ones and the noise variance estimate as zero.
chEst = ones(242,1); noiseVarEst = 0;
Recover the VHT-SIG-B. Verify that the received information bits are identical to the transmitted bits.
rxBits = wlanVHTSIGBRecover(txSig,chEst,noiseVarEst,'CBW80'); isequal(txBits,rxBits)
ans = logical 1
Recover the VHT-SIG-B using a zero-forcing equalizer in an AWGN channel having 160 MHz channel bandwidth, one space-time stream, and one receive antenna.
wlanVHTConfig object having a channel bandwidth of 160 MHz. Using the object, create a VHT-SIG-B waveform.
cfg = wlanVHTConfig('ChannelBandwidth','CBW160'); [txSig,txBits] = wlanVHTSIGB(cfg);
Pass the transmitted VHT-SIG-B through an AWGN channel.
awgnChan = comm.AWGNChannel('NoiseMethod','Variance','Variance',0.1); rxSig = awgnChan(txSig);
wlanRecoveryConfig, set the equalization method to zero-forcing,
cfgRec = wlanRecoveryConfig('EqualizationMethod','ZF');
Recover the VHT-SIG-B. Verify that the received information has no bit errors.
rxBits = wlanVHTSIGBRecover(rxSig,ones(484,1),0.1,'CBW160',cfgRec); numErr = biterr(txBits,rxBits)
numErr = 0
Recover VHT-SIG-B in a 2x2 MIMO channel for an SNR=10 dB and a receiver that has a 9 dB noise figure. Confirm that the information bits are recovered correctly.
Set the channel bandwidth and the corresponding sample rate.
cbw = 'CBW20'; fs = 20e6;
Create a VHT configuration object with 20 MHz bandwidth and two transmission paths. Generate the L-LTF and VHT-SIG-B waveforms.
vht = wlanVHTConfig('ChannelBandwidth',cbw,'NumTransmitAntennas',2, ... 'NumSpaceTimeStreams',2); txVHTLTF = wlanVHTLTF(vht); [txVHTSIGB,txVHTSIGBBits] = wlanVHTSIGB(vht);
Pass the VHT-LTF and VHT-SIG-B waveforms through a 2x2 TGac channel.
tgacChan = wlanTGacChannel('NumTransmitAntennas',2, ... 'NumReceiveAntennas',2, 'ChannelBandwidth',cbw,'SampleRate',fs); rxVHTLTF = tgacChan(txVHTLTF); rxVHTSIGB = tgacChan(txVHTSIGB);
Add white noise for an SNR = 10dB.
chNoise = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)',... 'SNR',10); rxVHTLTF = chNoise(rxVHTLTF); rxVHTSIGB = chNoise(rxVHTSIGB);
Add additional white noise corresponding to a receiver with a 9 dB noise figure. The noise variance is equal to k*T*B*F, where k is Boltzmann's constant, T is the ambient temperature, B is the channel bandwidth (sample rate), and F is the receiver noise figure.
nVar = 10^((-228.6+10*log10(290)+10*log10(fs)+9)/10); rxNoise = comm.AWGNChannel('NoiseMethod','Variance','Variance',nVar); rxVHTLTF = rxNoise(rxVHTLTF); rxVHTSIGB = rxNoise(rxVHTSIGB);
Demodulate the VHT-LTF signal and use it to generate a channel estimate.
demodVHTLTF = wlanVHTLTFDemodulate(rxVHTLTF,vht); chEst = wlanVHTLTFChannelEstimate(demodVHTLTF,vht);
Recover the VHT-SIG-B information bits. Display the scatter plot of the equalized symbols.
[recVHTSIGBBits,eqSym,cpe] = wlanVHTSIGBRecover(rxVHTSIGB,chEst,nVar,cbw); scatterplot(eqSym)
Display the common phase error.
cpe = 0.0485
Determine the number of errors between the transmitted and received VHT-SIG-B information bits.
numErr = biterr(txVHTSIGBBits,recVHTSIGBBits)
numErr = 0
rxSig— Received VHT-SIG-B
Received VHT-SIG-B field, specified as an NS-by-NR matrix. NS is the number of samples and increases with channel bandwidth.
NR is the number of receive antennas.
Complex Number Support: Yes
chEst— Channel estimate
Channel estimate, specified as an NST-by-NSTS-by-NR array. NST is the number of occupied subcarriers. NSTS is the number of space-time streams. For multiuser transmissions, NSTS is the total number of space-time streams for all users . NR is the number of receive antennas.
NST increases with channel bandwidth.
|Number of Occupied Subcarriers (NST)||Number of Data Subcarriers (NSD)||Number of Pilot Subcarriers (NSP)|
The channel estimate is based on the VHT-LTF.
noiseVarEst— Noise variance estimate
Noise variance estimate, specified as a nonnegative scalar.
cbw— Channel bandwidth
Channel bandwidth, specified as
userNumber— Number of the user
Number of the user in a multiuser transmission, specified as an integer having a value from 1 to NUsers. NUsers is the total number of users.
numSTS— Number of space-time streams
Number of space-time streams in a multiuser transmission, specified as a vector. The number of space-time streams is a 1-by-NUsers vector of integers from 1 to 4, where NUsers is an integer from 1 to 4.
[1 3 2] is the number of space-time
streams for each user.
The sum of the space-time stream vector elements must not exceed eight.
cfgRec— Algorithm parameters
Algorithm parameters, specified as a
The function uses these properties:
cfgRec is not provided, the function
uses the default values of the
recBits— Recovered VHT-SIG information
Recovered VHT-SIG-B information bits, returned as an Nb-by-1
column vector. Nb is the
number of recovered VHT-SIG-B information bits and increases with
the channel bandwidth. The output is for a single user as determined
The number of output bits is proportional to the channel bandwidth.
See VHT-SIG-B for information about the meaning of each bit in the field.
eqSym— Equalized symbols
Equalized symbols, returned as an NSD-by-1 column vector. NSD is the number of data subcarriers.
NSD increases with the channel bandwidth.
cpe— Common phase error
Common phase error in radians, returned as a scalar.
The very high throughput signal B field (VHT-SIG-B) is used for multiuser scenario to set up the data rate and to fine-tune MIMO reception. It is modulated using MCS 0 and is transmitted in a single OFDM symbol.
The VHT-SIG-B field consists of a single OFDM symbol located between the VHT-LTF and the data portion of the VHT format PPDU.
The very high throughput signal B (VHT-SIG-B) field contains the actual rate and A-MPDU length value per user. The VHT-SIG-B is defined in IEEE® Std 802.11ac™-2013, Section 188.8.131.52.6, and Table 22–14. The number of bits in the VHT-SIG-B field varies with the channel bandwidth and the assignment depends on whether single user or multiuser scenario in allocated. For single user configurations, the same information is available in the L-SIG field but the VHT-SIG-B field is included for continuity purposes.
VHT MU PPDU Allocation (bits)
VHT SU PPDU Allocation (bits)
80 MHz, 160 MHz
80 MHz, 160 MHz
A variable-length field that indicates the size of the data payload in four-byte units. The length of the field depends on the channel bandwidth.
A four-bit field that is included for multiuser scenarios only.
Six zero-bits used to terminate the convolutional code.
Total # bits
Bit field repetition
For 160 MHz, the 80 MHz channel is repeated twice.
For 160 MHz, the 80 MHz channel is repeated twice.
For a null data packet (NDP), the VHT-SIG-B bits are set according to IEEE Std 802.11ac-2013, Table 22-15.
The very high throughput long training field (VHT-LTF) is located between the VHT-STF and VHT-SIG-B portion of the VHT packet.
It is used for MIMO channel estimation and pilot subcarrier tracking. The VHT-LTF includes one VHT long training symbol for each spatial stream indicated by the selected MCS. Each symbol is 4 μs long. A maximum of eight symbols are permitted in the VHT-LTF.
The VHT-LTF is defined in IEEE Std 802.11ac-2013, Section 184.108.40.206.5.
PLCP protocol data unit
The PPDU is the complete PLCP frame, including PLCP headers, MAC headers, the MAC data field, and the MAC and PLCP trailers.
The VHT-SIG-B field consists of one symbol and resides between the VHT-LTF field and the data portion of the packet structure for the VHT format PPDUs.
For single-user packets, you can recover the length information from the L-SIG and VHT-SIG-A field information. Therefore, it is not strictly required for the receiver to decode the VHT-SIG-B field. For multiuser transmissions, recovering the VHT-SIG-B field provides packet length and MCS information for each user.
 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.
 Perahia, E., and R. Stacey. Next Generation Wireless LANs: 802.11n and 802.11ac . 2nd Edition, United Kingdom: Cambridge University Press, 2013.
 IEEE Std 802.11ac-2013 Adapted and reprinted with permission from IEEE. Copyright IEEE 2013. All rights reserved.