AN 846: Intel® Stratix® 10 Forward Error Correction

ID 683805
Date 7/02/2018
Document Table of Contents

2.2. Error Correction Codes

There are two types of ECC codes, binary and non-binary.

In binary codes, the encoder and decoder operate on a bit basis. The 10GBASE-KR Fire Code FEC is an example of a binary code. In non-binary codes, the encoder and decoder operate on a byte or symbol basis. Symbols may be any number of bits. Galois finite field arithmetic is used and the Reed Solomon code is an example of a non-binary code.

Cyclic block codes are defined by a generator polynomial g(x). Encoding consists of adding a set of parity bits or symbols onto the data to create a code word, also called a codeword or a block. The parity is the remainder of the block from the polynomial division of the data bits by g(x). This is easily implemented using a linear feedback shift register (LFSR). Error detection and correction calculates the syndrome of the received code word. The syndrome is the difference between the locally-generated and received parity. If the syndrome is zero, the code word is correct. If the syndrome is non-zero, then the syndrome can determine the most likely error.