comm.CPFSKModulator System object

Package: comm

Modulate using CPFSK method

Description

The CPFSKModulator object modulates using the continuous phase frequency shift keying method. The output is a baseband representation of the modulated signal.

To modulate a signal using the continuous phase frequency shift keying method:

  1. Define and set up your CPFSK modulator object. See Construction.

  2. Call step to modulate the signal according to the properties of comm.CPFSKModulator. The behavior of step is specific to each object in the toolbox.

Construction

H = comm.CPFSKModulator creates a modulator System object™, H. This object modulates the input signal using the continuous phase frequency shift keying (CPFSK) modulation method.

H = comm.CPFSKModulator(Name,Value) creates a CPFSK modulator object, H, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

H = comm.CPFSKModulator(M,Name,Value) creates a CPFSK modulator object, H. This object has the ModulationOrder property set to M, and the other specified properties set to the specified values.

Properties

ModulationOrder

Size of symbol alphabet

Specify the size of the symbol alphabet. The value of this property requires a power of two, real, integer scalar. The default is 4.

BitInput

Assume bit inputs

Specify whether the input is bits or integers. The default is false. When you set this property to false, the step method input must be a double-precision or signed integer data type column vector. This vector comprises odd integer values between –(ModulationOrder–1) and ModulationOrder–1.

When you set this property to true, the step method input must be a column vector of P-length bit words, where P = log2(ModulationOrder). The input data must have a doubleprecision or logical data type. The object maps each bit word to an integer K between 0 and ModulationOrder–1, using the mapping specified in the SymbolMapping property. The object then maps the integer K to the intermediate value 2K–(ModulationOrder–1) and proceeds as in the case when you set the BitInput property to false.

SymbolMapping

Symbol encoding

Specify the mapping of bit inputs as one of Binary | Gray. The default is Binary. This property determines how the object maps each input P-length bit word, where P = log2(ModulationOrder), to an integer between 0 and ModulationOrder–1.

When you set this property to Binary, the object uses a natural binary-coded ordering.

When you set this property to Gray, the object uses a Gray-coded ordering.

This property applies when you set the BitInput property to true.

ModulationIndex

Modulation index

Specify the modulation index. The default is 0.5. The value of this property can be a scalar, h, or a column vector, [h0, h1, …. hH-1]

where H-1 represents the length of the column vector.

When hi varies from interval to interval, the object operates in multi-h. When the object operates in multi-h, hi must be a rational number.

InitialPhaseOffset

Initial phase offset

Specify the initial phase of the modulated waveform in radians as a real, numeric scalar. The default is 0.

SamplesPerSymbol

Number of samples per output symbol

Specify the upsampling factor at the output as a real, positive, integer scalar. The default is 8. The upsampling factor is the number of output samples that the step method produces for each input sample.

OutputDataType

Data type of output

Specify output data type as one of double | single. The default is double.

Methods

cloneCreate CPFSK modulator object with same property values
getNumInputsNumber of expected inputs to step method
getNumOutputsNumber of outputs from step method
isLockedLocked status for input attributes and nontunable properties
releaseAllow property value and input characteristics changes
resetReset states of CPFSK modulator object
stepModulate using CPFSK method

Examples

expand all

Demodulate a signal using CPFSK modulation with Gray mapping

% Create a CPFSK modulator, an AWGN channel, and a CPFSK demodulator
    hMod = comm.CPFSKModulator(8, 'BitInput', true, ...
                         'SymbolMapping', 'Gray');
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                         'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.CPFSKDemodulator(8, 'BitOutput', true, ...
                         'SymbolMapping', 'Gray');

 % Create an error rate calculator, account for the delay caused by the Viterbi algorithm.
    delay = log2(hDemod.ModulationOrder)*hDemod.TracebackDepth;
    hError = comm.ErrorRate('ReceiveDelay', delay);
    for counter = 1:100
        % Transmit 100 3-bit words
        data = randi([0 1],300,1);
        modSignal = step(hMod, data);
        noisySignal = step(hAWGN, modSignal);
        receivedData = step(hDemod, noisySignal);
        errorStats = step(hError, data, receivedData);
    end

    fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
Error rate = 0.004006
Number of errors = 120

Algorithms

This object implements the algorithm, inputs, and outputs described on the CPFSK Modulator Baseband block reference page. The object properties correspond to the block parameters.

Was this topic helpful?