|
This article focuses on techniques to decode UMTS Turbo codes efficiently using a general purpose DSP processor with MAP (maximum a posterior) decoding algorithm. Since MAP decoding is costly both in terms of memory and in terms of CPU cycles, a window based method is used to reduce the overall memory requirement. To use the processor's maximum bandwidth (both computational and memory access), we compute the forward state metrics, backward state metrics and log likelihood ratio (LLRs) as one group in a loop. With the suggested techniques, computing these three metrics to get one LLR output consumes about 36 cycles on a Blackfin processor.
I. INTRODUCTION
Turbo Codes have attracted great attention in the industry and research communities since their introduction in 1993 because of their remarkable performance. The Turbo Codes operate near (with SNR gap of 0.7dB or less) the ultimate limits of capacity of a communication channel set by Claude E. Shannon [1]. Turbo Codes were first proposed in [2] by Berrou, Glavieux and Thitimajshima. Turbo codes are constructed using two concatenated constituent convolutional coders. In the Turbo Coding scheme, two component codes on different interleaved versions of the same information sequence are generated. On the decoder side, two MAP decoders are used to decode the decisions in an iterative manner. The MAP decoding algorithm uses the received data and parity symbols (which correspond to parity bits computed from actual and interleaved versions of data bits) and other decoder soft output (extrinsic) information to produce more reliable decisions.
In this paper, we discuss efficient implementation techniques to implement a Turbo MAP decoder on ADI Blackfin general purpose fixed point DSP processors. The paper is organized as follows. Section II briefly discusses the computations involved in the Turbo decoder and provides mathematical expressions for computing the three major metrics. Section III discusses practical implementation details of the Turbo decoder. Section IV introduces efficient implementation techniques for the computationally heavy metrics of MAP decoder on Blackfin processor, and provides assembly code. Section V summarizes the major findings and concludes the discussion of this paper.
II. TURBO DECODER
In Turbo decoding, the MAP algorithm is used to determine the most likely information bit that has been transmitted. The MAP algorithm calculates an a posteriori probabilities (APPs) value for each transmitted data bit and then the data bit is decoded by assigning a decision value that corresponds to the maximum a posteriori probability. The MAP algorithm using APPs minimizes the bit error probability (BER) by calculating the LLR for every transmitted bit cn as below.
where Y1N = [y1, y2,…, yN].
The decoded bit is obtained by hard decision as below
In a UMTS turbo decoder, using an eight state RSC encoder trellis, APPs for bit "1" and bit "0" at time n with a received sequence Y1N is obtained by Equation (2) and Equation (3) respectively.

(Click to enlarge)
where αnm, βn+1k, γni are logarithms of αnm, βn+1k, γni respectively, αnm ≈Pr(Y1n-1 | Sn = m) a forward state metric at time n and state m, γni,m ≈Pr(cn = i, Sn = m, Yn), a branch metric at time n and state m and βn+1k = Pr(Yn+1N | Sn+1 = k), a reverse state metric at time n+1 and state k. For each stage, only two branch metrics are needed (as we are using BPSK modulation to transmit bits) and these are computed using the received inputs and intermediate soft outputs of the other decoder. The forward state metrics αnm in Equation (4) are recursively computed (by accumulation as we are in the log domain) with the trellis representation of encoder states (for each stage or time instance n) from time n=0 assuming initial values for α0m as α00 = 0 and α0k = –∞, where 1 ≤ k ≤ 2M - 1 and M is the power of the encoder generating polynomial (1+D2+D3). Similarly, the reverse state metrics βnm in Equation (5) are recursively computed from trellis stage n = N + 1 assuming initial values for βN+1m as βN+10 = 0 and βN+1k = –∞, where 1 ≤ k ≤ 2M - 1. The state metrics αnm and βnm are computed recursively as below.
where b(i,m) is the allowed stage n-1 state value which is connected to state m at stage n and f(i,m) is the allowed stage n+1 state value which is connected to state m at stage n. In computing Alphas, Betas and LLR, we have to compute an equation of the form ez = ex + ey. The approximation for this summation is given by ez = emax(x,y)(1 + e–| x – y| or z = max(x, y) + ln(1 + e–| x – y|. This operator is called the Log-MAP operator. The correction term ln(1 + e–| x – y| is a non-linear function and this contributes up to 0.5 dB gain to MAP decoder performance at low SNR. If we ignore this correction term, the resulting operator z = max(x, y) is called the Max-Log-MAP operator. In this paper, we are considering only the Max-Log-MAP operator in the implementation of the Turbo MAP decoder.
|