This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

TPC Decoder

Turbo product code (TPC) decoder

  • Library:
  • Communications Toolbox / Error Detection and Correction / Block

Description

The TPC Decoder block performs 2-D turbo product code (TPC) decoding of the soft input LLRs corresponding to the product code iteratively, using Chase-Pyndiah algorithm. The product code is a 2-D concatenation of linear block codes. The linear block code can be a parity check code, a Hamming code, or a BCH code capable of correcting two errors. Extended and shortened codes can be applied independently on each dimension. For a description of 2-D TPC decoding, see Algorithms.

For information about valid code pairs and the error-correcting capability for each valid code pair, see Component Code Pairs.

Ports

Input

expand all

Log likelihood ratios, specified as a column vector.

Data Types: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean

Output

expand all

TPC decoded message, returned as a column vector of binary values.

Parameters

expand all

Row TPC parameters

Number of rows in the product code matrix, NR. The list of integer values varies depending on the setting for Extended codes.

Number of rows in the message matrix, KR. The list of integer values varies depending on the setting for Extended codes and Number of rows in code, Nr.

Select Specify shortened message length to specify a value for Number of rows in shortened message, Sr.

Number of rows in the shortened message matrix, SR, specified as an integer less than or equal to KR. When you specify this parameter, provide full-length NR and KR values to specify the (NR,KR) code pair. This code pair is then shortened to the (NRKR+SR,SR) code pair, where:

Dependencies

To enable this parameter, select Specify shortened message length.

Data Types: double

Column TPC parameters

Number of columns in the product code matrix, NC. The list of integer values varies depending on the setting for Extended codes.

Number of columns in the message matrix, KC. The list of integer values varies depending on the setting for Extended codes and Number of columns in code, Nc.

Select Specify shortened message length to specify a value for Number of columns in shortened message, Sc.

Number of columns in the shortened message matrix, SC, specified as an integer. When you specify this parameter, provide full-length NC and KC values to specify the (NC,KC) code pair. This code pair is then shortened to the (NCKC+SC, SC) code pair, where:

Dependencies

To enable this parameter, select Specify shortened message length.

Data Types: double

Number of decoding iterations, specified as a positive integer.

Data Types: double

  • Code generation –– Simulate model using generated C code. The first time you run a simulation, Simulink® generates C code for the block. The C code is reused for subsequent simulations, as long as the model does not change. This option requires additional startup time, but the speed of the subsequent simulations is faster than Interpreted execution.

  • Interpreted execution –– Simulate model using the MATLAB® interpreter. This option shortens startup time speed of the subsequent simulations is slower than Code generation. In this mode, you can debug the source code of the block.

Block Characteristics

Data Types

double | single | Boolean

Multidimensional Signals

No

Variable-Size Signals

No

More About

expand all

Algorithms

Turbo product codes (TPC) are a form of concatenated codes used as forward error correcting (FEC) codes. Two or more component block codes, such as systematic linear block codes, are used to construct TPCs. The TPC decoder achieves near-optimum decoding of product codes using Chase decoding and the Pyndiah algorithm to perform iterative soft input, soft output decoding. For a detailed description, see [1] and [2]. This decoder implements an iterative soft input, soft output 2-D product code decoding, as described in [2], using two Linear Block Codes. The decoder expects the soft bit log likelihood ratios (LLRs) obtained from digital demodulation as the input signal.

TPC Decoding Full-Length Messages

TPC encoded full-length input messages are decoded using specified 2-D TPC code pairs. Row-wise decoding uses the (NC,KC) code pair and column-wise decoding uses the (NR,KR) code pair. The input vector length must be NR × NC. To perform the 2-D TPC decoding, the column vector of the input LLRs, composed of the message and parity bits, is arranged into an NR-by-NC matrix.

The TPC decoder achieves near-optimum decoding of product codes using Chase decoding and the Pyndiah algorithm to perform iterative soft input, soft output decoding. Chase decoding forms a set of possible codewords for each row or column. The Pyndiah algorithm calculates soft information required for the next decoding step.

Iterative Soft Input, Soft Output Decoder

The iterative soft input, soft output decoding, as shown in the block diagram, carries out two decoding steps for each iteration.

The soft inputs for decoding are R(m) = R + α(m)W(m).

  • Iteration loop counter i increments from i = 1 to the specified number of iterations.

  • m = 2i1 is the decoding step index.

  • R is the received LLR matrix.

  • R(m) is the soft input for the mth decoding step.

  • W(m) is the input extrinsic information for the mth decoding step.

  • α(m) = [0,0.2,0.3,0.5,0.7,0.9,1,1, ...], where α is a weighting factor applied based on the decoding step index. For higher decoding steps, α = 1.

  • β(m) = [0.2,0.4,0.6,0.8,1,1, ...], where β is a reliability factor applied based on the decoding step index. For higher decoding steps, β = 1.

  • D contains the decoded message bits. After iterating through the specified number of iterations, the output message bits are formed from D by mapping –1 to 0 and +1 to 1, then reshaping the message block into a column vector.

TPC Decoding Shortened Messages

TPC encoded shortened input messages are decoded using specified 2-D TPC code pairs. Row-wise decoding uses the (NCKC + SC, SC) code pair and column-wise decoding uses the (NRKR + SR,SR) code pair. The input vector length must be (NRKR + SR) × (NCKC + SC). To perform the 2-D TPC decoding of shortened messages, the column vector of the input LLRs, composed of the shortened message and parity bits, is arranged into an (NRKR + SR)-by-(NCKC + SC) matrix.

The TPC decoder processes the received shortened message LLRs similar to full length codes, with these exceptions:

  • The shortened bit positions in the received codeword are set to –1.

  • The Chase algorithm does not consider the shortened bit positions while choosing the least reliable bits.

References

[1] Chase, D. "Class of Algorithms for Decoding Block Codes with Channel Measurement Information." IEEE Transactions on Information Theory, Volume 18, Number 1, January 1972, pp. 170–182.

[2] Pyndiah, R. M. "Near-Optimum Decoding of Product Codes: Block Turbo Codes." IEEE Transactions on Communications. Vol. 46, Number 8, August 1998, pp. 1003–1010.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

See Also

Blocks

Functions

Introduced in R2018b