Decoding circuit (1) comprising: an input (14) for receiving raw bit values of a
forward error correction (FEC) block; a low-density parity check (LDPC) decoder (3) coupled to the input (14), wherein the LDPC decoder (3) performs a failed decoding operation on the raw bit values of the FEC block and outputs a failed decoding syndrome (13) and a failed decoding output block (12); a trap detection
comparator (4) coupled to the LDPC decoder (3), wherein the trap detection
comparator (4) determines whether the FEC block is a trapped block by the number of failing check nodes indicated by the syndrome (13). are compared with an error threshold, whereby the FEC block is determined to be a trapped block if the number of failing check nodes specified by the syndrome (13)is less than the error threshold; and a trap control (2) coupled to the input (14), the trap detection
comparator (4), and the LDPC decoder (3), wherein, when the FEC block is determined to be a trapped block, the trap control (2) performs trapped-block decoding iterations using the LDPC decoder (3) until the decoding operation is successful or until a predetermined number of trapped-block decoding iterations have been performed, wherein at each trapped-block decoding iteration, the trap control (2) does the following: generate an updated
log likelihood ratio (LLR) map using weak bit values corresponding to each bit in the FEC block and stochastic probability values corresponding to each bit in the FEC block; provide to the LDPC decoder (3),the updated LLR card and either the raw bit values of the FEC block or a failed decode output block from a previous failed decode operation, and sending a
signal to the LDPC decoder (3) to perform a decode operation, wherein in response to the
signal, the LDPC decoder (3) uses the updated LLR card to perform a decode operation on the respective bits of the raw bit values of the FEC block or the failed decode output block from the previous failed decode operation, wherein, if it is not determined that the FEC block is a trapped block, the decode circuit outputs an
error signal at an output of the decode circuit, and if the decode operation is successful in generating a codeword, the decode circuit outputs the codeword.