Recover L-SIG information bits



recBits = wlanLSIGRecover(rxSig,chEst,noiseVarEst,cbw) returns the recovered L-SIG[1] information bits, recBits, given the time-domain L-SIG waveform, rxSig. Specify the channel estimate, chEst, the noise variance estimate, noiseVarEst, and the channel bandwidth, cbw.


recBits = wlanLSIGRecover(rxSig,chEst,noiseVarEst,cbw,cfgRec) returns information bits and specifies algorithm information using wlanRecoveryConfig object cfgRec.


[recBits,failCheck] = wlanLSIGRecover(___) returns the status of a validity check, failCheck, using the arguments from previous syntaxes.


[recBits,failCheck,eqSym] = wlanLSIGRecover(___) returns the equalized symbols, eqSym.

[recBits,failCheck,eqSym,cpe] = wlanLSIGRecover(___) returns the common phase error, cpe.


collapse all

Recover L-SIG information transmitted in a noisy 2x2 MIMO channel, and calculate the number of bit errors present in the received information bits.

Set the channel bandwidth and sample rate.

chanBW = 'CBW40';
fs = 40e6;

Create a VHT configuration object corresponding to a 40 MHz 2x2 MIMO channel.

vht = wlanVHTConfig( ...
    'ChannelBandwidth',chanBW, ...
    'NumTransmitAntennas',2, ...

Generate the L-LTF and L-SIG field signals.

txLLTF = wlanLLTF(vht);
[txLSIG,txLSIGData] = wlanLSIG(vht);

Create a 2x2 TGac channel and an AWGN channel with an SNR=10 dB.

tgacChan = wlanTGacChannel('SampleRate',fs,'ChannelBandwidth',chanBW, ...

chNoise = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)',...

Pass the signals through the noisy 2x2 multipath fading channel.

rxLLTF = chNoise(tgacChan(txLLTF));
rxLSIG = chNoise(tgacChan(txLSIG));

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

rxLLTF = rxNoise(rxLLTF);
rxLSIG = rxNoise(rxLSIG);

Perform channel estimation based on the L-LTF.

demodLLTF = wlanLLTFDemodulate(rxLLTF,chanBW,1);
chanEst = wlanLLTFChannelEstimate(demodLLTF,chanBW);

Recover the L-SIG information bits.

rxLSIGData = wlanLSIGRecover(rxLSIG,chanEst,0.1,chanBW);

Verify that there are no bit errors in the recovered L-SIG data.

numErrors = biterr(txLSIGData,rxLSIGData)
numErrors = 0

Recover L-SIG information using the zero-forcing equalizer algorithm. Calculate the number of bit errors in the received data.

Create an HT configuration object.

cfgHT = wlanHTConfig;

Create a recovery object with EqualizationMethod property set to zero forcing, 'ZF'.

cfgRec = wlanRecoveryConfig('EqualizationMethod','ZF');

Generate the L-SIG field and pass it through an AWGN channel.

[txLSIG,txLSIGData] = wlanLSIG(cfgHT);
rxLSIG = awgn(txLSIG,20);

Recover the L-SIG using the zero-forcing algorithm set in cfgRec. The channel estimate is a vector of ones because fading was not introduced.

rxLSIGData = wlanLSIGRecover(rxLSIG,ones(52,1),0.01,'CBW20',cfgRec);

Verify that there are no bit errors in the recovered L-SIG data.

numErrors = biterr(txLSIGData,rxLSIGData)
numErrors = 0

Recover the L-SIG from a channel that introduces a fixed phase and frequency offset.

Create a VHT configuration object corresponding to a 160 MHz SISO channel. Generate the transmitted L-SIG field.

cfgVHT = wlanVHTConfig('ChannelBandwidth','CBW160');
txLSIG = wlanLSIG(cfgVHT);

Create a recovery configuration object and disable pilot phase tracking.

cfgRec = wlanRecoveryConfig('PilotPhaseTracking','None');

To introduce a 45 degree phase offset and a 100 Hz frequency offset, create a phase and frequency offset System object.

pfOffset = comm.PhaseFrequencyOffset('SampleRate',160e6,'PhaseOffset',45, ...

Introduce phase and frequency offsets to the transmitted L-SIG. Pass the L-SIG through an AWGN channel.

rxLSIG = awgn(pfOffset(txLSIG),20);

Recover the L-SIG information bits, the failure check status, and the equalized symbols.

[recLSIGData,failCheck,eqSym] = wlanLSIGRecover(rxLSIG,ones(416,1),0.01,'CBW160',cfgRec);

Verify that the L-SIG passed the failure checks.

failCheck = logical

Plot the equalized symbols. The 45 degree phase offset is visible.


Input Arguments

collapse all

Received L-SIG field, specified as an NS-by-NR matrix. NS is the number of samples, and NR is the number of receive antennas.

NS is proportional to the channel bandwidth.

'CBW5', 'CBW10', 'CBW20'80

Data Types: double
Complex Number Support: Yes

Channel estimate, specified as an NST-by-1-by-NR array. NST is the number of occupied subcarriers, and NR is the number of receive antennas.

Channel BandwidthNST
'CBW5', 'CBW10', 'CBW20'52

Data Types: double
Complex Number Support: Yes

Noise variance estimate, specified as a nonnegative scalar.

Data Types: double

Channel bandwidth in MHz, specified as 'CBW5', 'CBW10', 'CBW20', 'CBW40', 'CBW80', or 'CBW160'.

Example: 'CBW80' corresponds to a channel bandwidth of 80 MHz

Data Types: char | string

Algorithm parameters, specified as a wlanRecoveryConfig object. The function uses these properties:


If cfgRec is not provided, the function uses the default values of the wlanRecoveryConfig object.

OFDM symbol sampling offset represented as a fraction of the cyclic prefix (CP) length, specified as a scalar in the interval [0, 1]. The value you specify indicates the start location for OFDM demodulation relative to the beginning of the cyclic prefix. The value 0 represents the start of the cyclic prefix and the value 1 represents the end of the cyclic prefix.

Data Types: double

Equalization method, specified as one of these values:

  • 'MMSE' — The receiver uses a minimum mean squared error equalizer.

  • 'ZF' — The receiver uses a zero-forcing equalizer.

Data Types: char | string

Pilot phase tracking, specified as one of these values:

  • 'PreEQ' — Enable pilot phase tracking, which is performed before any equalization operation.

  • 'None' — Disable pilot phase tracking.

Data Types: char | string

Output Arguments

collapse all

Recovered L-SIG information bits, returned as a 24-element column vector containing binary data. The 24 elements correspond to the length of the L-SIG field.

Data Types: int8

Failure check status, returned as a logical scalar. If L-SIG fails the parity check, or if its first four bits do not correspond to one of the eight allowable data rates, failCheck is true.

Data Types: logical

Equalized symbols, returned as 48-by-1 vector. There are 48 data subcarriers in the L-SIG field.

Data Types: double
Complex Number Support: Yes

Common phase error in radians, returned as a scalar.

More About

collapse all


The legacy signal (L-SIG) field is the third field of the 802.11™ OFDM PLCP legacy preamble. It consists of 24 bits that contain rate, length, and parity information. The L-SIG is a component of VHT, HT, and non-HT PPDUs. It is transmitted using BPSK modulation with rate 1/2 binary convolutional coding (BCC).

The L-SIG is one OFDM symbol with a duration that varies with channel bandwidth.

Channel Bandwidth (MHz)Subcarrier frequency spacing, ΔF (kHz)Fast Fourier Transform (FFT) period (TFFT = 1 / ΔF)Guard Interval (GI) Duration (TGI = TFFT / 4)L-SIG duration (TSIGNAL = TGI + TFFT)
20, 40, 80, and 160312.53.2 μs0.8 μs4 μs
10156.256.4 μs1.6 μs8 μs
578.12512.8 μs3.2 μs16 μs

The L-SIG contains packet information for the received configuration,

  • Bits 0 through 3 specify the data rate (modulation and coding rate) for the non-HT format.

    Rate (bits 0–3)Modulation

    Coding rate (R)

    Data Rate (Mb/s)
    20 MHz channel bandwidth10 MHz channel bandwidth5 MHz channel bandwidth

    For HT and VHT formats, the L-SIG rate bits are set to '1 1 0 1'. Data rate information for HT and VHT formats is signaled in format-specific signaling fields.

  • Bit 4 is reserved for future use.

  • Bits 5 through 16:

    • For non-HT, specify the data length (amount of data transmitted in octets) as described in IEEE® Std 802.11-2012, Table 18-1 and Section 9.23.4.

    • For HT-mixed, specify the transmission time as described in IEEE Std 802.11-2012, Section and Section 9.23.4.

    • For VHT, specify the transmission time as described in IEEE Std 802.11ac™-2013, Section

  • Bit 17 has the even parity of bits 0 through 16.

  • Bits 18 through 23 contain all zeros for the signal tail bits.


Signaling fields added for HT (wlanHTSIG) and VHT (wlanVHTSIGA, wlanVHTSIGB) formats provide data rate and configuration information for those formats.

  • For the HT-mixed format, IEEE Std 802.11-2012, Section describes HT-SIG bit settings.

  • For the VHT format, IEEE Std 802.11ac-2013, Section and Section describe bit settings for VHT-SIG-A and VHT-SIG-B, respectively.


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

Extended Capabilities

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

Introduced in R2015b

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