Modulate using continuous phase modulation
Communications Toolbox / Modulation / Digital Baseband Modulation / CPM
The CPM Modulator Baseband block modulates an input signal using continuous phase modulation (CPM). The output of the modulator is a baseband representation of the modulated signal:
where:
{αi} represents a sequence of M-ary data symbols selected from the alphabet ±1, ±3, ±(M–1).
M must have the form 2K for some positive integer K, where M is the modulation order and specifies the size of the symbol alphabet.
{hi} represents a sequence of modulation indices and hi moves cyclically through a set of indices {h0, h1, h2, ..., hH-1}. When H=1, there is only one modulation index, h0, which is denoted as h.
For more information about this modulation and the filtering applied, see CPM Modulation and Pulse Shape Filtering.
In
— Input signalInput signal, specified as a scalar or column vector.
When the Input type parameter is set to
Integer
, the block accepts odd integers
between –(M–1) and M–1.
M represents the M-ary
number parameter.
When the Input type parameter is set to Bit
,
the block accepts binary-valued inputs that represent integers. The block collects
binary-valued signals into groups of K =
log2(M) bits. K
is the number of bits per symbol and M is the modulation order.
The input vector length must be an integer multiple of K. The
block maps each group of K bits onto a symbol, as specified by
the Symbol set ordering parameter. For each group of
K bits, the block outputs one modulated symbol,
oversampled by the Samples per symbol parameter value.
Double-precision floating point
Boolean (when Input type is set to
Bit
)
8-, 16-, and 32-bit signed integers (when Input
type is set to
Integer
)
Data Types: double
| Boolean
| int8
| int16
| int32
Out
— Output signalOutput signal, returned as a scalar or column vector.
When the Input type parameter is set
to Integer
, the block outputs one
modulated symbol for each input symbol.
When the Input type parameter is set
to Bit
, the block outputs one
modulated symbol for each group of K
bits.
In both cases, the modulated symbols are oversampled by the Samples per symbol parameter value.
Data Types: double
| single
For more information on the processing rates, see Single-Rate Processing, and Multirate Processing.
M-ary number
— Modulation order4
(default) | positive integerModulation order indicating the alphabet size, specified as a positive integer that is a nonzero power of two. M must have the form 2K for some positive integer K, where K is the number of bits per symbol.
Input type
— Integer or group of bits input indicatorInteger
(default) | Bit
Indicates whether the input consists of integers or groups of bits,
specified as Integer
or
Bit
.
Symbol set ordering
— Bit mappingBinary
(default) | Gray
Bit mapping, specified as Binary
or
Gray
. For more information, see Symbol Sets.
To enable this parameter, set Input type to
Bit
.
Modulation index
— Modulation index {hi}0.5
(default) | nonnegative scalar | column vector Modulation index {hi}, specified as a nonnegative scalar or column vector.
{h} represents a sequence of modulation indices. For more information, see CPM Modulation.
Frequency pulse shape
— Type of pulse shapingRectangular
(default) | Raised Cosine
| Spectral Raised Cosine
| Gaussian
| Tamed FM
Type of pulse shaping used to smooth the phase transitions of the
modulated signal, specified as Rectangular
,
Raised Cosine
, Spectral Raised
Cosine
, Gaussian
, or
Tamed FM
. For more information on the
filtering options, see Pulse Shape Filtering.
Main lobe pulse duration (symbol intervals)
— Number of symbol intervals of largest lobe of spectral raised cosine pulse1
(default) | positive scalarNumber of symbol intervals of the largest lobe of the spectral raised cosine pulse, specified as a positive scalar.
To enable this parameter, set Frequency pulse
shape to Spectral Raised
Cosine
.
Rolloff
— Rolloff factor of spectral raised cosine pulse shape0.2
(default) | nonnegative scalarRolloff factor of the spectral raised cosine pulse, specified as a scalar from 0 to 1.
To enable this parameter, set Frequency pulse
shape to Spectral Raised
Cosine
.
BT product
— Product of bandwidth and time0.3
(default) | nonnegative scalarProduct of bandwidth and time, specified as a nonnegative scalar. Use BT product to reduce the bandwidth, at the expense of increased intersymbol interference.
To enable this parameter, set Frequency pulse
shape to Gaussian
.
Pulse length (symbol intervals)
— Frequency pulse length1
(default) | positive scalarFrequency pulse length, specified as a positive scalar. Refer to LT in Pulse Shape Filtering for more information on the frequency pulse length.
Symbol prehistory
— Data symbols used before the start of simulation1
(default) | scalar | vectorData symbols used before the start of simulation, specified as a scalar or vector in reverse chronological order. If Symbol prehistory is a vector, then its length must be one less than the Pulse length (symbol intervals) parameter value.
Phase offset (rad)
— Initial phase offset0
(default) | scalarInitial phase offset of output in radians, specified as a scalar.
Samples per symbol
— Symbol sampling rate8
(default) | positive scalarSymbol sampling rate, specified as a positive scalar. This parameter represents the number of samples output for each integer or binary word input. For all nonbinary schemes, as defined by the pulse shapes, this value must be greater than 1.
For more information, see Upsample Signals and Rate Changes.
Rate options
— Block processing rateEnforce single-rate processing
(default) | Allow multirate processing
Block processing rate, specified as one of these options:
Enforce single-rate processing
— The input and
output signals have the same sample time. The block implements the rate
change by making a size change at the output when compared to the input. The
output width equals the product of the number of symbols and the
Samples per symbol parameter value.
Allow multirate processing
— The input and
output signals have different sample times. The output sample time equals
the symbol period divided by the Samples per symbol
parameter value.
Output data type
— Output data typedouble
(default) | single
Output data type, specified as double
or
single
.
Data Types |
|
Multidimensional Signals |
|
Variable-Size Signals |
|
The output of the modulator is a baseband representation of the modulated signal:
where:
{αi} represents a sequence of M-ary data symbols selected from the alphabet ±1, ±3, ±(M–1).
M must have the form 2K for some positive integer K, where M is the modulation order and specifies the size of the symbol alphabet.
{hi} represents a sequence of modulation indices and hi moves cyclically through a set of indices {h0, h1, h2, ..., hH-1}. When H=1, there is only one modulation index, h0, which is denoted as h.
hi specifies the modulation index. When hi varies from interval to interval, the block operates in multi-h. To ensure a finite number of phase states, hi must be a rational number.
Continuous phase modulation uses pulse shaping to smooth the phase transitions of the modulated signal. The function q(t) is the phase response obtained from the frequency pulse, g(t), through this relation:
The specified frequency pulse shape corresponds to these pulse shape expressions, g(t).
Pulse Shape | Expression |
---|---|
Rectangular | |
Raised Cosine | |
Spectral Raised Cosine | ![]() |
Gaussian | |
Tamed FM (tamed frequency modulation) |
Lmain is the main lobe pulse duration in symbol intervals.
β is the rolloff factor of the spectral raised cosine.
Bbis the product of the bandwidth and the Gaussian pulse.
The duration of the pulse, LT, is the pulse length in symbol intervals. As defined by the expressions, the Spectral Raised Cosine
, Gaussian
, and Tamed FM
pulse shapes have infinite length. For all practical purposes, LT specifies the truncated finite length.
For more information on pulse shape filtering, see [1].
In binary input mode, the block processing follows this procedure:
Maps each binary word to k, an integer from 0 to
M–1. The binary word mapping options are
Binary
or
Gray
, as specified by the Symbol
set ordering parameter.
Maps k to the intermediate value 2k–(M–1)
Proceeds with block processing as in the integer input mode.
In single-rate processing mode, the input and output signals have the same port sample time. In this mode, the input to the block can be multiple symbols. The block implicitly implements the rate change by making a size change at the output when compared to the input.
When you set Input type to
Integer
, the input can be a scalar or a
column vector with the length equal to the number of input symbols.
When you set Input type to
Bit
, the input width must be an integer
multiple of the number of bits per symbol.
The output width equals NSym × NSPS, where NSym is the number of symbols in the frame and NSPS is the number of samples per symbol.
In multirate processing mode, the input and output signals have different port sample times. In this mode, the input to the block must be one symbol.
When you set Input type to
Integer
, the input must be a scalar.
When you set Input type to
Bit
, the input width must equal the number of
bits per symbol.
The output sample time equals TSym / NSPS, where TSym is the symbol period and NSPS is the number of samples per symbol.
CPM Demodulator Baseband — Demodulates continuous phase modulated data.
[1] Anderson, John B., Tor Aulin, and Carl-Erik Sundberg. Digital Phase Modulation. New York: Plenum Press, 1986.