Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Equalize using Viterbi algorithm

Equalizer Block

The MLSE Equalizer block uses the Viterbi algorithm to equalize a linearly modulated signal through a dispersive channel. The block processes input frames and outputs the maximum likelihood sequence estimate (MLSE) of the signal, using an estimate of the channel modeled as a finite input response (FIR) filter.

This block supports `single`

and `double`

data
types.

The channel estimate takes the form of a column vector containing
the coefficients of an FIR filter in descending order of powers. The
length of this vector is the channel memory, which must be a multiple
of the block's **Samples per input symbol** parameter.

To specify the channel estimate vector, use one of these methods:

Set

**Specify channel via**to`Dialog`

and enter the vector in the**Channel coefficients**field.Set

**Specify channel via**to`Input port`

and the block displays an additional input port, labeled`Ch`

, which accepts a column vector input signal.

The **Signal constellation** parameter specifies
the constellation for the modulated signal, as determined by the modulator
in your model. **Signal constellation** is a vector
of complex numbers, where the kth complex number in the vector is
the constellation point to which the modulator maps the integer k-1.

The sequence of constellation points must be consistent between
the modulator in your model and the **Signal constellation** parameter
in this block.

For example, to specify the constellation given by the mapping

$$\begin{array}{l}0\to +1+i\hfill \\ 1\to -1+i\hfill \\ 2\to -1-i\hfill \\ 3\to +1-i\hfill \end{array}$$

set **Constellation points** to ```
[1+i,
-1+i, -1-i, 1-i]
```

. Note that the sequence of numbers in the
vector indicates how the modulator maps integers to the set of constellation
points. The labeled constellation is shown below.

If your data is accompanied by a preamble (prefix) or postamble (suffix), then configure the block accordingly:

If you select

**Input contains preamble**, then the**Expected preamble**parameter specifies the preamble that you expect to precede the data in the input signal.If you check the

**Input contains postamble**, then the**Expected postamble**parameter specifies the postamble that you expect to follow the data in the input signal.

The **Expected preamble** or **Expected
postamble** parameter must be a vector of integers between
0 and M-1, where M is the number of constellation points. An integer
value of k-1 in the vector corresponds to the kth entry in the **Constellation
points** vector and, consequently, to a modulator input of
k-1.

The preamble or postamble must already be included at the beginning
or end, respectively, of the input signal to this block. If necessary,
you can concatenate vectors in Simulink^{®} software using the Matrix
Concatenation block.

To learn how the block uses the preamble and postamble, see "Reset Every Frame" Operation Mode below.

One way that the Viterbi algorithm can transition between successive
frames is called `Reset every frame`

mode.
You can choose this mode using the **Operation mode** parameter.

In `Reset every frame`

mode, the block
decodes each frame of data independently, resetting the state metric
at the end of each frame. The traceback decoding always starts at
the state with the minimum state metric.

The initialization of state metrics depends on whether you specify a preamble and/or postamble:

If you do not specify a preamble, the decoder initializes the metrics of all states to 0 at the beginning of each frame of data.

If you specify a preamble, the block uses it to initialize the state metrics at the beginning of each frame of data. More specifically, the block decodes the preamble and assigns a metric of 0 to the decoded state. If the preamble does not decode to a unique state -- that is, if the length of the preamble is less than the channel memory -- the decoder assigns a metric of 0 to all states that can be represented by the preamble. Whenever you specify a preamble, the traceback path ends at one of the states represented by the preamble.

If you do not specify a postamble, the traceback path starts at the state with the smallest metric.

If you specify a postamble, the traceback path begins at the state represented by the postamble. If the postamble does not decode to a unique state, the decoder identifies the smallest of all possible decoded states that are represented by the postamble and begins traceback decoding at that state.

### Note

In

`Reset every frame`

mode, the input to the MLSE Equalizer block must contain at least T symbols, not including an optional preamble, where T is the**Traceback depth**parameter.

An alternative way that the Viterbi algorithm can transition
between successive frames is called ```
Continuous with reset
option
```

mode. You can choose this mode using the **Operation
mode** parameter.

In `Continuous with reset option`

mode,
the block initializes the metrics of all states to 0 at the beginning
of the simulation. At the end of each frame, the block saves the internal
state metric for use in computing the traceback paths in the next
frame.

If you select **Enable the reset input port**,
the block displays another input port, labeled `Rst`

.
In this case, the block resets the state metrics whenever the scalar
value at the `Rst`

port is nonzero.

The MLSE Equalizer block introduces an output delay equal to
the **Traceback depth** in the ```
Continuous
with reset option
```

mode, and no delay in the ```
Reset
every frame
```

mode.

