Main Content

DVB-S2X Super-Frame Generation for Formats 0 and 1

This example shows how to generate a Super-Frame (SF) complex baseband waveform. The SF waveform consists of several fields that are inserted in the SF structure, such as start of super-frame (SOSF), super-frame format indicator (SFFI), DVB-S2/S2X physical layer frames (PLFRAMEs), and SF-aligned pilots.

Introduction

The super-framing structure provides better support for synchronization algorithms using several SF-specific fields such as SOSF, SFFI, and SF-aligned pilots, to enhance the receiver performance. The structure for formats 0 and 1 is of a fixed-length of 612,540 symbols and hosts DVB-S2X and DVB-S2 PLFRAMEs, respectively.

  • The first field in the SF is the SOSF, which is of length 270 symbols.

  • The second field is the SFFI, which is of length 450 symbols.

  • The remaining portion of the SF is allocated to the DVB-S2/S2X PLFRAMEs and the SF-aligned pilots (if signalled).

The SF symbols are scrambled using a SF-wide scrambling technique, where two scramblers are used. The reference scrambler is used to scramble the SOSF and the SF-aligned pilots. The payload scrambler is used to scramble the SFFI field. The DVB-S2X PLFRAMEs and DVB-S2 PLFRAMEs are scrambled using the scrambler defined in ETSI EN 302 307-1 [2], clause 5.5.4.

The format-specific content section of the SF is divided into resource slots called Capacity Units (CU). Each CU is of length 90 symbols and contains the PLFRAMEs symbols.

These figures show the SF structure:

  • If SF-aligned pilots are inserted

  • If SF-aligned pilots are not inserted

Because PLFRAMEs are divided into slots of 90 symbols each, they can be assigned the necessary number of CUs to be inserted into the SF. Very low signal-to-noise ratio (VL-SNR) frames are modified such that the VL-SNR pilot field lengths are of length 90 symbols to avoid any overlap with the SF-aligned pilots. When the pilot fields are used, the total number of CUs available in a single SF is 6640. In the absence of pilots, the number of CU available is 6806.

This example demonstrates how to parameterize and generate a SF with its respective fields. You can generate multiple DVB-S2/S2X PLFRAMEs that are inserted into the SF.

SOSF, SFFI, and SF-aligned Pilots

The SOSF field is of length 270 symbols, and is a sequence derived from a Walsh-Hadamard matrix of size 256, padded with a sequence of length 14 symbols. Any one of the 256 sequences can be used as the SOSF sequence for the SF. The SOSF sequence is mapped onto the constellation by multiplying the selected sequence by (1+j)/2.

The SFFI field is of length 450 symbols. The format can be either 0 or 1. These operations generate the SFFI field:

  1. Converting the numeric format value to a 4-bit representation

  2. Performing simplex coding as described in Annexure E.2.3 [1], to achieve the required code rate of 4/15

  3. Bit-wise repetition of the encoded bits by a factor for 30 to obtain Xsffi

  4. Constellation mapping using the equation (-2*Xsffi+1)(1+j)/2

The pilot field (P) of length 36 symbols and is a derived from a Walsh-Hadamard matrix of size 32, padded with a sequence of 4 symbols. Any one of the 32 sequences can be used as the pilot sequence for the SF. The pilot sequence is mapped onto the constellation by multiplying the selected sequence by (1+j)/2. The pilot fields are placed with a periodicity of 16 CUs, however, they do not occupy a full CU. When SF-aligned pilots are inserted, a complete SF has 415 pilot fields.

Download DVB-S2X LDPC Parity Matrices Data Set

This example loads a MAT-file with DVB-S2X LDPC parity matrices. If the MAT-file is not available on the MATLAB® path, use these commands to download and unzip the MAT-file.

if ~exist('dvbs2xLDPCParityMatrices.mat','file')
    if ~exist('s2xLDPCParityMatrices.zip','file')
        url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip';
        websave('s2xLDPCParityMatrices.zip',url);
        unzip('s2xLDPCParityMatrices.zip');
    end
    addpath('s2xLDPCParityMatrices');
end

SF Generation Workflow

This figure summarizes the workflow to generate the SF waveform and its output.

SOSF, SFFI, Pulse-Shaping, and Scrambling Properties of SF

Generate the SF using the HelperSuperFrameGenerator0And1.m object and set its parameters.

  • SF Format: Set to 0 or 1.

  • SOSFIndex: Select the appropriate Walsh-Hadamard sequence from the range [0, 255] to use as the SOSF.

  • Pulse-Shaping Parameters: These include SamplesPerSymbol, RolloffFactor, and FilterSpanInSymbols.

  • ScramblingCodeNumbers: Select the Nth gold code for generating the scrambling sequence for the reference and the payload scramblers. The property accepts a row vector of length two, [Nref Npayload]. The value of N is in the range [0, 148,574].

sfWaveGen = HelperSuperFrameGenerator0And1;
sfWaveGen.Format = 0;
sfWaveGen.SOSFIndex = 0;
sfWaveGen.ScramblingCodeNumbers = [14 26];
sfWaveGen.RolloffFactor = 0.05;
sfWaveGen.FilterSpanInSymbols = 10;
sfWaveGen.SamplesPerSymbol = 4;

SF-Aligned Pilots Properties

These properties signal pilot existence in the SF and the pilot sequence to be used.

  • PilotIndex — Select an appropriate Walsh-Hadamard sequence from the range [0, 31] to use as the pilot sequence.

  • HasPilotsInFirstSuperFrame — Flag to determine whether SF pilots are inserted in the first SF.

  • HasPilotsInNextSuperFrame — Flag to determine whether the next SF has pilots.

sfWaveGen.PilotIndex = 0;                     
sfWaveGen.HasPilotsInFirstSuperFrame = false;  
sfWaveGen.HasPilotsInNextSuperFrame = false;  

DVB-S2/S2X Frames Properties

These properties generate the PLFRAMEs that constitute a SF.

  • StreamFormat — Set as either "TS" or "GS", corresponding to transport stream and generic stream, respectively.

  • PLSDecimalCode — Physical layer signalling, specified as a decimal value.

  • DFL — Data field length.

  • PLScramblingIndex — Value in the range [0, 7] to specify the scrambling sequence used for the DVB-S2/S2X frames only.

sfWaveGen.StreamFormat = "GS";                
sfWaveGen.PLSDecimalCode = 132;               
sfWaveGen.DFL = 18448;                        
sfWaveGen.PLScramblingIndex = 0;              

If StreamFormat is "GS", then you must set the user packet length (UPL). UPL can either be 0 or less than the data field length (DFL) value.

if strcmp(sfWaveGen.StreamFormat,"GS")
    sfWaveGen.UPL = 0;                       
end

If the PLSDecimalCode value specifies a VL-SNR FRAME, you must also set the canonical MODCOD property. Note: VL-SNR frames must not be combined with regular frames.

if sfWaveGen.PLSDecimalCode == 129 || sfWaveGen.PLSDecimalCode == 131 
    sfWaveGen.CanonicalMODCODName = "BPSK 1/5";
end
disp(sfWaveGen)
  HelperSuperFrameGenerator0And1 with properties:

                        Format: 0
                     SOSFIndex: 0
                    PilotIndex: 0
         ScramblingCodeNumbers: [14 26]
    HasPilotsInFirstSuperFrame: false
     HasPilotsInNextSuperFrame: false
                 RolloffFactor: 0.0500
           FilterSpanInSymbols: 10
              SamplesPerSymbol: 4

  Show all properties

Set the number of DVB-S2/S2X frames to be generated and inserted into the SF—if all DVB-S2/S2X frames cannot be inserted in one SF, the output contains multiple SFs.

numPLFramesPerPLSDecimalCode = 19;

