Demodulate PSK-modulated data
Communications Toolbox / Modulation / Digital Baseband Modulation / PM
The M-PSK Demodulator Baseband block demodulates a baseband representation of a PSK-modulated signal. The modulation order, M, is equivalent to the number of points in the signal constellation and is determined by the M-ary number parameter. The block accepts scalar or column vector input signals.
Port_1— Input signal
Input port accepting a baseband representation of a PSK-modulated signal.
Port_1— Output signal
Output signal, returned as a scalar or vector. The output is a demodulated version of the PSK-modulated signal.
M-ary number— Modulation order of the PSK constellation
8(default) | scalar
Specify the modulation order as a positive integer power of two.
Output type— Output signal data type
Specify the elements of the input signal as integers or bits. If
Output type is
number of samples per frame is an integer multiple of the number of bits per
Decision type— Demodulator output
Hard decision(default) |
Approximate log-likelihood ratio
Specify the demodulator output to be hard decision, log-likelihood ratio
(LLR), or approximate LLR. The LLR and approximate LLR outputs are used with
error decoders that support soft-decision inputs such as a Viterbi
decoder, to achieve superior performance. This parameter is
available when Output type is
See Phase Modulation for algorithm
details. The output values for
ratio decision types are of the same data type as the
Noise variance source— Source of noise variance
Specify the source of the noise variance estimate. This parameter is
available when Decision type is
Log-likelihood ratio or
Approximate log-likelihood ratio.
To specify the noise variance from the dialog box, select
To input the noise variance from an input port, select
Noise variance— Estimate of noise variance
1(default) | positive scalar
Specify the estimate of the noise variance as a positive scalar. This
parameter is available when Noise variance source is
This parameter is tunable in all simulation modes. If you use the Simulink® Coder™ rapid simulation (RSIM) target to build an RSIM executable, then you can tune the parameter without recompiling the model. Avoiding recompilation is useful for Monte Carlo simulations in which you run the simulation multiple times (perhaps on multiple computers) with different amounts of noise.
The exact LLR algorithm computes exponentials using finite precision arithmetic. Computation of exponentials with very large positive or negative magnitudes might yield:
-Inf if the
noise variance is a very large value
NaN if both the noise variance and
signal power are very small values
When the output returns any of these values, try using the approximate LLR algorithm because it does not compute exponentials.
Constellation ordering— Symbol mapping
Specify how the integer or group of log2(M) bits is mapped to the corresponding symbol.
When Constellation ordering is set to
Gray, the output symbol is mapped to
the input signal using a Gray-encoded signal constellation.
When Constellation ordering is set to
Binary, the modulated symbol is exp(jϕ+j2πm/M), where ϕ is the phase offset in
radians, m is the integer output such that 0 ≤ m ≤ M – 1, and M is the modulation
When Constellation ordering is
User-defined, specify a vector of
size M, which has unique integer values in the
range [0, M–1]. The first element of this vector
corresponds to the constellation point having a value of ejϕ with subsequent elements running
[0 3 2 1]
Constellation mapping— User-defined symbol mapping
[0:7](default) | vector
Specify the order in which input integers are mapped to output integers.
The parameter is available when Constellation ordering
User-defined, and must be a row or column
vector of size M having unique integer values in the
range [0, M – 1].
The first element of this vector corresponds to the constellation point at 0 + Phase offset angle, with subsequent elements running counterclockwise. The last element corresponds to the -2π/M + Phase offset constellation point.
Phase offset (rad)— Phase offset in radians
pi/8(default) | scalar
Specify, in radians, the phase offset of the initial constellation as a real scalar.
Output data type— Output data type
Inherit via internal rule(default) |
Smallest unsigned integer|
Specify the data type of the demodulated output signal.
Diagrams for hard-decision demodulation of BPSK signals follow.
Hard-Decision BPSK Demodulator Signal Diagram for Trivial Phase Offset (multiple of π/2)
Hard-Decision BPSK Demodulator Floating-Point Signal Diagram for Nontrivial Phase Offset
Hard-Decision BPSK Demodulator Fixed-Point Signal Diagram for Nontrivial Phase Offset
Diagrams for hard-decision demodulation of QPSK signals follow.
Hard-Decision QPSK Demodulator Signal Diagram for Trivial Phase Offset (odd multiple of π/4)
Hard-Decision QPSK Demodulator Floating-Point Signal Diagram for Nontrivial Phase Offset
Hard-Decision QPSK Demodulator Fixed-Point Signal Diagram for Nontrivial Phase Offset
Diagrams for hard-decision demodulation of higher-order (M ≥ 8) signals follow.
Hard-Decision 8-PSK Demodulator Floating-Point Signal Diagram
Hard-Decision 8-PSK Demodulator Fixed-Point Signal Diagram
Hard-Decision M-PSK Demodulator (M > 8) Floating-Point Signal Diagram for Nontrivial Phase Offset
For M > 8, to improve speed and implementation costs, no derotation arithmetic is performed when Phase offset is 0, , , or (that is, when it is trivial).
Also, for M > 8, this block only supports
single input types.
The exact LLR and approximate LLR algorithms (soft-decision) are described in Phase Modulation.
This block supports HDL code generation using HDL Coder™. HDL Coder provides additional configuration options that affect HDL implementation and synthesized logic. For more information on implementations, properties, and restrictions for HDL code generation, see M-PSK Demodulator Baseband in the HDL Coder documentation.