M-PSK Modulator Baseband

Modulate using M-ary phase shift keying method


PM, in Digital Baseband sublibrary of Modulation


The M-PSK Modulator Baseband block modulates using the M-ary phase shift keying method. The output is a baseband representation of the modulated signal. The M-ary number parameter, M, is the number of points in the signal constellation.

The block accepts scalar or column vector input signals. For information about the data types each block port supports, see Supported Data Types.

Alternative configurations of the block determine how the block interprets its input and arranges its output, as explained in the following sections.

Integer-Valued Signals and Binary-Valued Signals

When you set the Input type parameter to Integer, the block accepts integer values between 0 and M-1. M represents the M-ary number block parameter.

When you set the Input type parameter 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 represents the number of bits per symbol.

The input vector length must be an integer multiple of K. In this configuration, the block accepts a group of K bits and maps that group onto a symbol at the block output. The block outputs one modulated symbol for each group of K bits.

For example, the following schematics illustrate how the block processes two 8-ary integers or binary words in one time step. The block processes all input signals as frames. In both cases, the Phase offset parameter is 0.

The Constellation ordering parameter indicates how the block maps a group of K input bits to a corresponding symbol. When you set the parameter to Binary, the block maps [u(1) u(2) ... u(K)] to the integer


and behaves as if this integer were the input value. u(1) is the most significant bit.

For example, if you set M = 8, Constellation ordering to Binary, and the binary input word is [1 1 0], the block converts [1 1 0] to the integer 6. The block produces the same output when the input is 6 and the Input type parameter is Integer.

When you set Constellation ordering to Gray, the block uses a Gray-coded arrangement and assigns binary inputs to points of a predefined Gray-coded signal constellation. The predefined M-ary Gray-coded signal constellation assigns the binary representation

de2bi(bitxor(M,floor(M/2)), log2(M),'left-msb')

to the Mth phase. The zeroth phase in the constellation is the Phase offset parameter. Successive phases are in the counterclockwise direction.

    Note   This transformation seems counterintuitive because it constitutes a Gray-to-binary 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 M-1 that satisfies

m XOR m/2=U

For example, if M = 8, the binary representations that correspond to the zeroth through seventh phases are as follows.

M = 8; m = [0:M-1]';
de2bi(bitxor(m,floor(m/2)), log2(M),'left-msb')

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 8-ary Gray-coded constellation that the block uses if the Phase offset parameter is Π8.

Constellation Visualization

The M-PSK Modulator Baseband block provides the capability to visualize a signal constellation from the block mask. This Constellation Visualization feature allows you to visualize a signal constellation for specific block parameters. For more information, see the Constellation Visualization section of the Communications System Toolbox™ User's Guide.

Dialog Box

M-ary number

The number of points in the signal constellation.

Phase offset

The phase of the zeroth point of the signal constellation.

Constellation ordering

Determines how the block maps an integer or group of K input bits to the corresponding symbol.

If set to Binary, baseband M-ary phase shift keying modulation with a phase offset of θ maps an integer m between 0 and M-1 to the complex value

exp(jθ + j2πm/M)

If set to Gray, the block uses a Gray-coded signal constellation. As a result, binary representations that differ in more than one bit cannot map to consecutive integers modulo M.

Selecting User-defined displays the Constellation mapping parameter, which allows you to specify the mapping technique for the block.

Constellation mapping

This field appears when you select User-defined from the Constellation ordering drop-down list.

This parameter is a row or column vector of size M and must have unique integer values in the range [0, M-1]. 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.

Input type

Indicates whether the input consists of integers or groups of bits.

To use integer values between 0 and M-1 as inputs, set this parameter to Integer.

If this parameter is set to Bit, the M-ary number parameter must be 2K for some positive integer K. K consecutive elements in the input represent a symbol, where K = log2(M).

Output data type

This block supports the following output data types: double, single, Fixed-point, User-defined, or Inherit via back propagation.

Set this property to Fixed-point or User-defined to enable parameters in which you specify additional details. Set this property to Inherit via back propagation to match the output data type and scaling to the following block in the model.

Output word length

Specify the word length, in bits, of the fixed-point output data type. This parameter appears when you select Fixed-point for the Output data type parameter.

User-defined data type

Specify any signed built-in or signed fixed-point data type. You can specify fixed-point data types using the sfix, sint, sfrac, and fixdt functions from Fixed-Point Designer™ software. This parameter appears when you select User-defined for the Output data type parameter.

Output fraction length

Specify the scaling of the fixed-point output by either of the following methods:

  • Select Best precision to automatically scale the output signal so that it has the best possible precision.

  • Select User-defined to specify the output scaling in the Output fraction length parameter.

This parameter appears when you select Fixed-point for the Output data type parameter or when you select User-defined and the specified output data type is a fixed-point data type.

Output fraction length

For fixed-point output data types, specify the number of fractional bits, or bits to the right of the binary point. This parameter appears when you select Fixed-point or User-defined for the Output data type parameter and User-defined for the Set output fraction length to parameter.

Supported Data Types

PortSupported Data Types


  • Double-precision floating point

  • Single-precision floating point

  • Boolean when Input type is Bit

  • 8-, 16-, and 32-bit signed integers

  • 8-, 16-, and 32-bit unsigned integers

  • ufix(1) when Input type is Bit

  • ufix(log2M) when Input type is Integer


  • Double-precision floating point

  • Single-precision floating point

  • Signed Fixed point

HDL Code Generation

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

Introduced before R2006a

Was this topic helpful?