Documentation 
The MPSK Demodulator Baseband block demodulates a signal that was modulated using the Mary phase shift keying method. The input is a baseband representation of the modulated signal. The input and output for this block are discretetime signals. This block accepts a scalarvalued or column vector input signal. For information about the data types each block port supports, see Supported Data Types.
The Mary number parameter, M, is the number of points in the signal constellation.
When you set the Output type parameter to Integer, the block outputs integer values between 0 and M1. M represents the Mary number block parameter.
When you set the Output type parameter to Bit, the block outputs binaryvalued signals that represent integers. The block represents each integer using a group of K = log_{2}(M) bits, where K represents the number of bits per symbol. The output vector length must be an integer multiple of K.
Depending on the demodulation scheme, the Constellation ordering or Symbol set ordering parameter indicates how the block maps a symbol to a group of K output bits. When you set the parameter to Binary, the block maps the integer, I, to [u(1) u(2) ... u(K)] bits, where the individual u(1) are given by
$$\sum _{i=1}^{K}u(i){2}^{Ki}$$
u(1) is the most significant bit.
For example, if M = 8, Constellation ordering (or Symbol set ordering) is set to Binary, and the integer symbol value is 6, then the binary input word is [1 1 0].
When you set Constellation ordering (or Symbol set ordering) to Gray, the block assigns binary outputs from points of a predefined Graycoded signal constellation. The predefined Mary Graycoded signal constellation assigns the binary representation
de2bi(bitxor(M,floor(M/2)), log2(M),'leftmsb')
to the M^{th} phase. The zeroth phase in the constellation is the Phase offset parameter, and successive phases are counted in a counterclockwise direction.
Note This transformation might seem counterintuitive because it constitutes a Graytobinary mapping. However, the block must use it to impose a Gray ordering on the signal constellation, which has a natural binary ordering. 
In other words, if the block input is the natural binary representation, u, of the integer U, the block output has phase
jθ + j2πm/M
where θ is the Phase offset parameter and m is an integer between 0 and M1 that satisfies
$$m\text{XOR}\lfloor m/2\rfloor =U$$
For example, if M = 8, the binary representations that correspond to the zeroth through seventh phases are as follows.
M = 8; m = [0:M1]'; de2bi(bitxor(m,floor(m/2)), log2(M),'leftmsb') ans = 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0
The following diagram shows the 8ary Graycoded constellation that the block uses if the Phase offset parameter is $$\frac{\Pi}{8}$$.
.
For M=2, refer to the BPSK Demodulator Baseband block reference page.
For M=4, refer to the QPSK Demodulator Baseband block reference page.
For M=8 and greater, see the following signal diagrams.
HardDecision 8PSK Demodulator FloatingPoint Signal Diagram
HardDecision 8PSK Demodulator FixedPoint Signal Diagram
HardDecision MPSK Demodulator (M > 8) FloatingPoint Signal Diagram for Nontrivial Phase Offset
For M > 8, in order to improve speed and implementation costs, no derotation arithmetic is performed when Phase offset is 0, $$\pi /2$$, $$\pi $$, or $$3\pi /2$$ (i.e., when it is trivial).
Also, for M > 8, this block will only support inputs of type double and single.
The exact LLR and approximate LLR cases (softdecision) are described in Exact LLR Algorithm and Approximate LLR Algorithm in the Communications System Toolbox User's Guide.
The number of points in the signal constellation.
The phase of the zeroth point of the signal constellation.
Determines how the block maps a symbol to the corresponding K output bits or integer. See the reference page for the MPSK Modulator Baseband block for details. Selecting Userdefined displays the field Constellation mapping, allowing for userspecified mapping.
This field appears when Userdefined is selected in the dropdown list Constellation ordering.
This parameter is a row or column vector of size M and must have unique integer values in the range [0, M1]. The values must be of data type double.
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.
Determines whether the output consists of integers or groups of bits. If this parameter is set to Bit, the Mary number parameter must be 2^{K} for some positive integer K.
Specifies the output to be bitwise hard decision, LLR, or approximate LLR. This parameter appears when you select Bit from the Output type dropdown list. The output values for Loglikelihood ratio and Approximate loglikelihood ratio decision types are of the same data type as the input values
See Exact LLR Algorithm and Approximate LLR Algorithm in the Communications System Toolbox User's Guide for algorithm details.
This field appears when Approximate loglikelihood ratio or Loglikelihood ratio is selected for Decision type.
When set to Dialog, the noise variance can be specified in the Noise variance field. When set to Port, a port appears on the block through which the noise variance can be input.
This parameter appears when the Noise variance source is set to Dialog and specifies the noise variance in the input signal. This parameter is tunable in normal mode, Accelerator mode and Rapid Accelerator mode.
If you use theSimulink^{®} Coder™ rapid simulation (RSIM) target to build an RSIM executable, then you can tune the parameter without recompiling the model. This is useful for Monte Carlo simulations in which you run the simulation multiple times (perhaps on multiple computers) with different amounts of noise.
The LLR algorithm involves computing exponentials of very large or very small numbers using finite precision arithmetic and would yield:
Inf to Inf if Noise variance is very high
NaN if Noise variance and signal power are both very small
In such cases, use approximate LLR, as its algorithm does not involve computing exponentials.
Data Types Pane for HardDecision
For bit outputs, when Decision type is set to Hard decision, the output data type can be set to 'Inherit via internal rule', 'Smallest unsigned integer', double, single, int8, uint8, int16, uint16, int32, uint32, or boolean.
For integer outputs, the output data type can be set to 'Inherit via internal rule', 'Smallest unsigned integer', double, single, int8, uint8, int16, uint16, int32, or uint32.
When this parameter is set to 'Inherit via internal rule' (default setting), the block will inherit the output data type from the input port. The output data type will be the same as the input data type if the input is a floatingpoint type (single or double). If the input data type is fixedpoint (supported only when Mary number is 2, 4, or 8), the output data type will work as if this parameter is set to 'Smallest unsigned integer'.
When this parameter is set to 'Smallest unsigned integer', the output data type is selected based on the settings used in the Hardware Implementation pane of the Configuration Parameters dialog box of the model.
If ASIC/FPGA is selected in the Hardware Implementation pane, and Output type is Bit, the output data type is the ideal minimum onebit size, i.e., ufix(1). For all other selections, it is an unsigned integer with the smallest available word length large enough to fit one bit, usually corresponding to the size of a char (e.g., uint8).
If ASIC/FPGA is selected in the Hardware Implementation pane, and Output type is Integer, the output data type is the ideal minimum integer size, i.e., ufix(ceil(log2(M))). For all other selections, it is an unsigned integer with the smallest available word length large enough to fit the ideal minimum size, usually corresponding to the size of a char (e.g., uint8).
This parameter only applies when Mary number is 2, 4, or 8, the input is fixedpoint, and Phase offset is nontrivial. The phase offset is trivial when:
You set Mary number to 2 and Phase offset to a multiple of $$\frac{\pi}{2}$$
You set Mary number to 4 and Phase offset to an even multiple of $$\frac{\pi}{4}$$
When you set Mary number to 8 there are no trivial phase offsets.
Data Types Pane for SoftDecision
For bit outputs, when Decision type is set to Loglikelihood ratio or Approximate loglikelihood ratio, the output data type is inherited from the input (e.g., if the input is of data type double, the output is also of data type double).
Port  Supported Data Types 

Input 

Var 

Output 

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 MPSK Demodulator Baseband in the HDL Coder documentation.