Main Content

wlanEHTDemodulate

Demodulate fields of EHT waveform

Since R2023a

Description

sym = wlanEHTDemodulate(rx,field,cfg) recovers a demodulated frequency-domain signal by OFDM-demodulating the received time-domain extremely high-throughput (EHT) signal rx.

example

sym = wlanEHTDemodulate(rx,field,cfg,ruNumber) specifies the number of a resource unit (RU) or multiple resource unit (MRU). To demodulate the EHT-Data field or the EHT long training field (EHT-LTF), use this syntax.

example

sym = wlanEHTDemodulate(___,Name=Value) specifies additional options using one or more name-value pair arguments in combination with either of the previous syntaxes.

example

Examples

collapse all

Create a non-OFDMA EHT MU configuration object with a channel bandwidth of 320 MHz.

cfg = wlanEHTMUConfig("CBW320");

Generate a time-domain waveform for the configuration.

tx = wlanWaveformGenerator([1;0;0;1],cfg);

Extract the part of the waveform that corresponds to the EHT-SIG field.

ind = wlanFieldIndices(cfg);
ehtSig = tx(ind.EHTSIG(1):ind.EHTSIG(2),:);

Demodulate the EHT-SIG field.

sym = wlanEHTDemodulate(ehtSig,"EHT-SIG",cfg);

Extract the data and pilot subcarriers.

info = wlanEHTOFDMInfo('EHT-SIG',cfg);
data = sym(info.DataIndices,:,:);
pilots = sym(info.PilotIndices,:,:);

Create an OFDMA EHT MU configuration object. Set the allocation index to 23. This setting specifies a configuration with four users. One user has a 26-tone RU, another has a 106-tone RU, and the remaining two both have a 52-tone RU.

cfg = wlanEHTMUConfig(23);

Generate a time-domain waveform for the configuration.

tx = wlanWaveformGenerator([1;0;0;1],cfg);

Generate field indices for the configuration.

ind = wlanFieldIndices(cfg);

Extract the parts of the waveform that correspond to the EHT-LTF and EHT-Data fields.

rxLTF = tx(ind.EHTLTF(1):ind.EHTLTF(2),:);
rxData = tx(ind.EHTData(1):ind.EHTData(2),:);

Demodulate the EHT-LTF and EHT-Data fields for each of the four RUs.

for ruNumber = 1:numel(cfg.RU)
    symLTF = wlanEHTDemodulate(rxLTF,"EHT-LTF",cfg,ruNumber);
    symData = wlanEHTDemodulate(rxData,"EHT-Data",cfg,ruNumber);
end

Create a non-OFDMA EHT MU configuration object with a channel bandwidth of 40 MHz.

cfg = wlanEHTMUConfig("CBW40");

Generate a time-domain waveform for the configuration.

tx = wlanWaveformGenerator([1;0;0;1],cfg);

Generate the field indices for the configuration, once using default settings and once specifying an oversampling factor of 2.

ind1 = wlanFieldIndices(cfg);
ind2 = wlanFieldIndices(cfg,OversamplingFactor=2);

Extract and demodulate the part of the waveform that corresponds to the EHT-SIG field, once using default settings and once specifying an oversampling factor of 2.

rxEHTSig1 = tx(ind1.EHTSIG(1):ind1.EHTSIG(2),:);
sym1 = wlanEHTDemodulate(rxEHTSig1,"EHT-SIG",cfg);
rxEHTSig2 = tx(ind2.EHTSIG(1):ind2.EHTSIG(2),:);
sym2 = wlanEHTDemodulate(rxEHTSig2,"EHT-SIG",cfg,OversamplingFactor=2);

Input Arguments

collapse all

Received time-domain signal, specified as a complex-valued matrix of size Ns-by-Nr.

  • Ns is the number of time-domain samples. If Ns is not an integer multiple of the OFDM symbol length, Ls, for the specified field, then the function ignores the remaining mod(Ns,Ls) symbols.

  • Nr is the number of receive antennas.

Data Types: single | double
Complex Number Support: Yes

Field to be demodulated, specified as one of these values:

  • "L-LTF" — Demodulate the legacy long training field (L-LTF).

  • "L-SIG" — Demodulate the legacy signal (L-SIG) field.

  • "RL-SIG" — Demodulate the repeated legacy signal (RL-SIG) field.

  • "U-SIG" — Demodulate the universal signal (U-SIG) field.

  • "EHT-SIG" — Demodulate the EHT signal (EHT-SIG) field.

  • "EHT-LTF" — Demodulate the EHT long training field (EHT-LTF).

  • "EHT-Data" — Demodulate the EHT-Data field.

Data Types: char | string

Physical layer (PHY) format configuration, specified as an object of type wlanEHTMUConfig, wlanEHTTBConfig, or wlanEHTRecoveryConfig.

Number of the RU or MRU of interest, specified as a positive integer. This input specifies the location of the RU or MRU in the channel. For example, consider a 20 MHz transmission with one 106+26-tone RU, one 52+26-tone MRU, and one 26-tone RU, in order of absolute frequency. For this allocation:

  • RU 1 corresponds to the 106+26-tone MRU at the lowest absolute frequency (size 106+26, index 1).

  • RU 2 corresponds to the 52+26-tone MRU at the next lowest absolute frequency (size 52+26, index 2).

  • RU 3 corresponds to the 26-tone RU at the highest absolute frequency (size 26, index 3).

Note

  • For an OFDMA-type EHT MU PPDU, this input is required when the field input is "EHT-LTF" or "EHT-Data".

  • For a non-OFDMA-type EHT MU PPDU, this input is not required, regardless of the value of the field input.

  • For an EHT TB PPDU, this input is not required.

  • This input is not required when field is equal to "L-LTF", "L-SIG", "RL-SIG", U-SIG", or "EHT-SIG".

  • This input is not required when you specify cfg as a wlanEHTRecoveryConfig object.

Data Types: single | double

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: OversamplingFactor=2

Oversampling factor, specified as a scalar greater than or equal to 1. The oversampled cyclic prefix length must be an integer number of samples. For more information, see FFT-Based Oversampling.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

OFDM symbol sampling offset, specified as a scalar in the interval [0, 1]. The scalar represents the sampling offset as a fraction of the cyclic prefix length.

The value that you specify indicates the start location for OFDM demodulation relative to the beginning of the cyclic prefix.

Some possible values for the OFDMSymbolOffset property

Example: 0.45

Data Types: single | double

Output Arguments

collapse all

Demodulated frequency-domain signal, returned as a complex-valued array of size Nsc-by-Nsym-by-Nr.

  • Nsc is the number of active occupied subcarriers in the demodulated field.

  • Nsym is the number of OFDM symbols.

  • Nr is the number of receive antennas.

Data Types: double
Complex Number Support: Yes

Algorithms

collapse all

FFT-Based Oversampling

An oversampled signal is a signal sampled at a frequency that is higher than the Nyquist rate. WLAN signals maximize occupied bandwidth by using small guardbands, which can pose problems for anti-imaging and anti-aliasing filters. Oversampling increases the guardband width relative to the total signal bandwidth, which increases the number of samples in the signal.

This function performs oversampling by using a larger IFFT and zero pad when generating an OFDM waveform. This diagram shows the oversampling process for an OFDM waveform with NFFT subcarriers made up of Ng guardband subcarriers on either side of Nst occupied bandwidth subcarriers.

FFT-based oversampling

Extended Capabilities

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

Version History

Introduced in R2023a

expand all