Last Modified: January 9, 2017

Demodulates a CPM-modulated complex baseband waveform and returns the demodulated information bit stream. This node attempts to remove carrier and phase offset by locking to the carrier signal.

The modulated complex baseband waveform data.

Trigger (start) time of the **Y** array.

**Default: **0.0

Time interval between data points in the **Y** array.

**Default: **1.0

The complex-valued signal-only baseband modulated waveform. The real and imaginary parts of this complex data array correspond to the in-phase (I) and quadrature-phase (Q) data, respectively.

Parameter values defining the CPM system. Wire the **CPM system parameters** cluster of MT Generate CPM System Parameters (M) or MT Generate CPM System Parameters (map) to this cluster. Do not alter the values.

A two-dimensional array of desired frequency deviations. Each column corresponds to a symbol, with the binary representation of the column index being the mapped bit-representation of the symbol. Each row corresponds to a modulation index in the order in which it appears in the **modulation index, h(i)** parameter of MT Generate CPM System Parameters (M) or MT Generate CPM System Parameters (map).

**Default: **Empty array

Parameter values describing the synchronization sequence and the range of bits over which to search for the sequence. Wire the **CPM synchronization parameters** cluster returned by MT Generate CPM Synchronization Parameters (bit array) or MT Generate CPM Synchronization Parameters (number array) to this cluster.

The expected location of the first symbol of the **sync sequence**.

This value is an index to the **input complex waveform**. A value of -1 searches the entire **input complex waveform** and ignores the **sync location uncertainty** parameter.

The mapped symbol pattern. Although the data type is complex, only the real portion is used.

The real portion of the mapped symbols is the frequency deviation of the symbol value, and the imaginary portion is 0. To prevent false synchronization, configure this pattern so that there is a low probability of accidental correlation to nonsynchronized parts of the data stream. If this parameter is left empty, the signal is still demodulated.

Number of symbols before or after the **expected sync location** where the first symbol of the **sync sequence** may be located. The node ignores this parameter if the **expected sync location** parameter is set to -1.

**Default: **10

Distance that the **sync sequence** is indented into the information block.

The distance is the number of demodulated symbols preceding the **sync sequence**. For example, a value of 10 indicates that the **output bit stream** consists of 10 data symbols, followed by the **sync sequence**, followed by the remaining data symbols.

**Default: **0

Error conditions that occur before this node runs. The node responds to this input according to standard error behavior.

**Default: **no error

An ordered array containing the desired matched filter coefficients. Wire the **matched filter coefficients** parameter of MT Generate Filter Coefficients to this parameter. When generating the filter coefficients, ensure that the value of the **matched samples per symbol** parameter of MT Generate Filter Coefficients is equal to the value of the **samples per symbol** element of the **CPM system parameters** cluster that is passed to this node.

Dependency on reset? Input

When **reset?** is set to TRUE, there is a transient response of half the filter length at the start of the demodulated signal, and the returned data is shortened by approximately half the filter length. When **reset?** is set to FALSE, the VI uses data from the previous iteration to prime the filter, hence eliminating the transient.

When **reset?** is set to TRUE, the number of trailing symbols that are carried over to the next iteration during demodulation is upper bounded by [*L/2* + *P/2* + 4(13 + *K*)]/*K* , where *L* is the matched filter length in taps, *P* is the pulse-shaping filter length in taps, and *K* is the number of samples per symbol. For typical values of *L* = 57, *P* = 25, and *K* = 4, this value equals 27.25 symbols. Therefore when **reset?** is set to TRUE, a total of 1,028 CPM symbols must be passed to the demodulator to obtain at least 1,000 symbols at the output. This formula does not account for truncation due to any specified **synchronization parameters.**

An ordered array containing the desired pulse-shaping coefficients. This parameter is used internally to reproduce the ideal waveform for making measurements. Wire the **pulse shaping filter coefficients** parameter of MT Generate Filter Coefficients to this parameter. When generating the filter coefficients, ensure that the value of the **pulse shaping samples per symbol** parameter of MT Generate Filter Coefficients is equal to the value of the **samples per symbol** element of the **CPM system parameters** cluster.

A Boolean that determines whether to flush samples from the **input complex waveform** that are delayed due to the FIR filters used in the demodulation algorithm. Set this parameter to TRUE during single-shot operations and during the last iteration of continuous operations.

TRUE | Destroys the internal states of the algorithms such that you cannot perform continuous processing on the signal during subsequent iterations. If flush buffers? is set to TRUE, you must set reset? to TRUE on the subsequent iteration. |

FALSE | Stores the internal states of the algorithms so that you can perform continuous processing on the signal during subsequent iterations. |

**Default: **FALSE

Symbol index within the **input complex waveform** where the peak correlation to the **sync sequence** was found. If no **sync sequence** is specified in the **synchronization parameters** cluster, the **sync found index** parameter returns the offset from the start of the **input complex waveform** to the first complete symbol.

NI recommends using some form of pulse shaping on continuous-phase FSK- and CPM-modulated signals to optimize demodulator performance. Demodulator performance under these conditions can also be improved by increasing the number of samples per symbol, but you can achieve better performance by using some form of pulse shaping.

**Where This Node Can Run: **

Desktop OS: Windows

FPGA: Not supported