Main Content

DVB-S2 BCH Decoder

Decode and recover message from BCH codeword according to DVB-S2 standard

Since R2022a

  • DVB-S2 BCH Decoder block

Libraries:
Wireless HDL Toolbox / Error Detection and Correction

Description

The DVB-S2 BCH Decoder block decodes and recovers messages from a Bose-Chaudhuri-Hocquenghem (BCH) codeword according to the Digital Video Broadcast Satellite Second Generation (DVB-S2) standard [1]. The block accepts low-density parity-check (LDPC) decoded codeword data bits and a stream of control signals. It outputs decoded message data bits, a stream of control signals, a signal that indicates when the block is ready to accept new input, and an optional signal that provided the number of corrected errors in the output. The block supports either a scalar or an 8-element column vector as input.

The block supports two forward error correction (FEC) frame types, normal and short. The block provides an architecture suitable for HDL code generation and hardware deployment. You can use this block in a DVB-S2 receiver for satellite communication.

Examples

Ports

Input

expand all

Codeword data bits, specified as a Boolean scalar or an 8-element column vector.

The length of the input data must be based on the FEC frame type and code rate according to the DVB-S2 standard. For more information, see section 5.3 in [1].

For example, if the FEC frame type parameter is set to Normal and the Code rate parameter is set to 3/5, the length of the input data must be 38,880.

Data Types: Boolean

Control signals accompanying the sample stream, specified as a samplecontrol bus. The bus includes the start, end, and valid control signals, which indicate the boundaries of the frame and the validity of the samples.

  • start — Indicates the start of the input frame

  • end — Indicates the end of the input frame

  • valid — Indicates that the data on the input data port is valid

For more details, see Sample Control Bus.

Data Types: bus

Since R2024b

Frame type, specified as a Boolean scalar. If you specify 0, the block considers the input data as a normal frame and if you specify 1 the block considers the input data as a short frame.

Dependencies

To enable this port, set the Frame type source parameter to Input port.

Data Types: Boolean

Code rate index, specified as an integer. Code rate index values range from 0 to 10. Each code rate index value represents a specific code rate, as shown in this table.

codeRateIdx ValueCode Rate
0 1/4
11/3
22/5
31/2
4 3/5
52/3
63/4
74/5
85/6
98/9
109/10

Dependencies

To enable this port, set the Code rate source parameter to Input port.

Data Types: fixdt(0,4,0)

Output

expand all

Decoded message bits, returned as a Boolean scalar or as an 8-element column vector. The output data type and dimension are same as the input.

Data Types: Boolean

Control signals accompanying the sample stream, returned as a samplecontrol bus. The bus includes the start, end, and valid control signals, which indicate the boundaries of the frame and the validity of the samples.

  • start — Indicates the start of the output frame

  • end — Indicates the end of the output frame

  • valid — Indicates that the data on the output data port is valid

For more details, see Sample Control Bus.

Data Types: bus

Number of corrected errors, returned as a scalar.

  • – 1 — Indicates that the block contains errors in its output that cannot be corrected

  • 0 — Indicates that the block does not contain errors in its output

  • Range from 1 to 12 — Indicates the number of errors corrected in the block output

Dependencies

To enable this port, select the Output number of corrected symbol errors parameter.

Data Types: fixdt(1,5,0)

Block ready indicator, returned as a Boolean scalar.

The block sets this signal to 1 (true) when the block is ready to accept the start of the next frame. If the block receives an input ctrl.start signal while nextFrame is 0 (false), the block discards the frame in progress and begins processing the new data.

Data Types: Boolean

Parameters

expand all

Since R2024b

Select the FEC frame type source as Property or Input port.

  • Property — Select this option to enable the FEC frame type parameter.

  • Input port — Select this option to enable the frameType port.

For more information about normal and short FEC frame types, see [1].

Select the FEC frame type as Normal or Short.

For more information about normal and short FEC frame types, see [1].

Select the code rate source as Property or Input port.

  • Property — Select this option to enable the Code rate parameter.

  • Input port — Select this option to enable the codeRateIdx input port.

Select the code rate.

Dependencies

To enable this parameter, set the Code rate source parameter to Property.

Select this parameter to enable the numCorrErr output port. This port outputs the number of corrected errors.

Algorithms

expand all

BCH codes are cyclic codes that are capable of correcting multiple random errors. This figure shows the different stages of operations performed in the DVB-S2 BCH Decoder block for decoding a BCH code. The block calculates syndrome values, determines the error location polynomial using the Berlekamp-Massey algorithm, finds error locations using the Chien search [2] algorithm, and corrects the errors. For more information about the Berlekamp-Massey algorithm, see Algorithms for BCH and RS Errors-only Decoding. DVB-S2 specifications define BCH codes over two Galios fields, GF (216) and GF(214). For more information, see section 5.3 in [1].

Architecture diagram of the BCH decode algorithm

References

[1] ETSI Standard EN 302 307 V1.4.1: 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), European Telecommunications Standards Institute, Valbonne, France, 2005-03.

[2] Chien, R. “Cyclic Decoding Procedures for Bose- Chaudhuri-Hocquenghem Codes.” IEEE Transactions on Information Theory 10, no. 4 (October 1964): 357–63. https://doi.org/10.1109/TIT.1964.1053699.

Extended Capabilities

Version History

Introduced in R2022a

expand all