Main Content

wlanFormatDetect

Detect packet format

Description

format = wlanFormatDetect(rxSig,chEst,noiseVarEst,cbw) detects and returns format, the packet format of a received time-domain signal. The function detects the packet format by performing a series of checks on rxSig, a portion of the signal whose contents uniquely determine the packet format. For more information, see Format Detection Processing. To perform these checks, the function also requires estimated channel characteristics chEst, estimated noise variance noiseVarEst, and channel bandwidth cbw.

example

format = wlanFormatDetect(rxSig,chEst,noiseVarEst,cbw,Name=Value) specifies algorithm options for information bit recovery by using one or more name-value arguments.

example

Examples

collapse all

Detect the format of a WLAN HE SU waveform.

Generate an HE SU waveform and obtain a received signal by adding noise.

cbw = 'CBW20'; % Specify channel bandwidth of 20 MHz
cfgHESU = wlanHESUConfig('ChannelBandwidth',cbw); % Create configuration object for HE SU format
bits = [1;0;0;1];
tx = wlanWaveformGenerator(bits,cfgHESU); % Generate HE SU waveform
snr = 10; % Specify signal-to-noise ratio (SNR)
rx = awgn(tx,snr); % Create receive waveform

Specify the sample rate and durations of the relevant PPDU fields.

sr = 20e6; % Sample rate in samples per second
tLSTF = 8e-6; % Duration of legacy short training field (L-STF)
tLLTF = tLSTF; % Duration of legacy long training field (L-LTF)

Determine the field indices and estimate the channel using the L-LTF.

ind = tLSTF*sr+(1:tLLTF*sr);
y = wlanLLTFDemodulate(rx(ind,:),cbw);
chEst = wlanLLTFChannelEstimate(y,cbw);

Specify the channel noise variance estimate and detect the format of the waveform.

noiseVarEst = 10^(-snr/20);
rxSig = rx((tLSTF+tLLTF)*sr+(1:sr*(16e-6)),:); % 16 microseconds corresponding to four OFDM symbols after HE L-LTF
format = wlanFormatDetect(rxSig,chEst,noiseVarEst,cbw);
disp(format)
HE-SU

Perform format detection on a WLAN high-throughput mixed format (HT-MF) waveform.

Generate an HT-MF waveform and add noise to the transmitted waveform.

cbw = 'CBW20';
cfgTx = wlanHTConfig('ChannelBandwidth',cbw);
tx = wlanWaveformGenerator([1;0;0;1],cfgTx);
snr = 10;
rxSig = awgn(tx,snr);

Demodulate Received Signal and Perform Channel Estimation

  1. Determine indices for the L-LTF of the 20 MHz bandwidth waveform. For this calculation, define local variables for the sample rate and duration of the L-STF and L-LTF fields in seconds.

  2. Demodulate the L-LTF.

  3. Perform channel estimation using the L-LTF.

  4. Estimate the noise variance.

sr = 20e6;
Tlstf = 8e-6;
Tlltf = 8e-6;

idxlltf = Tlstf*sr+(1:Tlltf*sr);

lltfDemod = wlanLLTFDemodulate(rxSig(idxlltf,:),cbw);
chEst = wlanLLTFChannelEstimate(lltfDemod,cbw);
noiseVarEst = 10^(-snr/20);

Detect Signal Format

  1. Determine indices for the three symbols following the L-LTF. For a 20 MHz bandwidth waveform, the duration for three symbols is 12 µs.

  2. Perform format detection.

idxDetectionSymbols = (Tlstf+Tlltf)*sr+(1:12e-6*sr);

in = rxSig(idxDetectionSymbols,:);
format = wlanFormatDetect(in,chEst,noiseVarEst,cbw)
format = 
'HT-MF'

Detect the format of a WLAN very high throughput (VHT) waveform, adjusting the default recovery algorithm settings.

Generate a VHT waveform and add white Gaussian noise to the transmitted waveform.

cbw = 'CBW80';
cfgTx = wlanVHTConfig('ChannelBandwidth',cbw);
tx = wlanWaveformGenerator([1;0;0;1],cfgTx);
snr = 10;
rxSig = awgn(tx,snr);

Demodulate Received Signal and Estimate Channel

  1. Determine indices for the L-LTF of the 80 MHz bandwidth waveform. For this calculation, define local variables for the sample rate and duration of the L-STF and L-LTF in seconds.

  2. Demodulate the L-LTF.

  3. Perform channel estimation using the L-LTF.

  4. Estimate the noise variance.

