Soft Decision Decoding of Linear Block Codes

This page contains links to several programs in C and Matlab for simulating soft-decision decoding procedures of  linear block codes. These are discussed in Chapter 6 of the book.

Soft-decision decoding of a first-order RM code with the Green machine:

Careful examination of this decoding algorithm reveals that this is exactly the same as trellis decoding of this block code!

Soft-decision decoding of a first-order RM code with the type-II Chase algorithm:

Soft-decision decoding of a binary linear code with the ordered statistics decoding (OSD) algorithm: Binary transmission over an AWGN channel

ORDER=0 osd_order0.c order0.c
ORDER=1 osd_order1.c order1.c
ORDER=2 osd_order2.c order2.c
ORDER=3 osd_order3.c order3.c
ORDER=4 osd_order4.c order4.c
ORDER=5 osd_order5.c order5.c

The OSD simulation programs for order N (N=0..5) should be compiled together:

gcc -O2 osd_orderN.c orderN.c -lm

Whenever the code parameters change, the file "def.h" needs to be modified . See also the README file.

NOTE: Marc Fossorier has shown that for binary transmission over an AWGN channel, reprocessing order equal to D/4 achieves practically optimum MLD performance for a block code of minimum distance D.

Also, note that it is possible to make a single file with the reprocessing order as a parameter in the routine...

The generator matrix of the code is needed as input in the simulation. For binary BCH codes of length up to 128, generator matrices can be found at


Simulation of Viterbi decoding of a (5,4,2) SPC code using its syndrome trellis:



This page was last updated on June 16, 2023, by Robert H. Morelos-Zaragoza.