The present invention is a turbo product code decoder capable of decoding
multi-dimensional coding schemes. The decoder may be implemented in any
digital communication system capable of receiving an encoded stream of
data. The decoder is configured for receiving soft decision values. The
decoder iteratively decodes the data by generating new soft difference
values for each axis-iteration of decoding. These soft difference values
represent the change in soft decision values after each axis-iteration.
The soft difference values from each axis-iteration are then summed with
the original soft decision values in decoding each of the other axis.
After any full iteration--i.e. after all axis dimensions have been decoded
one full time, the previous difference values for any axis are discarded
when that axis is decoded in subsequent iterations. Accordingly, the same
information is not continuously fed into the decoder during each
subsequent iteration, thereby decreasing the likelihood of error and
offering an improvement over prior decoders. Moreover, using unique
nearest neighbor computation logic, the decoder of the present invention
is able to generate valid nearest neighbors more efficiently without
requiring the use of a look-up table, thereby reducing the amount of time
required to decode. Finally, the decoder of the present invention utilizes
four decoders arranged in parallel along with a unique memory array
accessing scheme such that multiple rows or columns may be decoded at the
same time, thereby increasing the data throughput time of the decoder over
prior turbo product code decoders.