# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

# CPM Demodulator Baseband

Demodulate CPM-modulated data

## Library

CPM, in Digital Baseband sublibrary of Modulation

## Description

The Continuous Phase Modulation (CPM) Demodulator Baseband block demodulates a signal that was modulated using continuous phase modulation. The input is a baseband representation of the modulated signal:

`$\begin{array}{l}s\left(t\right)\text{\hspace{0.17em}}=\text{\hspace{0.17em}}\mathrm{exp}\left[j\text{\hspace{0.17em}}2\pi \text{\hspace{0.17em}}\sum _{i\text{\hspace{0.17em}}=\text{\hspace{0.17em}}0}^{n}{\alpha }_{i}{h}_{i}q\left(t-iT\right)\right],\\ nT<\text{\hspace{0.17em}}t<\left(n+1\right)T\end{array}$`

See the CPM Modulator Baseband block reference page for the definition of {αi}, {hi}, and q(t).

This block accepts a scalar-valued or a column vector input signal with a data type of single or double. CPM is a modulation method with memory. The optimum receiver consists of a correlator followed by a maximum-likelihood sequence detector (MLSD) that searches the paths through the state trellis for the minimum Euclidean distance path. When the Modulation index h is rational, i.e., h = m/p, there are a finite number of phase states and the block uses the Viterbi algorithm to perform MLSD.

{hi} represents a sequence of modulation indices that moves cyclically through a set of indices {h0, h1, h2, ….,hH-1}.

• hi = mi/pi represents the modulation index in proper rational form

• mi represents the numerator of modulation index

• pi represents the denominator of modulation index

• mi and pi are relatively prime positive numbers

• The Least Common Multiple (LCM) of {p0, p1, p2, ….,pH-1} is denoted as p

• hi = m'i/p

{hi} determines the number of phase states:

`$numPhaseStates=\left\{\begin{array}{l}p,\text{\hspace{0.17em}}\text{\hspace{0.17em}}for\text{\hspace{0.17em}}\text{\hspace{0.17em}}all\text{\hspace{0.17em}}\text{\hspace{0.17em}}even\text{\hspace{0.17em}}\text{\hspace{0.17em}}m{\text{'}}_{i}\\ 2p,\text{\hspace{0.17em}}\text{\hspace{0.17em}}for\text{\hspace{0.17em}}\text{\hspace{0.17em}}any\text{\hspace{0.17em}}\text{\hspace{0.17em}}odd\text{\hspace{0.17em}}\text{\hspace{0.17em}}m{\text{'}}_{i}\end{array}\right\}$`

and affects the number of trellis states:

numStates = numPhaseStates*M(L-1)

where

• L represents the Pulse length

• M represents the M-ary number

### Integer-Valued Signals and Binary-Valued Signals

When you set the Output type parameter to `Integer`, then the block produces odd integers between -(M-1) and M-1. When you set the Output type to `Integer`, you cannot set Output datatype to `boolean`.

When you set the Output type parameter to `Bit`, then the block produces groupings of K bits. Each grouping is called a binary word. When you set the Output type to `Bit`, the Output datatype can only be `double` or `boolean`.

In binary output mode, the block first maps each input symbol to an intermediate value as in the integer output mode. Then, the block maps the odd integer k to the nonnegative integer (k+M-1)/2. Finally, the block maps each nonnegative integer to a binary word, using a mapping that depends on whether you set the Symbol set ordering parameter to `Binary` or `Gray`.

### Single-Rate Processing

In single-rate processing mode, the input and output signals have the same port sample time. The block implicitly implements the rate change by making a size change at the output when compared to the input. The input width must be an integer multiple of the Samples per symbol parameter value, and the input can be a column vector.

• When you set Output type to `Bit`, the output width is K times the number of input symbols.

• When you set Output type to `Integer`, the output width is the number of input symbols.

### Multirate Processing

In multirate processing mode, the input and output signals have different port sample times. The input must be a scalar. The output symbol time is the product of the input sample time and the Samples per symbol parameter value.

• When you set Output type to `Bit`, the output width equals the number of bits per symbol.

• When you set Output type to `Integer`, the output is a scalar.

### Traceback Depth and Output Delays

