# DVB-S2 BCH Decoder

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

• Library:
• 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 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.

## Ports

### Input

expand all

Codeword data bits, specified as a `Boolean` scalar.

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`

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
`1`1/3
`2`2/5
`3`1/2
`4` 3/5
`5`2/3
`6`3/4
`7`4/5
`8`5/6
`9`8/9
`10`9/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.

The output data type is the same as the input data type.

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

Select the FEC frame type as `Normal` or `Short`.

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].

## 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.

## Version History

Introduced in R2022a