System object EngeeComms.OFDMModulatorBaseband Modulates the signal in the frequency domain using the orthogonal frequency division multiplexing (OFDM) method. The output is a basic representation of the OFDM-modulated signal.
To modulate the signal using OFDM, follow these steps:
Create an object EngeeComms.OFDMModulatorBaseband and set its properties.
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
ofdmMod = EngeeComms.OFDMModulatorBaseband() — creates an OFDM modulator with default property values.
Example:
ofdmMod = EngeeComms.OFDMModulatorBaseband()
ofdmMod = EngeeComms.OFDMModulatorBaseband(Name=Value) — creates an OFDM modulator with the specified properties in the form of a pair Name=Value, where Name — the name of the property, and Value — the appropriate value. You can specify multiple pairs «name-value» the order of the pairs does not matter. Unspecified properties retain their default values.
Y = ofdmMod(X) — modulates subcarriers of the input data in the frequency domain using the OFDM method and returns the OFDM-modulated base signal.
Y = ofdmMod(data,pilot) — assigns a pilot signal, pilot, to the frequency subcarriers specified by the PilotCarrierIndices property indexes. To enable this syntax, set the PilotInputPort property to true.
Arguments
Input arguments
X —
broadband input signal
+
array
Details
The input broadband signal, specified as an array on on .
– this is the amount of subcarrier data.
— the number of characters defined by the NumSymbols property.
— the number of receiving antennas, determined by the Numtransmitantennas property.
The number of fast Fourier transform (FFT) points, specified as a positive integer scalar. The length of the FFT should be and is equivalent to the number of subcarriers.
NumGuardBandCarriers —
the number of subcarriers allocated to the left and right guard bands
+
[6; 5] (default) | a 2-by-1 integer vector
Details
The number of subcarriers allocated for the left and right protective strips, set as an integer vector of 2 by 1.
The number of subcarriers of the left and right protective strips, , must be within , where — the total number of subcarriers in the OFDM signal, determined by the FFTLength property.
InsertDCNull —
exclude or enable a zero-frequency subcarrier
+
false or 0 (default) | true or 1
Details
Select this option to remove the zero-frequency subcarrier. The zero DC subcarrier is located in the center of the frequency band and has an index value:
If the value is even number.
If the value is the odd one.
— this is the total number of subcarriers in the OFDM signal, determined by the FFTLength property.
PilotInputPort —
input of pilot subcarriers
+
false or 0 (default) | true or 1
Details
Using an argument to enter pilot subcarriers, set as a numeric or boolean value 0 (false) or 1 (true).
false (0) — the input data argument, X, may contain embedded information about pilot subcarriers, but the block does not assign indexes to pilot subcarriers.
true (1) — The block assigns subcarriers specified by the PilotCarrierIndices property for pilot signal modulation in the pilot input argument.
PilotCarrierIndices —
location indexes of pilot subcarriers
+
[12; 26; 40; 54] ( by default) | column vector | the matrix | 3D array
Details
The location indexes of the pilot subcarriers, specified as a column vector, matrix, or array with integer values of elements in the range
,
where:
— the total number of subcarriers in the OFDM signal, determined by the FFT length parameter.
and — the left and right guard bands specified by the value of the parameter Number of guard bands.
Pilot carrier indexes you can assign the same or different subcarriers for each symbol and for all transmitting antennas .
If the pilot indexes are the same for each symbol and the transmitting antenna, the parameter has the dimension on 1.
If the pilot indexes differ in characters, the parameter has the dimension on .
If the received signal is assigned a single symbol on several transmitting antennas, then the parameter has the dimension on 1 on .
If the indexes differ in the number of characters and transmitting antennas, the parameter has the dimension on on .
To minimize interference between transmissions to more than one transmitting antenna, the pilot indexes per symbol must be mutually different for all antennas.
Dependencies
To use this property, set the PilotInputPort property to 1.
CyclicPrefixLength —
length of the cyclic prefix
+
16 (default) | a positive integer | vector string
Details
The length of the cyclic prefix for each OFDM character is set as a positive integer scalar or a 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 across all antennas.
Vector string — the length of the cyclic prefix may vary between characters, but it does not vary between antennas.
Windowing —
application of the increased cosine window function between OFDM characters
+
false or 0 (default) | true or 1
Details
Enabling the increased cosine window function between OFDM characters, set as numeric or logical 0 (false) or 1 (true).
To reduce the power of out-of-band subcarriers caused by spectral overgrowth, use window separation.
WindowLength is
the length of the window function with increased cosine
+
1 (default) | a positive integer
Details
Specify the length of the elevated cosine window function as a positive integer scalar.
This value must be less than or equal to the minimum length of the cyclic prefix specified in the CyclicPrefixLength property. For example, in a four-character configuration with a cyclic prefix length 12, 14, 16 and 18, WindowLength must be less than or equal to 12.
Dependencies
To use this property, set the Windowing property to true.
OversamplingFactor —
oversampling coefficient
+
1 (default) | a positive integer
Details
The oversampling coefficient, set as a positive scalar. The oversampling coefficient must satisfy these constraints.:
The product of OversamplingFactor by FFTLength must be an integer.
The product of OversamplingFactor by CyclicPrefixLength must be an integer.
If OversamplingFactor is set as an irrational number, specify a fractional value. For example, with FFTLength12 and OversamplingFactor4/3 their product is equal to an integer 16. However, the rounding 4/3 before 1,333 when installing OversamplingFactor, it results in a non-integer product 15,9960, which leads to an error.
NumSymbols —
number of OFDM characters
+
1 (default) | a positive integer
Details
The number of OFDM symbols in the time-frequency grid, specified as a positive integer scalar.
Numtransmitantennas —
number of transmitting antennas
+
1 (default) | a positive integer
Details
The number of transmitting antennas for transmitting the OFDM-modulated signal is given as a positive integer scalar, 64.
Methods
Common to all system objects
step!
Run the system object operation algorithm
release!
Allow changing the value of a system object property
reset!
Resetting the internal states of a system object
Additional Info
Algorithms
Orthogonal frequency division multiplexing
OFDM belongs to the class of multi-channel modulation schemes. Due to the fact that several carriers can be transmitted simultaneously during operation, noise does not affect OFDM to the same extent as with single-band modulation.
OFDM divides the high-speed data stream into low-speed subcarriages by decomposing the transmission frequency band into a number of adjacent individually modulated subcarriers. This set of parallel and orthogonal subcarriers carries the data stream, occupying almost the same bandwidth as the broadband channel. By using narrow orthogonal subcarriers, the OFDM signal becomes resistant to fading in the frequency-selective channel and eliminates interference from neighboring subcarriers. Inter-character interference (ISI) is reduced because subcreams with a lower data rate have a character duration longer than the delay spread in the channel.
This image shows the representation of orthogonal subcarriers in the frequency domain in the OFDM waveform.
The transmitter applies the inverse Fast Fourier Transform (IFFT) to N characters at a time. Usually, the output of the IFFT is the sum of N orthogonal sinusoids.:
,
where
– data symbols,
– OFDM character time.
The Xk data symbols are usually complex and can be from any digital modulation alphabet (for example, QPSK, 16-QAM, 64-QAM, etc.).
The implementation of the discrete Fourier transform normalizes the IFFT output to .
The distance between the subcarriers is [Δf = 1/T], which ensures the orthogonality of the subcarriers during each character period:
The OFDM modulator consists of a series-parallel conversion followed by a bank of N complex modulators individually corresponding to each OFDM subcarrier.
Subcarrier distribution, guard bands and guard intervals
Individual OFDM subcarriers are allocated as subcarriers of data, pilot or null.
As shown here, subcarriers are designated as subcarriers of data, DC, pilot, or protective band.
Subcarriers of data transmit user data.
The pilot subcarriers are designed to evaluate the channel.
Zero-frequency subcarriers do not transmit any data. Subcarriers without data provide zero frequency of the central subcarrier and serve as buffers between OFDM resource blocks.
The subcarrier of the zero frequency is the center of the frequency band with the index
If the value is even number.
If the value is the odd one.
— this is the total number of subcarriers in the OFDM signal.
The protection bands serve as a buffer between adjacent signals in adjacent frequency bands to reduce interference caused by spectral leakage.
Zero-frequency subcarriers allow you to simulate protective bands and the location of zero subcarriers for specific standards, such as various 802.11, LTE, WiMAX formats, or for custom distributions. The location of the zero subcarriers can be determined by assigning a vector of zero subcarrier indexes.
Similar to guard bands, guard intervals protect the integrity of transmitted signals in OFDM by reducing inter-character interference.
The purpose of protective intervals is similar to the purpose of protective strips. You can simulate guard intervals to ensure time separation between OFDM symbols. Guard intervals help to maintain inter-character orthogonality after the signal passes through channels with time variance. Guard intervals are created using cyclic prefixes. Inserting a cyclic prefix copies the last OFDM as the first part of the OFDM symbol.
OFDM benefits from using cyclic prefix insertion as long as the time variance does not exceed the duration of the cyclic prefix.
Inserting a cyclic prefix results in a fractional decrease in user data throughput, since the cyclic prefix takes up bandwidth that could have been used for data transmission.
Window function for OFDM with increased cosine
The window function for OFDM with increased cosine applies the methods described in [3] to limit spectral expansion by creating a smooth transition between the last sample of one character and the first sample of the next character.
Although the cyclic prefix creates a protective period in the time domain to maintain orthogonality, the OFDM symbol rarely begins with the same amplitude and phase as at the end of the previous OFDM symbol, which causes spectral expansion and, consequently, signal bandwidth expansion due to intermodulation distortion. To limit this spectral expansion, you can create a smooth transition between the last character sample and the first sample of the next character using a cyclic suffix and a window function with an increased cosine.
To create a cyclic suffix, the operation adds the first samples ) of this character to the end of this character. However, to comply with the IEEE® 802.11g standard, for example, an operation cannot arbitrarily lengthen a character. Instead, the cyclic suffix should overlap in time and effectively be combined with the cyclic prefix of the next character. The operation applies two mathematically inverse window functions in this overlapping segment. The first window function with an increased cosine is applied to the cyclic suffix of the symbol k and decreases from 1 to 0 during its operation. The second window function with an increased cosine is applied to the cyclic prefix of the k+1 symbol and increases from 0 to 1 during its operation. This process ensures a smooth transition from one character to another.
Window function with increased cosine, , in the time domain can be expressed as:
,
where:
– the duration of the OFDM symbol, including the guard interval.
– the duration of the window function.
The length of the cyclic suffix is adjusted by setting the length of the window function, while the length of the suffix is set in the range from 1 to the minimum length of the cyclic prefix. Although the installation of windows improves spectral recovery, this is due to a decrease in resistance to multipath fading due to a decrease in redundancy in the protective band due to a change in the values of the protective band samples to smooth the intersymbol transition.
These figures show the application of a window function with an increased cosine.
Literature
Dahlman, E., S. Parkvall, and J. Skold. "4G LTE/LTE-Advanced for Mobile Broadband." London: Elsevier Ltd., 2011.
Andrews, J. G., A. Ghosh, and R. Muhamed. "Fundamentals of WiMAX." Upper Saddle River, NJ: Prentice Hall, 2007.