sr = 80e6;
Tlstf = 8e-6;
Tlltf = 8e-6;
idxlltf = Tlstf*sr+(1:Tlltf*sr);
lltfDemod = wlanLLTFDemodulate(rxSig(idxlltf,:),cbw);
chEst = wlanLLTFChannelEstimate(lltfDemod,cbw);
noiseVarEst = 10^(-snr/20);

Detect Format

  • Determine indices for the three symbols following the L-LTF. For an 80 MHz bandwidth waveform, the duration for three symbols is 12 µs.

  • Detect the format using modified recovery settings.

TdetectionSymbols = 12e-6;
idxDetectionSymbols = (Tlstf+Tlltf)*sr+(1:TdetectionSymbols*sr);
in = rxSig(idxDetectionSymbols,:);
format = wlanFormatDetect(in,chEst,noiseVarEst,cbw, ...
    'OFDMSymbolOffset',0.5,'PilotPhaseTracking','None')
format = 
'VHT'

Input Arguments

collapse all

Post-long-training-field (post-LTF) portion of the received time-domain signal, specified as a complex-valued NS-by-NR matrix, where:

  • NS is the number of time-domain samples.

  • NR is the number of receive antennas.

For the function to successfully detect the format of an EHT or HE packet, this input must contain all time-domain samples in the four OFDM symbols immediately following the L-LTF: sym1, sym2, sym3, and sym4. For the function to successfully detect other packet formats, this signal must contain all time-domain samples in the three OFDM symbols immediately following the relevant LTF: sym1, sym2, sym3. The first entry in each column of this input must be the first time-domain sample of the symbol received by the corresponding antenna. For more information about how the wlanFormatDetect function uses this input for format detection, see Format Detection Processing.

Note

If the number of received OFDM symbols is greater than four, the function ignores additional samples after sym4.

Data Types: single | double
Complex Number Support: Yes

Channel estimate for data and pilot subcarriers based on the L-LTF, specified as a numeric matrix or array of size NST-by-1-by-NR, where:

  • NST is the number of occupied subcarriers.

  • NR is the number of receive antennas.

The second dimension corresponds to the single transmitted stream in the L-LTF. If the transmission uses multiple antennas, the single transmitted stream includes the combined cyclic shifts.

Data Types: single | double
Complex Number Support: Yes

Noise variance estimate, specified as a nonnegative scalar.

Data Types: double

Channel bandwidth, in MHz, specified as one of these values.

  • 'CBW5' — Channel bandwidth of 5 MHz

  • 'CBW10' — Channel bandwidth of 10 MHz

  • 'CBW20' — Channel bandwidth of 20 MHz

  • 'CBW40' — Channel bandwidth of 40 MHz

  • 'CBW80' — Channel bandwidth of 80 MHz

  • 'CBW160' — Channel bandwidth of 160 MHz

  • 'CBW320' — Channel bandwidth of 320 MHz

Data Types: char

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

Warning suppression, specified as false or true. Set to true to suppress warning messages.

Data Types: logical

Output Arguments

collapse all

Packet format, returned as one of these values:

  • 'Non-HT' — Non-high-throughput (non-HT) format

  • 'HT-MF' — High-throughput mixed format (HT MF)

  • 'HT-GF' — High-throughput greenfield format (HT GF)

  • 'VHT' — Very-high-throughput (VHT) format

  • 'HE-SU' — High-efficiency single-user (HE SU) format

  • 'HE-EXT-SU' — HE extended-range single-user (HE ER SU) format

  • 'HE-MU' — HE multi-user (HE MU) format

  • 'HE-TB' — HE trigger-based (HE TB) format

  • 'EHT-MU' — EHT multi-user (EHT MU) format (since R2023a)

  • 'EHT-TB' — EHT trigger-based (EHT TB) format (since R2023a)

  • 'EHTValidate' — Validation bit detected. See Section 36.3.12.7.2 of [1]. (since R2023a)

Algorithms

collapse all

References

[1] IEEE® P802.11be™/D5.0. “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 8: Enhancements for Extremely High Throughput (EHT).” Draft Standard for Information Technology — Telecommunications and Information Exchange between Systems — Local and Metropolitan Area Networks — Specific Requirements, https://ieeexplore.ieee.org/document/10381585

Extended Capabilities

expand all

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

Version History

Introduced in R2016b

expand all