Contenuto principale

dvbrcs2CPMDemodulate

R2026b

Demodulate signal using CPM method specified in DVB-RCS2 standard

Since R2026b

Description

y = dvbrcs2CPMDemodulate(x,cfg) demodulates the input signal x using the continuous phase modulation (CPM) method specified in the Digital Video Broadcasting Second Generation Return Channel over Satellite (DVB-RCS2) standard [1]. The configuration object cfg specifies the modulation parameters and output type. The format of the output depends on the OutputType property of cfg.

For more information on demodulation and iterative decoding, see the More About section.

example

y = dvbrcs2CPMDemodulate(x,cfg,nVar) specifies the noise variance for soft-output demodulation.

Use this syntax when the OutputType property of cfg is set to "approxLLR".

y = dvbrcs2CPMDemodulate(x,cfg,nVar,extrinsicLLRs) specifies extrinsic log-likelihood ratios (LLRs) from an outer decoder for iterative demodulation and decoding.

Use this syntax when the OutputType property of cfg is set to "approxLLR".

Examples

collapse all

Create a DVB-RCS2 CPM demodulator configuration object and demodulate a CPM modulated signal.

Define modulation parameters for DVB-RCS2 reference waveform ID 9.

payloadBitLen = 2052; % Payload length in bits
preambleLen = 64;     % Preamble length in bits
sps = 4;              
modulationIndex = 2/5;
alphaRC = 0.98;       % phase response coefficient

Create a CPM modulator object.

modulatorObj = dvbrcs2CPMModulator(ModulationIndex=modulationIndex, ...
    PhaseResponseCoefficient=alphaRC, ...
    SamplesPerSymbol=sps, ...
    OutputDataType="double");

Generate and interleave the input bits.

numBits = preambleLen+payloadBitLen;
bits = randi([0,1],numBits,1);
% Specify the initial state for random number generator
seed = 4831; 
inpBits = randintrlv(bits,seed);

Map interleaved bits to CPM input symbols using Gray mapping.

bit1 = inpBits(1:2:end);
bit2 = inpBits(2:2:end);
modIn = -3 + 4*bit1 + 2*(xor(bit1,bit2));

Generate the CPM-modulated waveform.

modOut = modulatorObj(modIn);

Add noise to the modulated signal.

rxIn = awgn(modOut,10,"measured");

Create a demodulator configuration object with matching parameters and demodulate the received CPM-modulated signal.

cpmDemodCfg = dvbrcs2CPMDemodConfig(ModulationIndex=modulationIndex, ...
    PhaseResponseCoefficient=alphaRC, ...
    SamplesPerSymbol=sps, ...
    OutputType="integer");

Demodulate the received waveform.

demodOutSymbols = dvbrcs2CPMDemodulate(rxIn,cpmDemodCfg);

Verify the demodulation by comparing the output symbols to the original modulator input.

isequal(demodOutSymbols(1:end-2),modIn(1:end-2))
ans = logical
   1

Input Arguments

collapse all

DVB-RCS2 modulated input signal, specified as a column vector of complex baseband samples. The length of x must be an integer multiple of the SamplesPerSymbol property of cfg.

Data Types: double
Complex Number Support: Yes

DVB-RCS2 CPM demodulator configuration, specified as a dvbrcs2CPMDemodConfig object.

Noise variance, specified as a nonnegative scalar.

This argument applies when you set the OutputType property of cfg to "approxLLR". The function uses this value to scale branch metrics during LLR computation.

If you specify a value of 0, the function uses a noise variance of 1e-5.

Data Types: double

Extrinsic LLRs from an outer decoder, specified as a real-valued column vector of length 2 × N. N is the number of input symbols, that is, len(x) ∕ SamplesPerSymbol property of cfg. A positive value represents a logical 1, and a negative value represents a logical 0.

This argument applies when you set the OutputType property of cfg to "approxLLR" for iterative decoding.

Data Types: double

Output Arguments

collapse all

Demodulated output, returned as a column vector. The content and data type of y depend on the OutputType and OutputDataType properties of cfg:

  • If you specify the OutputType property to "integer", y contains demodulated CPM symbols from the set {-3, -1, 1, 3}. The data type is as specified by the OutputDataType property of cfg.

  • If you specify the OutputType property to "bit", y contains demodulated bits. The data type is as specified by the OutputDataType property of cfg.

  • If you specify the OutputType property to "approxLLR", y contains approximate LLRs. The output data type matches the data type of the input signal x.

Data Types: single | double | int8 | logical

More About

collapse all

References

[1] ETSI Standard EN 301 545-2 V1.4.1(2024-01). Digital Video Broadcasting (DVB); Second Generation Interactive Satellite Systems (DVB-RCS2); Part-2: Lower Layers for Satellite Standard.

Extended Capabilities

expand all

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2026b