Main Content

dvbrcs2WaveformGenerator

Generate DVB-RCS2 waveform

Since R2021b

Description

The dvbrcs2WaveformGenerator System object™ generates a Digital Video Broadcasting Second Generation Return Channel over Satellite (DVB-RCS2) time-domain reference or a custom waveform. The object implements the waveform generation aspects of ETSI EN 301 545-2 V1.2.1 (2014-11) [1].

To generate a DVB-RCS2 waveform:

  1. Create the dvbrcs2WaveformGenerator object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

rcs2WaveGen = dvbrcs2WaveformGenerator creates a default DVB-RCS2 waveform generator System object.

example

rcs2WaveGen = dvbrcs2WaveformGenerator(Name,Value) sets properties using one or more name-value arguments. For example, 'TransmissionFormat',"SS-TC-LM" specifies to generate a reference DVB-RCS2 waveform of spread spectrum turbo codes with linear modulation (SS-TC-LM) format.

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Transmission format, specified as one of these values.

  • "TC-LM" — Turbo codes with linear modulation (TC-LM)

  • "SS-TC-LM" — Spread spectrum turbo codes with linear modulation (SS-TC-LM)

Tunable: Yes

Data Types: char | string

Frame protocol data unit (PDU) burst content type, specified as "traffic", "logon", or "control".

Data Types: char | string

Custom waveform indicator, specified as one of these numeric or logical values.

  • 0 (false) — Generate a standard-defined reference waveform. For details, refer to ETSI EN 301 545-2 V1.2.1 (2014-11) Annex A Tables A-1 and A-2 [1].

  • 1 (true) — Generate a custom waveform.

Tunable: Yes

Data Types: logical

Reference waveform ID, specified as one of these options.

  • Integer in the range [1, 22] or [32, 49] — Use this option when you set the TransmissionFormat property to "TC-LM".

  • Integer in the range [1, 19] — Use this option when you set the TransmissionFormat property to "SS-TC-LM".

Based on the TransmissionFormat and WaveformID properties, the System object considers the transmission parameters according to ETSI EN 301 545-2 Annex A Table A-1 and A-2 [1].

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to false.

Data Types: double | unit8

Preburst guard length, specified as a nonnegative integer. This length represents the number of zero-valued symbols in the guard time that are prefixed to the burst symbols, prior to the preamble.

A value of 0 indicates no guard symbols are prefixed.

Tunable: Yes

Data Types: double

Postburst guard length, specified as a nonnegative integer. This length represents the number of zero-valued symbols in the guard time that are suffixed to the burst symbols, after the postamble.

In absence of the postamble, these symbols are suffixed directly after the payload symbols.

Tunable: Yes

Data Types: double

Filter span in symbols, specified as a positive integer.

The ideal impulse response of the raised cosine filter is truncated to a length that spans the number of symbols specified in this property.

Data Types: double

Number of samples per symbol, specified as a positive integer.

Data Types: double

Payload length in bytes, specified as one of these options.

  • Integer in the range [3, 65,535] — Use this option when you set the ContentTypeproperty to "control" or "logon".

  • Integer in the range [5, 65,535] — Use this option when you set the ContentType property to "traffic".

This length represents the size of the input data to the turbo encoder of this System object. Input data includes the frame PDU and the cyclic redundancy check (CRC) bits.

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true.

Data Types: double

Mapping scheme, specified as one of these values.

  • "pi/2-BPSK"

  • "QPSK"

  • "8PSK"

  • "16QAM"

Dependencies

To enable this property, set the TransmissionFormat property to "TC-LM" and the IsCustomWaveform property to true.

Note

When you set the TransmissionFormat property to "SS-TC-LM", the only valid value of MappingScheme is "pi/2-BPSK".

Data Types: char | string

Code rate, specified as one of these values.

  • "2/3", "3/4", "4/5", "5/6", "6/7", or "7/8" — Use one of these values when you set the MappingScheme property to "8PSK".

  • "3/4", "4/5", "5/6", "6/7", or "7/8" — Use one of these values when you set the MappingScheme property to "16QAM".

All code rates are applicable if MappingScheme property is set to "pi/2-BPSK" or "QPSK".

This code rate is passed as an input to the turbo encoder function, that is, dvbrcs2TurboEncode, of this System object.

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true.

