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.