A real-time embedded software implementation of a turbo encoder and soft output Viterbi algorithm based turbo decoder

Turbo codes are used for error protection, especially in wireless systems. A turbo encoder consists of two recursive systematic convolutional component encoders connected in parallel and separated by a random interleaver. A turbo decoder, which is iterative, is typically based on either a soft output Viterbi algorithm (SOVA) or a maximum a posteri (MAP) algorithm. MAP is roughly three times more computationally complex than SOVA, but provides 0.5 dB of coding gain. We implement a turbo encoder and SOVA-based turbo decoder in real-time software on a TMS320C6700 digital signal processor (DSP). The contributions of this paper are: (1) first publicly available implementation of a SOVA-based turbo decoder on a C6000 DSP (2) speedup of 162x for the encoder on a C6200 DSP and 11.7x for the decoder on a C6700 DSP over level three C compiler optimization, and (3) dataflow modeling for a turbo channel coding subsystem.