wlanHTSIGRecover

Recover HT-SIG information bits

Description

example

recBits = wlanHTSIGRecover(rxSig,chEst,noiseVarEst,cbw) returns the recovered information bits from the HT-SIG[1] field and performs a CRC check. Inputs include the channel estimate data chEst, noise variance estimate noiseVarEst, and channel bandwidth cbw.

example

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

example

[recBits,failCRC] = wlanHTSIGRecover(___) returns the result of the CRC check, failCRC, using any of the arguments from the previous syntaxes.

example

[recBits,failCRC,eqSym] = wlanHTSIGRecover(___) returns the equalized symbols, eqSym.

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

Examples

collapse all

Create a wlanHTConfig object having a channel bandwidth of 40 MHz. Use the object to create an HT-SIG field.

cfg = wlanHTConfig('ChannelBandwidth','CBW40');
[txSig,txBits] = wlanHTSIG(cfg);

Because a perfect channel is assumed, specify the channel estimate as a column vector of ones and the noise variance estimate as zero.

chEst = ones(104,1);
noiseVarEst = 0;

Recover the HT-SIG information bits. Verify that the received information bits are identical to the transmitted bits.

rxBits = wlanHTSIGRecover(txSig,chEst,noiseVarEst,'CBW40');
numerr = biterr(txBits,rxBits)
numerr = 0

Create a wlanHTConfig object having a channel bandwidth of 40 MHz. Use the object to create an HT-SIG field.

cfg = wlanHTConfig('ChannelBandwidth','CBW40');
[txSig,txBits] = wlanHTSIG(cfg);

Pass the transmitted HT-SIG waveform through an AWGN channel.

awgnChan = comm.AWGNChannel('NoiseMethod','Variance',...
    'Variance',0.1);
rxSig = awgnChan(txSig);

Recover the HT-SIG field assuming a perfect channel and a noise variance estimate of 0.1, specifying zero-force equalization. Verify that the received information has no bit errors.

recBits = wlanHTSIGRecover(rxSig,ones(104,1),0.1,'CBW40','EqualizationMethod','ZF');
biterr(txBits,recBits)
ans = 0

Recover HT-SIG in a 2x2 MIMO channel with AWGN. Confirm that the CRC check passes.

Configure a 2x2 MIMO TGn channel.

chanBW = 'CBW20';
cfg = wlanHTConfig( ...
    'ChannelBandwidth',chanBW, ...
    'NumTransmitAntennas',2, ...
    'NumSpaceTimeStreams',2);

Generate L-LTF and HT-SIG waveforms.

txLLTF  = wlanLLTF(cfg);
txHTSIG = wlanHTSIG(cfg);

Set the sample rate to correspond to the channel bandwidth. Create a TGn 2x2 MIMO channel without large scale fading effects.

fsamp = 20e6;
tgnChan = wlanTGnChannel('SampleRate',fsamp, ...
    'LargeScaleFadingEffect','None', ...
    'NumTransmitAntennas',2, ...
    'NumReceiveAntennas',2);

Pass the L-LTF and HT-SIG waveforms through a TGn channel with white noise.

rxLLTF = awgn(tgnChan(txLLTF),20);
rxHTSIG = awgn(tgnChan(txHTSIG),20);

Demodulate the L-LTF signal. Generate a channel estimate by using the demodulated L-LTF.

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

Recover the information bits, the CRC failure status, and the equalized symbols from the received HT-SIG field.

[recHTSIGBits,failCRC,eqSym] = wlanHTSIGRecover(rxHTSIG, ...
    chanEst,0.01,chanBW);

Verify that HT-SIG passed a CRC check by examining the status of failCRC.

failCRC
failCRC = logical
   0

Because failCRC is 0, HT-SIG passed the CRC check.

Visualize the scatter plot of the equalized symbols, eqSym.

scatterplot(eqSym(:))

Input Arguments

collapse all

Received HT-SIG field, specified as an NS-by-NR matrix. NS is the number of samples and increases with channel bandwidth.

Channel BandwidthNS
'CBW20'160
'CBW40'320

NR is the number of receive antennas.

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 increases with channel bandwidth.

Channel BandwidthNST
'CBW20'52
'CBW40'104

NR is the number of receive antennas.

The channel estimate is based on the L-LTF.

Noise variance estimate, specified as a nonnegative scalar.

Data Types: double

Channel bandwidth in MHz, specified as 'CBW20' or 'CBW40'.

Data Types: char | string

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

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

OFDM symbol sampling offset represented as a fraction of the cyclic prefix (CP) length, specified as the comma-separated 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.

Data Types: double

Equalization method, specified as the comma-separated pair consisting of 'EqualizationMethod' and one of these values.

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

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

Data Types: char | string

Pilot phase tracking, specified as the comma-separated 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 HT-SIG information bits, returned as a 48-element column vector. The number of elements corresponds to the length of the HT-SIG field.

CRC failure status, returned as a logical scalar. If HT-SIG fails the CRC check, failCRC is true.

Equalized symbols, returned as a 48-by-2 matrix corresponding to 48 data subcarriers and 2 OFDM symbols.

Common phase error in radians, returned as a 2-by-1 column vector.

More About

collapse all

HT-SIG

The high throughput signal (HT-SIG) field is located between the L-SIG field and HT-STF and is part of the HT-mixed format preamble. It is composed of two symbols, HT-SIG1 and HT-SIG2.

HT-SIG carries information used to decode the HT packet, including the MCS, packet length, FEC coding type, guard interval, number of extension spatial streams, and whether there is payload aggregation. The HT-SIG symbols are also used for auto-detection between HT-mixed format and legacy OFDM packets.

For a detailed description of the HT-SIG field, see Section 19.3.9.4.3 of IEEE® Std 802.11™-2016.

L-LTF

The legacy long training field (L-LTF) is the second field in the 802.11 OFDM PLCP legacy preamble. The L-LTF is a component of VHT, HT, and non-HT PPDUs.

Channel estimation, fine frequency offset estimation, and fine symbol timing offset estimation rely on the L-LTF.

The L-LTF is composed of a cyclic prefix (CP) followed by two identical long training symbols (C1 and C2). The CP consists of the second half of the long training symbol.

The L-LTF duration varies with channel bandwidth.

Channel Bandwidth (MHz)Subcarrier Frequency Spacing, ΔF (kHz)Fast Fourier Transform (FFT) Period (TFFT = 1 / ΔF)Cyclic Prefix or Training Symbol Guard Interval (GI2) Duration (TGI2 = TFFT / 2)L-LTF Duration (TLONG = TGI2 + 2 × TFFT)
20, 40, 80, and 160312.53.2 μs1.6 μs8 μs
10156.256.4 μs3.2 μs16 μs
578.12512.8 μs6.4 μs32 μs

References

[1] IEEE Std 802.11™-2012 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.

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.