Turbo codes are basically just Hamming codes applied
to both rows and columns of data.
-
First, make a matrix of data with x columns of data bits in x rows; in other
words use the same number of rows of data as there are columns in each row.
-
Next, add extra check bits to the right of each row of data just as you would
for a standard Hamming code.
-
And add extra check bits to the bottom of each column of bits, again using
Hamming codes.
-
Now, fill in the extra check bits to the right of each row of extra check
bits at the bottom. You could calculate those bits from the columns of extra
bits above and you will (or should) get the same answer.
One advantage of this system is reduced sensitivity to burst errors, were
multiple bits are destroyed in sequence. Also, The columns don't have to
be selected in the same order, randomizing the order of the data bits selected
for the second set of check bits can improve response to burst errors.
See also: