Soft-input soft-output decoding algorithms

This page contains links to programs in C/C++ for simulating SISO decoding algorithms. These are discussed in Chapter 7 of the book.  

MAP decoding of a parallel concatenated (turbo) convolutional code: Rate 1/3
turbo_MAP.cpp   random.cpp random.h

Simulation of a binary rate-1/3 turbo code with two identical rate-1/2 component recursive convolutional encoders. The memory of the encoders can be selected betwen 2, 3 and 4, corresponding to 4, 8 and 16 state trellises respectively. Files turbo_MAP.cpp and  random.cpp must be compiled together, with the "gcc" command in a unix-like environment (or equivalent in other OS) as

gcc -O2 turbo_MAP.cpp random.cpp -lm

See also the example file.

NOTE: This version of the program does not consider tail bits to terminate the trellis. As a result, performance will be worse than turbo codes with tail bits, specially with short interleaver lengths. Also, the encoder structure is "hard-coded" in the program..  

MAP decoding of a parallel concatenated (turbo) convolutional code: Puncturing and rate 1/2
turbo_MAP_punc.cpp   random.cpp random.h

These programs are used for simulation of a rate-1/2 punctured turbo code. A puncturing rule is applied in the branch metric (gamma) computation stage, very much in the same way as in the convolutional code case. In this version, the puncturing rule is hard-coded in the program, but it should be easy to specified it in a file, just as in the case of binary punctured convolutional codes.
All other comments made for the rate-1/3 turbo code above are pertinent to the punctured rate-1/2 turbo code.



This page was last updated on August 6, 2008, by Robert H. Morelos-Zaragoza.