|
Turbo Code and Soft Decoding Algorithm
Dec 25,2008 00:00
by
admin
Turbo Code and Soft Decoding AlgorithmTurbo EncoderA typical parallel concatenated convolutional (PCC) turbo encoder consists of two (or more) simple constituent recursive convolutional encoders linked by an interleaver (or different interleavers). A block diagram of such an encoder is shown in Fig. 6.13. The interleavers can be random, nonrandom, or semirandom. Figure 6.13. Typical turbo encoder.
The turbo encoder works as follows. Suppose that all
constituent encoders start from the zero state and the first constituent encoder
terminates in the zero state. For user k, the
frame of input binary information bits, denoted by dk =
[dk[0],
..., dk[I – 1], is encoded by the constituent encoders, where
I is the size of the information bit frame. Let
xk[i] = [ Soft Turbo DecoderCorresponding to the turbo encoder in Fig. 6.13, the block diagram of an iterative soft turbo
decoder is shown in Fig. 6.14. The turbo
decoder consists of J MAP decoders. Each MAP
decoder is a slight modification of the MAP decoding algorithm for multiple
turbo codes given in [29, 100]. The signal flow is shown in Fig. 6.14. The deinterleaved LLRs {l1(bk[i])}i of the
kth user's code bits delivered by the SISO
multiuser detector are distributed to the J MAP
decoders as follows. The LLRs of the systematic bits, {l1( Figure 6.14. Soft turbo decoder.
The soft turbo decoder is itself an iterative algorithm. The
jth MAP decoder in the turbo decoder computes the
partial extrinsic information for the systematic bit and the jth parity bit, Denote the LLR of a code bit at the jth MAP decoder as
where
as the partial extrinsic information of bit As before, ai(s) and bi-1(s) can be computed by the following forward and backward recursions, respectively:
where S is the set of all 2n constituent encoder states. The quantity gi is defined as
Note that, by definition,
Then for b
where (6.176) follows
from the fact that b
Substituting (6.178) into (6.169), we have
where the term
For numerical stability, (6.179) and (6.180) should be scaled as computation proceeds, in a manner similar to that discussed in Section 6.3.3. |