Main Content

DVB-S.2 Link, Including LDPC Coding in Simulink

This model shows the state-of-the-art channel coding scheme used in the second generation Digital Video Broadcasting standard (DVB-S.2), which is deployed by DIRECTV in the United States. The coding scheme is based on concatenation of LDPC (Low-Density Parity-Check) and BCH codes. LDPC codes, invented by Gallager in his seminal doctoral thesis in 1960, can achieve extremely low error rates near channel capacity by using a low-complexity iterative decoding algorithm. The outer BCH codes are used to correct sporadic errors made by the LDPC decoder.

The channel codes for DVB-S.2 provide a significant capacity gain over DVB-S under the same transmission conditions and allow Quasi-Error-Free operation (packet error rate below 10^ -7) at about 0.7 dB to 1 dB from the Shannon limit, depending on the transmission mode.

This example models the BCH encoder, LDPC encoder, interleaver, modulator, as well as their counterparts in the receiver, according to the DVB-S.2 standard.

Structure of the Example

The communication system in this example performs these tasks:

  • Generation of BBFRAME by a random source

  • BCH encoding, for all coding parameters and normal FECFRAME

  • LDPC encoding, for all coding parameters and normal FECFRAME

  • Interleaving

  • Modulation (QPSK, 8PSK, 16APSK, or 32APSK)

  • AWGN channel modeling

  • Soft-decision demodulation

  • Deinterleaving

  • LDPC decoding, by means of the message passing algorithm

  • BCH decoding

  • BBFRAME unbuffering

modelname =  'commdvbs2' ;
open_system(modelname);
RX = [modelname '/RX Constellation']; % Define Simulink object as a variable
set_param(RX,'openScopeAtSimStart','off' ); % Set Simulink scope visibility parameter
T = evalc('sim(modelname)');

Furthermore, this model has blocks for measuring and displaying the packet error rate, LDPC bit error rate, and estimated Es/No. There is also a scatter plot scope displaying the received signal, which helps users visualize the channel distortions of the signal.

Simplifications and Assumptions

For simplicity, this example

  • Assumes perfect synchronization between the transmitter and the receiver

  • Uses a complex baseband model of an AWGN channel, rather than a full satellite channel

  • Models BBHEADER and DATA FIELD in a BBFRAME using a Bernoulli binary random source, and does not perform baseband scrambling

  • Supports only normal FECFRAME (i.e., the block length of LDPC codes is 64800)

  • Processes one LDPC codeword in one unit of time in Simulink®

  • Approximates the log-likelihood ratio of the channel output for LDPC decoding by considering only two points in the constellation nearest to the received signal during soft-decision demodulation

  • Uses Es/No provided by the user for LDPC decoding, instead of estimating the Es/No from the received signal

Also, the example does not model these aspects of the DVB-S.2 standard:

  • Short FECFRAME

  • Physical Layer (PL) Framing

  • PL Signalling and Pilot insertion

  • PL Scrambler

  • Baseband (BB) Filter and Quadrature Modulation

Parameters of the Model

Double-clicking the Model Parameters block allows users to set the following parameters for the model:

Results and Displays

When the model starts, a window automatically comes up to display the scatter plot of the received signal. The LDPC bit error rate, packet error rate, and estimated Es/No from the received signal will be continuously updated.

% Set scope visibility for next display and run simulation
set_param(RX,'openScopeAtSimStart','on');
sim(modelname);

The power of LDPC codes can be readily observed using the default settings: QPSK, rate 1/2, Es/No = 1 dB, and 50 iterations in decoding. Even with such a low Es/No, the LDPC decoder will seldom make an error. The scatter plot vividly illustrates how noisy the channel is.

If Es/No is slightly decreased, for example, to 0.5 dB, the LDPC bit error rate will be much greater. This is consistent with typical steep performance curves of LDPC codes.

% Cleanup
%
% To clear the variables set above and close without saving the changes to
% the model, type the following commands into the MATLAB(R) command prompt.
%

close_system(modelname,0);

Selected Bibliography

[1] DVB-S.2 Standard Specification, ETSI EN 302 307 V1.1.1 (2005-03).

[2] R. G. Gallager, Low-Density Parity-Check Codes, IRE Transactions on Information Theory, Vol. 8, No. 1, January 1962, pp. 21-28.

[3] W. E. Ryan, An introduction to LDPC codes, in Coding and Signal Processing for Magnetic Recoding Systems (Bane Vasic, ed.), CRC Press, 2004.