This page contains pointers 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.