Appendix B
SISO VLC Decoder
In Chapter 3 we derive the MAP VLC decoder as an inner code, which processes the channel output directly. In the following we derive the APP VLC decoder as an outer code, which processes the extrinsic output of the inner code. We derive the decoding procedure based on the SISO APP module introduced in [254], which was a slightly modified version of the BCJR algorithm [48] and was originally designed for convolutional codes.
The SISO module is a four-terminal device having two inputs and two outputs, as shown in Figure B.1. It accepts as its inputs P(u; I) and P(c; I), namely the probability distributions of the information symbols u and code symbols c labeling the edges of the code trellis, and forms the resultant outputs, P(u; O) and P(c; O), which constitute an update of these distributions based upon the code constraints. These outputs represent the extrinsic information.
Following the notation of [254], the extrinsic information is calculated as follows. At time k the output probability distribution is evaluated as
where e represents a branch of the trellis, and c(e), sS(e), and sE(e) are, respectively, the output symbol, the starting state and the terminating state of the branch e, while k is a normalizing factor that ensures maintaining k(0; O) + k(1; O) = 1. The quantities αk(·) and betak(·) are obtained through the forward and backward recursions [254], respectively,
which can be expressed as
in conjunction with the initial values of α0(s) = 0 and βN(s) = 0 for all states except for the root state, since the trellis always starts and ends at the root state.
In order to incorporate the source information, the branch transition probability in [254] is modified as follows:
where P(e) P(c(e), sE(e)|sS(e)) is the source a priori information associated with the branch transition probability. It is time invariant and determined by the source distribution, which can be calculated with the aid of the state transition probabilities as [249]
where g(n) are all the codeword indices associated with node n in the code tree.
Therefore, the extrinsic information can be extracted by excluding the input probability of Pk(c; I) from the output probability, yielding
where, again, Hk is a normalization factor. To reduce the computational complexity, the above multiplicative algorithm can be converted to an additive form in the log domain. The logarithms of the above quantities are defined as follows:
With the aid of these definitions, the SISO algorithm defined by Equations (B.2), (B.3) and (B.6) can be correspondingly described as follows:
where hk is a normalization constant. The quantities Ak (·) and Bk (·) can be obtained through the forward and backward recursions, respectively, as follows:
with the initial values
For simplicity, we use LLRs instead of probabilities themselves. Therefore, the output extrinsic information in the form of LLRs can be computed as
Correspondingly, the a priori probability Pk(c; I) may also be calculated from the a priori LLR L(ck; I) as
where ηk is independent of the value of ck, and can be canceled out. Hence, the logarithm of the a priori probability may be calculated as