**Specify channel via**The method for specifying the channel estimate. If you select

`Input port`

, the block displays a second input port that receives the channel estimate. If you select`Dialog`

, you can specify the channel estimate as a vector of coefficients for an FIR filter in the**Channel coefficients**field.**Channel coefficients**Vector containing the coefficients of the FIR filter that the block uses for the channel estimate. This field is visible only if you set

**Specify channel via**to`Dialog`

.**Signal constellation**Vector of complex numbers that specifies the constellation for the modulation.

**Traceback depth**The number of trellis branches (equivalently, the number of symbols) the block uses in the Viterbi algorithm to construct each traceback path.

**Operation mode**The operation mode of the Viterbi decoder. Choices are

`Continuous with reset option`

and`Reset every frame`

.**Input contains preamble**When checked, you can set the preamble in the

**Expected preamble**field. This option appears only if you set**Operation mode**to`Reset every frame`

.**Expected preamble**Vector of integers between 0 and M-1 representing the preamble, where M is the size of the constellation. This field is visible and active only if you set

**Operation mode**to`Reset every frame`

and then select**Input contains preamble**.**Input contains postamble**When checked, you can set the postamble in the

**Expected postamble**field. This option appears only if you set**Operation mode**to`Reset every frame`

.**Expected postamble**Vector of integers between 0 and M-1 representing the postamble, where M is the size of the constellation. This field is visible and active only if you set

**Operation mode**to`Reset every frame`

and then select**Input contains postamble**.**Samples per input symbol**The number of input samples for each constellation point.

**Enable the reset input port**When you check this box, the block has a second input port labeled

`Rst`

. Providing a nonzero input value to this port causes the block to set its internal memory to the initial state before processing the input data. This option appears only if you set**Operation mode**to`Continuous with reset option`

.

This example shows how to equalize the effects of a Multipath Rayleigh Fading Channel block. Maximum Likelihood Sequence Estimation (MLSE) estimates the data the model transmits through a time varying dispersive channel with the least possible number of errors. This model inputs the dynamically evolving channel coefficients of a two-path channel to the MLSE Equalizer block. The model shows the MLSE block being used in a typical multipath wireless Rayleigh channel. It applies the same channel estimate to 50 samples in the frame that is processed by the MLSE Equalizer. This is similar to a practical system, where the training sequence is transmitted in regular intervals and a channel estimate is used until the next training symbol is transmitted.

To open the
example, type `doc_mlse_dynamic_coeffs`

at the MATLAB^{®} command
line.

The sample time of the Bernoulli Binary Generator block is set to 5e-6, which corresponds to a bit rate of 200 kbps, and a QPSK symbol rate of 100 ksym/sec.

The Multipath Rayleigh Fading Channel block has a

**Maximum Doppler shift**of 30 Hz, which is a realistic physical value. The Delay vector of the MRFC block is [0 1e-5], which corresponds to two consecutive sample times of the input QPSK symbol data. This reflects the simplest delay vector for a two-path channel. The**Average path gain vector**is set arbitrarily to [0 -10]. The gain vector is normalized to 0 dB, so that the average power input to the AWGN block is 1 W.The MLSE Equalizer block has the

**Traceback depth**set to 10 and may be varied to study its effect on Bit Error rate (BER).The QPSK Demodulator accepts an N-by-1 input frame and generates a 2N-by-1 output frame. This, along with the traceback depth of 10 results in a delay of 20 bits. The model performs frame-based processing with 100 samples per frame. Thus, there is a delay of 100 bits inherent in the model. The combined receive delay of 120 is set in the

**Receive delay**parameter of the Error Rate Calculation block, aligning the samples.

The sample time of the Bernoulli Binary Generator block is set to 5e-6, which corresponds to a bit rate of 200 kbps, and a QPSK symbol rate of 100 ksym/sec. Multipath Rayleigh Fading Channel (MRFC) block: The MRFC block has a max Doppler shift of 30 Hz, which is a realistic physical value. The Delay vector of the MRFC block is [0 1e-5], which corresponds to two consecutive sample times of the input QPSK symbol data. This reflects the simplest delay vector for a two-path channel. The Gain vector of the MRFC block is set arbitrarily to [0 -10]. The gain vector is normalized to 0 dB, so that the average power input to the AWGN block is 1 W.

LMS Linear Equalizer, LMS Decision Feedback Equalizer, RLS Linear Equalizer, RLS Decision Feedback Equalizer, CMA Equalizer

[1] Proakis, John G., *Digital Communications*,
Fourth edition, New York, McGraw-Hill, 2001.

[2] Steele, Raymond, Ed., *Mobile
Radio Communications*, Chichester, England, Wiley, 1996.

Was this topic helpful?