Main Content

OFDM Equalizer

Equalize OFDM data using channel estimates

  • Library:
  • Wireless HDL Toolbox / Modulation

  • OFDM Equalizer block

Description

The OFDM Equalizer block equalizes the OFDM data using channel estimates. The block supports zero-forcing (ZF) and minimum mean square error (MMSE) algorithms for channel equalization in the frequency domain. The block accepts data symbols, estimated channel (hEst), and the estimated channel length per symbol (hEstLen) data ports and valid and loadhEst control ports. The block outputs an equalized data port and a valid control port.

You can use this block to equalize channel effects in different communications standards, such as long term evolution (LTE) [1], 5G new radio (NR) standard TS 38.212 [2], and wireless local area network (WLAN) [3].

The block provides an interface and architecture suitable for HDL code generation and hardware deployment.

Ports

Input

expand all

OFDM data, specified as a complex-valued scalar.

double and single data types are supported for simulation, but not for HDL code generation.

Data Types: single | double | int8 | int16 | int32 | signed fixed point

Channel estimated data, specified as a complex-valued scalar.

The input data type must be fixdt(1,k,m), where k is less than or equal to 30, and m is less than k.

double and single data types are supported for simulation, but not for HDL code generation.

Data Types: single | double | int8 | int16 | fixed point

Control to indicate valid input data, specified as a Boolean scalar.

This port is a control signal that indicates when the input data and hEst port values are valid. When this value is 1, the block captures the values from the data and hEst input ports. When this value is 0, the block ignores the values on the data and hEst input ports.

Data Types: Boolean

Length of the estimated channel per symbol, specified as a scalar in the range from 2 to 65,536.

To support the minimum number of subcarriers per symbol, this data type must be fixdt(0,k,0), where k is greater than or equal to 2.

double and single data types are supported for simulation, but not for HDL code generation.

Data Types: single | double | int8 | int16 | int32 | fixed point

Channel estimates control, specified as a Boolean scalar.

When this value is 1, the block loads the channel estimates until the length of the channel estimate specified by the hEstLen input port. hEstLen is sampled at loadhEst.

When this value is 0, and the input is 1, the block performs equalization with the previously sampled hEstLen input and the stored hEst input values. If the previously sampled hEstLen value is not available, the block performs equalization with the instantaneous inputs data, hEst, and nVar. For more information, see Algorithms.

Data Types: Boolean

Noise variance, specified as a scalar.

When the input valid is 1, the block samples the nVar port. This value must be of data type fixdt(0,k,m), where k is less than or equal to 16, and m is less than or equal to k.

double and single data types are supported for simulation, but not for HDL code generation.

Dependencies

To enable this port, set the Equalization method parameter to MMSE.

Data Types: single | double | uint8 | uint16 | fixed point

Reset internal states of the block to start with new data, specified as a scalar.

Dependencies

To enable this port, select the Enable reset input port parameter.

Data Types: Boolean

Output

expand all

Complex output data, returned as a scalar. The output data type is the same as the input data type.

Data Types: single | double | int8 | int16 | int32 | signed fixed point

Indicates valid output data, returned as a Boolean scalar.

This port is a control signal that indicates when the data output port is valid. When the data samples are available on the data output port, the block sets this output valid value to 1.

Data Types: Boolean

Parameters

expand all

Select the equalization method. For more information about the equalization methods, see Algorithms.

Specify the maximum length of the channel estimate per symbol.

To support the minimum number of subcarriers per symbol, which is 2, the data type of the hEstLen input must be fixdt(0,k,0), where k is greater than or equal to 2.

Select this parameter to enable the reset input port.

Algorithms

expand all

The OFDM Equalizer block supports ZF and MMSE algorithms for channel equalization in the frequency domain. The block stores the estimated channel information to equalize the OFDM symbols and generates the equalized output using these algorithms.

The OFDM Equalizer block operation sequence is implemented using these subsystem blocks: Sample and control information, Store and retrieve channel estimates, and ZF/MMSE equalization. This figure shows these blocks.

OFDM Equalizer block architecture

The Sample and control information block samples and validates the hEstLen input based on the loadhEst input signal, validates the hEst and nVar inputs based on the validIn input signal, and outputs the sampled hEstOut output, nVarOut output, and the control information signals that are used in storing and retrieving channel information. The Store and retrieve channel estimates block stores and retrieves the channel using RAM and switches. The ZF/MMSE Equalization block performs ZF or MMSE equalization using these equations. The nVar input port is available when you set the Equalization method parameter to MMSE.

  • ZF Algorithm:

    dataOutp=(hEstp*×dataInp)/|hEstp|2

  • MMSE Algorithm:

    dataOutp=(hEstp*×dataInp)/(|hEstp|2+nVarp)

In these equations,

  • dataIn is the demodulated output provided as an input to the block

  • hEst is the estimated channel

  • hEst* is the Hermitian of the estimated channel

  • dataOut is the equalized output

  • nVar is the noise variance

  • p is equal to 0, 1, …. NSPS, where NSPS is the number of subcarriers per symbol.

This figure shows a sample block operation when you set the Equalization method parameter to ZF.

Timing diagram showing OFDM Equalizer block operation

In this figure, you can see three symbols (Symbol 1, Symbol 2, and Symbol 3) are input to the dataIn port. When the validIn input is 1 (high) and the loadHest input is 1 (high), the block samples the hEstlLen input value, which is 72 in this example. Based on the hEstlLen value, for Symbol 1, the block provides the equalized output for the instantaneous hEst input values. When the loadHest value changes to 0 (low), the block stores the hEst values and provides the equalized output for Symbol 2 based on the stored hEst values. The hEstLen value remains the same until the loadHest changes to 0 (low). Similarly, for Symbol 3, the block provides the equalized output for the instantaneous hEst values based on the hEstlLen value, which is 52 in this example.

References

[1] 3GPP TS 36.211 version 14.2.0 Release 14. "Physical channels and modulation." LTE - Evolved Universal Terrestrial Radio Access (E-UTRA).

[2] 3GPP TS 38.212. “NR; Multiplexing and Channel Coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[3] "Wireless LAN Medium Access Control (MAC) and Physical layer (PHY) Specifications." IEEE Std 802.11 – 2012.

Extended Capabilities

See Also

Blocks

Functions

Introduced in R2021a