The Traceback depth parameter, D, in this block is the number of trellis branches used to construct each traceback path. D influences the output delay, which is the number of zero symbols that precede the first meaningful demodulated value in the output.

• When you set the Rate options parameter to `Allow multirate processing`, and the model uses a variable-step solver or a fixed-step solver with the Tasking Mode parameter set to `SingleTasking`, then the delay consists of D+1 zero symbols.

• When you set the Rate options parameter to `Enforce single-rate processing`, the delay consists of D zero symbols.

The optimal Traceback depth parameter value is dependent on minimum squared Euclidean distance calculations. Alternatively, a typical value, dependent on the number of states, can be chosen using the “five-times-the-constraint-length” rule, which corresponds to $5\cdot \mathrm{log}2\left(numStates\right)$.

For a binary raised cosine pulse shape with a pulse length of 3, h=2/3, this rule $\left(5*\mathrm{log}2\left(3*{2}^{2}\right)=18\right)$ gives a result close to the optimum value of 20.

## Parameters

M-ary number

The size of the alphabet.

Output type

Determines whether the output consists of integers or groups of bits.

Symbol set ordering

Determines how the block maps each integer to a group of output bits. This field applies only when you set Output type to `Bit`.

Modulation index

Specify the modulation index {hi}. The default is `0.5`. The value of this property must be a real, nonnegative scalar or column vector.

Frequency pulse shape

Specify the type of pulse shaping that the corresponding modulator uses to smooth the phase transitions of the modulated signal. You can select from the following pulse shapes:

• `Rectangular`

• `Raised Cosine`

• `Spectral Raised Cosine`

This option requires an additional parameter, Rolloff. The Rolloff parameter, which affects the spectrum of the pulse, is a scalar between zero and one.

• `Gaussian`

This option requires an additional parameter, BT product. The BT product parameter, which represents bandwidth multiplied by time, is a nonnegative scalar. It is used to reduce the bandwidth at the expense of increased intersymbol interference.

• `Tamed FM` (tamed frequency modulation)

Main lobe pulse duration (symbol intervals)

Number of symbol intervals of the largest lobe of the spectral raised cosine pulse. This field is active only when Frequency pulse shape is set to `Spectral Raised Cosine`.

Rolloff

The rolloff factor of the specified raised cosine filter. This field appears only when you set Frequency pulse shape to ```Spectral Raised Cosine```.

BT product

The product of bandwidth and time. This field appears only when Frequency pulse shape is set to `Gaussian`.

Pulse length (symbol intervals)

The length of the frequency pulse shape.

Symbol prehistory

The data symbols the modulator uses before the start of the simulation.

The initial phase of the modulated waveform.

Samples per symbol

The number of input samples that represent each modulated symbol. For more information, see Upsample Signals and Rate Changes in Communications System Toolbox™User's Guide.

Rate options

Select the rate processing method for the block.

• `Enforce single-rate processing` — When you select this option, the input and output signals have the same port sample time. The block implements the rate change by making a size change at the output when compared to the input. The output width is the number of symbols (which is given by dividing the input length by the Samples per symbol parameter value when the Output type parameter is set to `Integer`).

• `Allow multirate processing` — When you select this option, the input and output signals have different port sample times. The output period is the same as the symbol period and equals the product of the input period and the Samples per symbol parameter value.

### Note

The option ```Inherit from input (this choice will be removed - see release notes)``` will be removed in a future release. See Frame-Based Processing in the Communications System Toolbox Release Notes for more information.

Traceback depth

The number of trellis branches that the CPM Demodulator block uses to construct each traceback path.

Output datatype

The output data type can be `boolean`, `int8`, `int16`, `int32`, or `double`.

## Supported Data Types

PortSupported Data Types

Input

• Double-precision floating point

• Single-precision floating point

Output

• Double-precision floating point

• Boolean (when Output type set to `Bit`)

• 8-, 16-, and 32-bit signed integers (when Output type set to `Integer`)

## Pair Block

CPM Modulator Baseband

## References

[1] Anderson, John B., Tor Aulin, and Carl-Erik Sundberg. Digital Phase Modulation. New York: Plenum Press, 1986.