Obtain characteristic information of the SF and the individual DVB-S2/S2X frames. These output fields of the info object function as follows.

  1. FECFrame: Forward error correction (FEC) frame format, specified as "normal", "medium", or "short".

  2. ModulationScheme: Modulation scheme used to map DVB-S2/S2X frames to the constellation.

  3. LDPCCodeIdentifier: Output code rate of the low density parity code (LDPC) encoder.

  4. NumPLFRAMESPerSuperFrame: For a specified PLSDecimalValue, the value of this field is equal to the number for PLFRAMEs with the same PLSDecimalCode that can be inserted in one SF.

superFrameInfo = sfWaveGen.info;
                       FECFrame: "normal"
               ModulationScheme: "QPSK"
             LDPCCodeIdentifier: "13/45"
    MinNumPLFRAMESPerSuperFrame: 19

For the given PLSDecimalCode, if 19 PLFRAMEs are generated,  the last PLFRAME in Super-Frame is fragmented.

Initialize the random number generator with a seed. Vary the seed to obtain different input data. The value used here, 73, is arbitrary.

seed = 73;
rng(seed);

Create an iterative loop to generate the SF output.

superFrameOut = [];
for numPLFrames = 1:numPLFramesPerPLSDecimalCode
    % Generate data using the generateInputData method
    data = sfWaveGen.generateInputData;
    sfOutputFiltered = sfWaveGen(data);
    superFrameOut = [superFrameOut; sfOutputFiltered]; %#ok<AGROW> 
end
Super-Frame Number 1 is being generated.
Super-Frame Number 1 is complete.
Super-Frame Number 2 is being generated.

Display the number of CUs that are still unused in the latest SF.

getRemainingCUValue(sfWaveGen);
The current Super-Frame has 6737 Capacity Units available.

Visualization

Plot the signal power spectral density at the baseband. Set the channel bandwidth to get an appropriate plot.

chanBW = 36e6;  % Channel Bandwidth
Rsymb = chanBW/(1 + sfWaveGen.RolloffFactor);
Fsamp = Rsymb*sfWaveGen.SamplesPerSymbol;
bbscope = dsp.SpectrumAnalyzer('SampleRate',Fsamp, ...
    'PlotAsTwoSidedSpectrum',true, ...
    'SpectrumType','Power density', ...
    'AveragingMethod','Exponential', ...        
    'Title', 'Power Spectral Density of Complex Baseband DVB-S2X super-frame Waveform');
bbscope(superFrameOut);

Further Exploration

The example shows how to generate the SF output for formats 0 and 1. Explore these options to generate unique waveforms.

  • Vary the number of PLFRAMEs. You can also try to change the PLSDecimalCode value of each PLFRAME and then generate the SF.

  • Adjust the ScramblingCodeNumbers to get SFs scrambled with different scrambling sequences. You can perform cross-correlation on the SOSF and SFFI sequences in the SF output.

  • Select different SOSF and pilot sequences by varying their respective property values.

  • Vary the pilot presence in neighboring SFs by changing the HasPilotsInNextSuperFrame property.

Appendix

The example uses the helper function:

Bibliography

  1. ETSI Standard EN 302 307-2 V1.3.1(2021-07). Digital Video Broadcasting (DVB); Second Generation Framing Structure, Channel Coding and Modulation Systems for Broadcasting, Interactive Services, News Gathering and other Broadband Satellite Applications; Part 2: DVB-S2 extensions (DVB-S2X).

  2. ETSI Standard EN 302 307-1 V1.4.1(2014-11). Digital Video Broadcasting (DVB); Second Generation Framing Structure, Channel Coding and Modulation Systems for Broadcasting, Interactive Services, News Gathering and other Broadband Satellite Applications (DVB-S2).

  3. ETSI Standard TR 102 376-2 V1.3.1(2015-11). Digital Video Broadcasting (DVB); Implementation Guidelines for the Second Generation System for Broadcasting, Interactive Services, News Gathering and other Broadband Satellite Applications; Part 2: S2 extensions (DVB-S2X).

  4. ETSI Standard TR 102 376-1 V1.2.1(2015-11). Digital Video Broadcasting (DVB); Implementation Guidelines for the Second Generation System for Broadcasting, Interactive Services, News Gathering and other Broadband Satellite Applications (DVB-S2).

See Also

Objects

Related Topics