Engee documentation

EngeeComms.OFDMDemodulatorBaseband

Demodulation using the OFDM method.

Library

EngeeComms

Block

OFDM Demodulator

Description

The EngeeComms.OFDMDemodulatorBaseband system object demodulates the input signal using the orthogonal frequency division multiplexed channel division multiplexing (OFDM) method in the time domain and outputs subcarriers based on OFDM parameters.

For more information, see. EngeeComms.OFDMModulator. The output is a wideband representation of the input signal for the system object EngeeComms.OFDMModulator.

To demodulate an OFDM signal, perform the following steps:

  1. Create an EngeeComms.OFDMDemodulatorBaseband object and set its properties.

  2. Call the object with arguments as if it were a function. To learn more about how system objects work, see Engee system objects.

Syntax

Creation

  • object = EngeeComms.OFDMDemodulatorBasband creates an OFDM demodulator that demodulates the input signal using the frequency-division orthogonal demodulation method, with by default property values. Example:

    ofdmDemod = EngeeComms.OFDMDemodulatorBaseband
  • object = EngeeComms.OFDMDemodulatorBaseband(Name=Value) creates an OFDM demodulator with each specified property Name (name) set to the specified Value (value). You can specify additional arguments as a name-value pair in any order (Name1=Value1,…​,NameN=ValueN). Example:

    ofdmDemod = EngeeComms.OFDMDemodulatorBaseband(FFTLength=64)

Usage

  • Y = ofdmDemod(X) demodulates the time domain input signal using the OFDM method and returns the demodulated OFDM baseband signal.

  • [Y,pilot] = ofdmDemod(X) splits the pilot signal into the subcarriers specified in the value of the PilotCarrierIndices property. To use this syntax, set the PilotOutputPort property to true.

Arguments

Input

X - OFDM modulated broadband input signal
matrix

Details

OFDM modulated wideband signal specified as a matrix

  • - oversampling factor defined by the OversamplingFactor property.

  • - length of the cyclic prefix over all characters.

    • - the length of the cyclic prefix defined by the CyclicPrefixLength property.

    • If CyclicPrefixLength is a scalar, .

    • If CyclicPrefixLength is a vector of strings, .

  • - The number of subcarriers defined by the FFTLength parameters.

  • - number of symbols, defined by the NumberOfOFDMSymbols parameters.

  • - number of receiving antennas defined by the NumberOfReceiveAntennas parameters.

Типы данных

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Bool

Support for complex numbers

Yes

Output

Y - demodulated output signal
matrix | 3D array

Details

Demodulated output signal returned as a matrix or array at to of the same data type as the input signal. The output signal is reduced to a matrix if is 1.

  • - number of data subcarriers.

  • - the number of symbols defined by the NumSymbols. property.

  • - number of receiving antennas, defined by the NumReceiveAntennnas property.

Типы данных

Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Bool

Support for complex numbers

Yes

pilot - pilot signal
3D array | 4D array

Details

A pilot signal returned with the same data type as the input signal. Defined as:

  • 3D array of size by by , when the PilotCarrierIndices property is a vector or matrix.

  • 4D array of size to to to , when the PilotCarrierIndices property is a 3D array.

Where.

  • - is the number of pilot subcarriers in each symbol, defined by size(PilotCarrierIndices,1).

  • - is the number of symbols defined by the NumSymbols property.

  • - number of receiving antennas defined by the NumReceiveAntennnas property.

  • - number of transmitting antennas.

Dependencies

To use this argument, set the PilotOutputPort property to true.

Properties

FFTLength - number of FFT points
64 (by default) | `positive integer `

Details

The number of Fast Fourier Transform (FFT) points specified as a positive integer scalar. The length of the FFT must be and equivalent to the number of subcarriers.

NumGuardBandCarriers -. number of subcarriers allocated to the left and right guard bands
[6; 5] (by default) | Enumeric vector 2 by 1

Details

The number of subcarriers allocated to the left and right guard bands, given as a 2-by-1 integer vector.

The number of subcarriers of the left and right guard bands, , shall be within , where is the total number of subcarriers in the OFDM signal as determined by the FFTLength property.

RemoveDCCarrier - exclude or include the zero frequency subcarrier
false or 0 (by default) | true or 1

Details

Option to remove the DC zero subcarrier, specified as numeric or logical 0 (false) or 1 (true). The zero frequency subcarrier is located in the centre of the frequency band and has an index value:

  • , if the value of is even.

  • , if the value of is odd.

- is the total number of subcarriers in the OFDM signal defined by the FFTLength property.

PilotOutputPort — pilot subcarrier output
false or 0 (by default) | true or 1

Details

Pilot subcarrier output option specified as numeric or logical 0 (false) or 1 (true).

  • 0 (false) - pilot information may be present but remains embedded in the output.

  • 1 (true) - the block separates the subcarriers specified by the PilotSubcarrierIndices property from the output data and outputs the demodulated pilot signal in the pilot argument.

PilotCarrierIndices — pilot subcarrier location indices
[12; 26; 40; 54] (by default) | column vector | matrix | 3D array

Details

