Main Content

wlanLSIGRecover

Recover L-SIG information bits

Description

example

recBits = wlanLSIGRecover(rxSig,chEst,noiseVarEst,cbw) returns the recovered L-SIG1 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.

example

recBits = wlanLSIGRecover(rxSig,chEst,noiseVarEst,cbw,Name,Value) returns information bits and specifies algorithm parameters by using one or more name-value pair arguments.

example

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

example

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

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

Examples

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, ...
    'NumSpaceTimeStreams',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, ...
    'NumTransmitAntennas',2,'NumReceiveAntennas',2);

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

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;

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

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

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

chEst = ones(52,1);
noiseVarEst = 0.1;
rxLSIGData = wlanLSIGRecover(rxSIG,chEst,noiseVarEst,'CBW20','EqualizationMethod','ZF');

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

numErrors = biterr(txLSIGData,rxLSIGData)
numErrors = 0

Recover the L-SIG field 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);

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, ...
    'FrequencyOffset',100);

Introduce phase and frequency offsets to the transmitted L-SIG field, then pass it through an AWGN channel.

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

Recover the L-SIG information bits, the failure check status, and the equalized symbols, disabling pilot phase tracking.

chEst = ones(416,1);
noiseVarEst = 0.01;
[recBits,failCheck,eqSym] = wlanLSIGRecover(rxSIG,chEst,noiseVarEst,'CBW160','PilotPhaseTracking','None');

Verify that the L-SIG passed the failure checks.

disp(failCheck)
   0

Visualize the phase offset by plotting the equalized symbols.

scatterplot(eqSym)
grid

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.

ChannelBandwidthNS
'CBW5', 'CBW10', 'CBW20'80
'CBW40'160
'CBW80'320
'CBW160'640

Data Types: single | 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
'CBW40'104
'CBW80'208
'CBW160'416

Data Types: single | double
Complex Number Support: Yes

Noise variance estimate, specified as a nonnegative scalar.

Data Types: single | 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

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: 'PilotPhaseTracking','None' disables pilot phase tracking.

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

Different values of the OFDMSymbolOffset argument

Data Types: double

Equalization method, specified as one of these values.

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

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

When the received signal has multiple receive antennas, the function exploits receiver diversity during equalization. When the number of transmitted space-time streams is one and you specify this argument as 'ZF', the function performs maximal-ratio combining.

Data Types: char | string

Pilot phase tracking, specified as the name-value pair consisting of 'PilotPhaseTracking' and one of these values.

  • 'PreEQ' — Enable pilot phase tracking, which the function performs 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: single | double
Complex Number Support: Yes

Common phase error in radians, returned as a scalar.

Data Types: single | double

More About

collapse all

L-SIG

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

The L-SIG in the legacy preamble

The L-SIG consists of 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.

Packet information in the L-SIG

  • 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
    1101BPSK1/2631.5
    1111BPSK3/494.52.25
    0101QPSK1/21263
    0111QPSK3/41894.5
    100116-QAM1/224126
    101116-QAM3/436189
    000164-QAM2/3482412
    001164-QAM3/4542713.5

    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 formats, specify the data length (amount of data transmitted in octets) as described in Table 17-1 and Section 10.27.4 IEEE® Std 802.11-2020.

    • For HT-mixed formats, specify the transmission time as described in Sections 19.3.9.3.5 and 10.27.4 of IEEE Std 802.11-2020.

    • For VHT formats, specify the transmission time as described in Section 21.3.8.2.4 of IEEE Std 802.11-2020.

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

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

Note

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, Section 19.3.9.4.3 of IEEE Std 802.11-2020 describes HT-SIG bit settings.

  • For the VHT format, Sections 21.3.8.3.3 and 21.3.8.3.6 of IEEE Std 802.11-2020 describe bit settings for the VHT-SIG-A and VHT-SIG-B fields, respectively.

References

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

Version History

Introduced in R2015b


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