Main Content

GMSK Modulator

Modulate data bits using Gaussian minimum shift keying (GMSK) method

Since R2024a

  • GMSK Modulator block

Libraries:
Wireless HDL Toolbox / Modulation

Description

The GMSK Modulator block modulates data bits using the Gaussian minimum shift keying (GMSK) method. The block supports scalar inputs and outputs modulated complex-valued scalar or column-vector data symbols along with valid and ready controls signals. The block enables you to use your bandwidth more effectively and helps reduce the problems caused by multipath fading and signal distortion.

You can use this block in applications such as global system for mobile communications (GSM), satellite communications, Bluetooth, military communications, tactical radios, drone control/command and missile communications. The block provides an interface and architecture suitable for HDL code generation and hardware deployment.

Examples

Ports

Input

expand all

Data bits, specified as a Boolean scalar or ufix1.

The block supports double and single data types for simulation, but not for HDL code generation.

For HDL code generation, the input data type must be ufix1 or Boolean and the maximum output word length the block supports is 16 bits.

Data Types: single | double | Boolean | fixdt(0,1,0)

Indicates valid input data, specified as a Boolean scalar.

This port is a control signal that indicates when the sample from the data input port is valid. When this value is 1, the block captures the values on the data input port. When this value is 0, the block ignores the values on the data input port.

Data Types: Boolean

Clear internal states, specified as a Boolean scalar. When this value is 1, the block stops the current calculation and clears all internal states.

Dependencies

To enable this port, select the Enable reset input port parameter.

Data Types: Boolean

Output

expand all

Modulated complex output data symbols, returned as a complex-valued scalar or column vector.

  • When you set the Output type parameter to Vector, the output is a vector of number of samples per symbol.

  • When you set the Output type parameter to Scalar, the output is a scalar.

Data Types: single | double | signed fixed point
Complex Number Support: Yes

Indicates valid output data, returned as a scalar.

This port is a control signal that indicates when the data output port is valid. The block sets this value to 1 when the data samples are available on the data output port.

Data Types: Boolean

Indicates block is ready, returned as a scalar.

This is a control signal that indicates when the block is ready for new input data. When this value is 1, the block accepts input data in the next time step. When this value is 0, the block ignores input data in the next time step.

Dependencies

To enable this port, set the Output type parameter to Scalar.

Data Types: Boolean

Parameters

expand all

Main

Product of the signal bandwidth and symbol time for the Gaussian pulse shape, specified as a positive scalar value.

Pulse length, specified as a positive integer. The pulse length value represents the length of the Gaussian pulse shape in symbol intervals.

Symbol prehistory, specified as a scalar or vector of –1s or 1s that the block uses before the start of the simulation.

  • For a scalar value, the block expands it to a vector of length L – 1, where L represents the pulse length. You can specify the L value using the Pulse length parameter.

    For example, if you specify a scalar value -1 and if the Pulse length parameter is set to 4, the block expands this value as [-1 -1 -1].

  • For a vector value, the block considers the elements in the vector in a reverse chronological order. The vector length must be L – 1.

    For example, if you specify a vector value [-1 1 1] and if the Pulse length parameter is set to 4, the block considers this value as [1 1 -1].

Phase offset of the modulated waveform in radians, specified as a numeric scalar in the range from –2*π to 2*π.

Number of samples per symbol, specified as a positive integer in the range 1 to 64. The number of samples per symbol represents the upsampling factor from input samples to output samples.

Number of data points to retrieve from the look-up table (LUT), specified as a positive integer and a power of 2. The maximum value the block supports is 65,536.

Specify the output type as Vector or Scalar.

Data Type

Output word length, specified as a positive scalar with word length less than 16.

Control Port

Select this parameter to enable the reset input port.

Algorithms

expand all

The Bandwidth time product parameter represents bandwidth multiplied by time. This parameter reduces the bandwidth at the expense of increased intersymbol interference. The Pulse length parameter measures the length of the Gaussian pulse shape, in symbol intervals. Bb represents the bandwidth of the pulse and T is the symbol durations. Q(t) is the complementary cumulative distribution function.

g(t)=12T{Q[2πBbtT2ln(2)]Q[2πBbt+T2ln(2)]}Q(t)=t12πeτ2/2dτ

The block generates the filter coefficients using these equations based on the parameters you select in the block mask of the example. The choice of Bandwidth time product parameter decides the performance of the modulator as the bit error rate can be expressed as a function of BT. For this block, an input symbol of 1 causes a phase shift of π/2 radians, which corresponds to a modulation index of 0.5.

References

[1] Anderson, John B., Tor Aulin, and Carl-Erik Sundberg. Digital Phase Modulation. New York: Plenum Press, 1986.

Extended Capabilities

Version History

Introduced in R2024a