pccc
Parallel-concatenated convolutional code (PCCC)
This crate implements encoding and decoding functionality for a parallel-concatenated convolutional code (PCCC), commonly referred to as a turbo code. The encoder for such a code comprises the parallel concatenation of two identical recursive systematic convolutional (RSC) encoders, separated by an internal interleaver. The decoder is based on iterations between two corresponding soft-input/soft-output a posteriori probability (APP) decoders, separated by an interleaver and deinterleaver.
The [encoder] and [decoder] functions handle PCCC encoding and decoding, respectively,
while the [Interleaver] struct models the internal interleaver. The [Bit] enum represents
binary symbol values, and the [DecodingAlgo] enum lists the supported decoding algorithms for
the constituent RSC code; each variant of the latter holds a [u32] representing the desired
number of turbo iterations.
Examples
use ;
use ;
// Rate-1/3 PCCC in LTE, 4 information bits
let code_polynomials = ;
let interleaver = new?;
// Encoding
let info_bits = ;
let code_bits = encoder?;
assert_eq!;
// Decoding
let code_bits_llr = ;
let info_bits_hat = decoder?; // Log-MAP decoding with 8 turbo iterations
assert_eq!;
License: MIT