Pilot subcarrier location indices specified as a column vector, matrix or 3D array with integer element values in the range of

,

where

  • - is the total number of subcarriers in the OFDM signal, defined by the FFTLength property.

  • and are the left and right guard bands defined by the NumberOfGuardBands property value.

The pilot carrier indices can be assigned the same or different subcarriers for each symbol and for all transmitting antennas .

  • If the pilot indices are the same for each symbol and transmitting antenna, the parameters have the dimension by 1.

  • If the pilot indices are different per symbol, the parameters has the dimension by .

  • If the received signal is assigned to the same symbol on multiple transmitting antennas, the parameters has the dimension by 1 to .

  • If the indices differ in the number of symbols and transmitting antennas, the parameters have the dimension to to .

To minimise interference between transmissions to more than one transmitting antenna, the pilot indices per symbol should be mutually different for all antennas.

Dependencies

To use this property, set the PilotOutputPort property to 1.

CyclicPrefixLength -. cyclic prefix length
16 (by default) | positive integer | vector-string | vector-string

Details

The length of the cyclic prefix for each OFDM character, specified as a positive integer scalar or string vector containing the number of OFDM character elements. When specifying the length of the cyclic prefix as:

  • Scalar - the length of the cyclic prefix is the same for all symbols through all antennas.

  • Vector-string - the length of the cyclic prefix can vary between symbols, but does not vary between antennas.

OversamplingFactor — oversampling factor
1 (by default) | positive integer

Details

The oversampling factor specified as a positive scalar. The oversampling factor must satisfy these constraints:

  • The product of OversamplingFactor by FFTLength must be an integer.

  • The product of OversamplingFactor over CyclicPrefixLength must be an integer.

If OversamplingFactor is specified as an irrational number, specify a fractional value. For example, given FFTLength 12 and OversamplingFactor 4/3, their product is the integer 16. However, rounding 4/3 to 1,333 when OversamplingFactor is set results in a non-integer product of 15,9960, which causes an error.
Типы данных

Float64

NumSymbols - number of OFDM characters
1 (by default) | positive integer

Details

The number of OFDM characters in the time-frequency grid, specified as a positive integer scalar.

NumReceiveAntennnas — number of receiving antennas
1 (by default) | a positive integer

Details

The number of receiving antennas to receive an OFDM modulated signal is specified as a positive integer scalar less than or equal to 64.

Methods

Common for all system objects

step!

Start the system object’s operating algorithm

release!

Allow changing the value of a system object property

reset!

Reset internal states of the system object

Optional

Algorithms

* OFDM demodulation

The orthogonal frequency division multiplexing (OFDM) method demodulates the OFDM input signal using an FFT operation, resulting in N parallel data streams.

The figure shows an OFDM demodulator consisting of a bank of N correlators with one correlator assigned to each OFDM subcarrier. The bank of correlators is followed by a parallel-to-serial conversion.

ofdm demodulator 1

Subcarrier allocation, guard bands and guard intervals

Individual OFDM subcarriers are allocated as data, pilot or null subcarriers.

As shown here, the subcarriers are labelled as data, DC, pilot or guard band subcarriers.

ofdm demodulator 2

  • Data subcarriers transmit user data.

  • Pilot subcarriers are used for channel evaluation.

  • Zero frequency subcarriers do not transmit any data. Non-data subcarriers provide the centre subcarrier zero frequency and serve as buffers between OFDM resource blocks.

    • The zero frequency subcarrier is the centre of the frequency band with an index of

      if the value is even.

      If is odd.

      - is the total number of subcarriers in the OFDM signal.

    • The guard bands serve as a buffer between neighbouring signals in adjacent frequency bands to reduce interference caused by spectral leakage.

Zero frequency subcarriers allow modelling of guard bands and zero subcarrier locations for specific standards such as different 802.11 formats, LTE, WiMAX, or custom allocations. The location of the null subcarriers can be defined by assigning a vector of null subcarrier indices.

Similar to guard bands, guard intervals protect the integrity of transmitted signals in OFDM by reducing intersymbol interference.

The purpose of guard intervals is similar to that of guard bands. You can model guard intervals to provide temporal separation between OFDM symbols. Guard intervals help maintain inter-symbol orthogonality after a signal passes through time-dispersive channels. Guard intervals are created using cyclic prefixes. Inserting a cyclic prefix copies the last OFDM as the first part of the OFDM symbol.

ofdm demodulator 3

OFDM benefits from the usage of cyclic prefix insertion as long as the time variance does not exceed the duration of the cyclic prefix.

Insertion of the cyclic prefix results in a fractional reduction in user data throughput because the cyclic prefix takes up bandwidth that could have been used for data transmission.

Literature

  1. Dahlman, E., S. Parkvall, and J. Skold. "4G LTE/LTE-Advanced for Mobile Broadband." London: Elsevier Ltd., 2011.

  2. Andrews, J. G., A. Ghosh, and R. Muhamed. "Fundamentals of WiMAX. Upper Saddle River," NJ: Prentice Hall, 2007.

  3. IEEE Standard 802.16-2017. "Part 16: Air Interface for Broadband Wireless Access Systems." March 2018.