Data Types: char | string

Preamble length, specified as an integer in the range [0, 255].

When you set the TransmissionFormat property to "TC-LM", the unit of preamble length is symbols. When you set the TransmissionFormat property to "SS-TC-LM", the unit of preamble length is chips.

A preamble of this specified length is prefixed to the burst sequence, prior to the modulation.

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true.

Data Types: double

Postamble length, specified as an integer in the range [0, 255].

When you set the TransmissionFormat property to "TC-LM", the unit of postamble length is symbols. When you set the TransmissionFormat property to "SS-TC-LM", the unit of postamble length is chips.

A postamble of this specified length is suffixed to the burst sequence, prior to the modulation.

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true.

Data Types: double

Pilot period, specified as an integer in the range [0, 4095]. A value of 0 indicates no pilots are inserted.

When you set the TransmissionFormat property to "TC-LM", the unit of pilot period is symbols. When you set the TransmissionFormat property to "SS-TC-LM", the unit of pilot period is chips.

The pilot period represents the length of the sequence from first symbol of a pilot block to the first symbol of the next pilot block in symbols or chips.

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true.

Data Types: double

Pilot block length, specified as an integer in the range [1, 255].

After every PilotPeriod symbols or chips, a pilot block of this specified length is added in the burst sequence.

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true and PilotPeriod property to a positive integer.

Data Types: double

Permutation control parameters that the dvbrcs2WaveformGenerator uses to generate turbo encoder interleaver indices, specified as a five-element vector in order: P, Q0, Q1, Q2, and Q3. P must be in the range [9, 255], and Q0, Q1, Q2, and Q3 must be in the range [0, 15].

To generate unique interleaver indices, the value of P must be co-prime to PayloadLengthInBytes*4.

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true.

Data Types: double

Unique word, specified as a character array or string scalar.

A unique word is a string of hexadecimal values that include the combination of the preamble, one pilot block, and the postamble sequence. Pilots are included only when you set the PilotPeriod property as nonzero.

To know the minimum required length of the unique word, use this formula.

ceil((PreambleLength + PostambleLength + PilotBlockLength)*bps/4); where bps is the bits per seconds, determined by the MappingScheme specified.

For example, if PreambleLength = 9, PostambleLength = 8, PilotBlockLength = 1, and MappingScheme = "QPSK" (bps = 2) then the minimum required length of the unique word by using this formula:

ceil((9 + 8 + 1)*2/4) = 9 (hexadecimal values)

Tunable: Yes

Dependencies

To enable this property, set the IsCustomWaveform property to true.

Data Types: char | string

Spreading factor, specified as an integer in the range [2, 16].

Tunable: Yes

Dependencies

To enable this property, set the TransmissionFormat property to "SS-TC-LM" and the IsCustomWaveform property to true.

Data Types: double

Scrambling polynomial, specified as one of these options.

  • 16-bit vector of binary values from the most significant bit (MSB), z16, to least significant bit (LSB), z1. Each element of this vector corresponds to the coefficient of z and its exponent, specified from MSB to LSB. For details on the binary representation, see ETSI EN 301 545-2 Section 7.3.7.1.5.

  • Numeric vector containing the exponents of z for nonzero terms of the polynomial in descending order.

The scrambling polynomial determines the shift register feedback connection to generate the spreading sequence.

The coefficient of z0 is always 1.

The default value of this scrambling polynomial indicates the default scrambling sequence provided in the standard. When you set the TransmissionFormat property to "SS-TC-LM" and the IsCustomWaveform property to false, all of the reference waveforms use this default scrambling sequence.

Tunable: Yes

Dependencies

To enable this property, set the TransmissionFormat property to "SS-TC-LM" and the IsCustomWaveform property to true.

Data Types: double | logical

Scrambling initial conditions of the shift register, specified as one of these options.

  • 1 — Use this option to set the initial condition of each cell of the shift register to this value.

  • 16-bit vector of binary values from the MSB (z16) to LSB (z1) — Use this option to set the initial condition of each cell of the shift register to the corresponding element in this vector.

For this System object to generate a nonzero sequence, you must specify at least one nonzero element in this vector.

Tunable: Yes

Dependencies

To enable this property, set the TransmissionFormat property to "SS-TC-LM" and the ScramblingPolynomial property to a value other than the default value.

