メインコンテンツ

wlanHTSIGRecover

R2026b

Recover HT-SIG information bits

Description

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

example

recBits = wlanHTSIGRecover(rxSig,chanEst,nVar,cbw,Name,Value) specifies algorithm parameters by using one or more name-value pair arguments. For example, PilotPhaseTracking="None" disables pilot phase tracking.

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.

example

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

chanEst = ones(104,1);
nVar = 0;

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

rxBits = wlanHTSIGRecover(txSig,chanEst,nVar,"CBW40");
numerr = biterr(txBits,rxBits)
numerr = 
0

Configure an HT transmission with a channel bandwidth of 40 MHz by creating a wlanHTConfig object. Generate the corresponding HT-SIG field.

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

Pass the transmitted HT-SIG waveform through an additive white Gaussian noise (AWGN) channel.

snrdB = 15; % SNR (dB)
% Convert the SNR per active subcarrier to total SNR to account for noise energy in null subcarriers
ofdmInfo = wlanHTOFDMInfo("HT-LTF",cfg);
snrValue = convertSNR(snrdB,"snrsc","snr",FFTLength=ofdmInfo.FFTLength,NumActiveSubcarriers=ofdmInfo.NumTones);
nVar = 10^((-snrValue-30)/10); % Noise variance (W) for 0 dBm (-30 dBW) signal power
rxSig = awgn(txSig,snrValue);

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

recBits = wlanHTSIGRecover(rxSig,ones(104,1),nVar,"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(:))

Figure Scatter Plot contains an axes object. The axes object with title Scatter Plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers.

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

Data Types: double | single

Noise variance estimate, specified as a nonnegative scalar.

Data Types: double | single

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

Data Types: char | string

Name-Value Arguments

collapse all

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.

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

Data Types: double | single

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

Data Types: double | single

More About

collapse all

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

expand all

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

Version History

Introduced in R2015b

expand all


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

2 © IEEE 2021. All rights reserved.

3 IEEE Std 802.11-2020 Adapted and reprinted with permission from IEEE. Copyright IEEE 2020. All rights reserved.