Data Types: double | logical

This property is read-only.

Frame PDU length, returned as a positive integer.

The frame PDU length indicates the length in bits of the input data to this System object. This length is calculated by subtracting the length of the CRC sequence from the payload length in bits.

Data Types: double

Usage

Description

burst = rcs2WaveGen(pdu) generates a DVB-RCS2-based burst symbols for the corresponding input binary sequence.

Input Arguments

expand all

Frame PDU, specified as a binary-valued column vector.

Data Types: double | logical

Output Arguments

expand all

DVB-RCS2-based burst samples, returned as a column vector.

The System object outputs these burst symbols (including the guard symbols) post modulation and pulse shaping.

Data Types: double
Complex Number Support: Yes

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

infoCharacteristic information about object
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
cloneCreate duplicate System object
isLockedDetermine if System object is in use
resetReset internal states of System object

Examples

collapse all

Generate a reference DVB-RCS2 time-domain waveform with SS-TC-LM format.

Create and then set the properties of a DVB-RCS2 waveform generator System object™.

wg = dvbrcs2WaveformGenerator;
wg.TransmissionFormat = "SS-TC-LM";
wg.ContentType = "logon";
wg.WaveformID = 10;
wg.SamplesPerSymbol = 6;

Display the properties of the waveform generator.

disp(wg)
  dvbrcs2WaveformGenerator with properties:

      TransmissionFormat: "SS-TC-LM"
             ContentType: "logon"
        IsCustomWaveform: false
              WaveformID: 10
     PreBurstGuardLength: 0
    PostBurstGuardLength: 0
     FilterSpanInSymbols: 10
        SamplesPerSymbol: 6

   Read-only:
          FramePDULength: 1344

Generate a frame PDU.

framePDU = randi([0 1],wg.FramePDULength,1);

Generate the DVB-RCS2-based burst samples.

txWaveform = wg(framePDU);

Generate a custom DVB-RCS2 time-domain waveform having TC-LM format.

Create and then set the properties of the DVB-RCS2 waveform generator System object™.

wg = dvbrcs2WaveformGenerator;
wg.IsCustomWaveform = true;
wg.ContentType = "control";
wg.MappingScheme = "QPSK";
wg.CodeRate = "2/3";
wg.PreambleLength = 10;
wg.PostambleLength = 8;
wg.PermutationParameters = [13 4 2 1 2];
wg.UniqueWord = "FFFFFFFFF";

Display the properties of the waveform generator.

disp(wg)
  dvbrcs2WaveformGenerator with properties:

       TransmissionFormat: "TC-LM"
              ContentType: "control"
         IsCustomWaveform: true
      PreBurstGuardLength: 0
     PostBurstGuardLength: 0
      FilterSpanInSymbols: 10
         SamplesPerSymbol: 4
     PayloadLengthInBytes: 10

   Coding and Modulation:
            MappingScheme: "QPSK"
                 CodeRate: "2/3"
    PermutationParameters: [13 4 2 1 2]

   Unique Word:
           PreambleLength: 10
          PostambleLength: 8
              PilotPeriod: 0
         PilotBlockLength: 1
               UniqueWord: "FFFFFFFFF"

   Read-only:
           FramePDULength: 64

Generate a frame PDU.

framePDU = randi([0 1],wg.FramePDULength,1);

Generate the DVB-RCS2-based burst samples.

txWaveform = wg(framePDU);

Generate multiple ContentType DVB-RCS2 bursts.

Set the ContentType of the DVB-RCS2 waveform generator System Object™ as logon.

wg = dvbrcs2WaveformGenerator;
wg.ContentType = "logon";

Generate a frame PDU.

framePDU1 = randi([0 1],wg.FramePDULength,1);

Generate the DVB-RCS2 logon burst samples.

txWaveform1 = wg(framePDU1);

Now, generate the DVB-RCS2 traffic burst samples.

% ContentType property is tunable
wg.ContentType = "traffic";
framePDU2 = randi([0 1],wg.FramePDULength,1);
txWaveform2 = wg(framePDU2);

References

[1] ETSI Standard EN 301 545-2 V1.2.1(2014-11). Digital Video Broadcasting (DVB); Second Generation Interactive Satellite Systems (DVB-RCS2).

Extended Capabilities

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

Version History

Introduced in R2021b