Convolutional codes, e. g. comprehensively studied in [LC01], form the second prominent class of channel codes besides block codes. Just like block codes, convolutional codes add redundancy to be robust against transmission errors. With the help of redundancy, an error correction can be performed. In contrast to block codes, convolutional codes are continuously encoding with theoretically infinite code sequence length. Since in practice, however, information is typically transmitted with a finite length, convolutional codes are rather characterized by a variable code sequence length/block length. Thus, convolutional codes can also be interpreted as special block codes. As shown in Fig 4.12, convolutional codes are typically represented by shift registers and modulo two additions. The shift registers spread the information over several parts of the code sequence and thus create redundancy. This operation is equal to a convolution of the info sequence with the impulse
4.2 Convolutional Codes 10 15 20 25 30 35 40 45 50 10−6 10−5 10−4 10−3 10−2 10−1 d in µm BER APP (8, 3, 2) (4, 2, 2, 1) (5, 2, 2) (4, 2, 1) (7, 4, 1) (a) Unnormalized. 10 15 20 25 30 35 40 45 50 10−6 10−5 10−4 10−3 10−2 10−1 d in µm BER (b) T normalized. 10 15 20 25 30 35 40 45 50 10−6 10−5 10−4 10−3 10−2 10−1 d in µm BER (c) T & N normalized.
Figure 4.11:Bit error rate performance of ISI-free encoded transmissions as a function
uc z−1 z−1 z−1 z−1
S/P
xc
Figure 4.12: Shift-register representation of a (4, 1, 4) convolutional code.
response of the code, hence the name convolutional code. The shift registers introduce a memory to the code words in contrast to block codes. Alternatively, a convolutional code can also be described by its generator polynomials. For the example code in Fig 4.12, the generator polynomials are
g0(z) = 1 + z + z4, g1(z) = 1 + z2+ z3+ z4, g2(z) = 1 + z + z2 + z4, g3(z) = 1 + z + z3 + z4.
(4.14)
In general, a distinction is made between recursive and non-recursive convolutional codes. The former have an internal feedback path and can thus also be interpreted as infinite impulse response (IIR) filters. Non-recursive convolutional codes, however, as shown in Fig. 4.12, do not have an internal feedback path and can be interpreted as finite impulse response (FIR) filters. In this dissertation, only non-recursive convolutional codes are considered.
An (nc, kc, Lc) convolutional code encodes in one step kc info bits to nc code bits. Lc is the number of shift registers and equal to the memory. Alternatively to the memory length, the constraint length is often specified, which is typically Lc+ 1. The resulting code rate is R =kc/nc. The example code in Fig. 4.12 is thus a (4, 1, 4) convolutional code
with code rate R =1/4. With finite information length, an info sequence of Kc info bits is encoded to a code sequence of Nc code bits. At the beginning of the encoding, the encoder is typically in the zero state, where the state defines the bit sequence in the shift registers. A performance gain can be achieved if the code sequence is terminated. For this purpose, the encoder must end in a well-defined state (usually the zero state). Therefore, the info
4.2 Convolutional Codes
sequence is extended by Lc tailbits. Since the tailbits do not contain any information and represent an overhead, the code rate is reduced to Rtail = RKc/(Kc+Lc). With long code sequences, however, this rate loss is negligibly small. As an alternative to tailbits, tailbiting can be used, where the initial state of the encoder is set equal to the final state. This avoids a rate loss, but leads to increased decoding complexity [Höh11].
For decoding, a convolutional code is typically represented by a trellis diagram with its 2Lc states. A state transition is equal to the k
c info bits and the corresponding nc code bits. Consequently, trellis-based decoders are usually used. In this dissertation, APP decoding is performed using the BCJR algorithm [BC+74], which provides LLRs at its output. The performance of convolutional codes is often estimated by the minimum free distance [LC01], which is equivalent to the minimum distance in block codes. It describes the minimum Hamming distance considering all possible error paths. An error path is a path that deviates from the correct path and remerges again. In general, a larger minimum free distance leads to more powerful convolutional codes.
In contrast to block codes, there are no simple construction rules for designing convolu- tional codes. Powerful codes are typically determined by an exhaustive search. In addition, convolutional codes have usually a low code rate. In order to generate convolutional codes with high code rates, existing codes can be punctured [Tüc04]. Following a certain pattern, some code bits are suppressed, i. e. not transmitted. This generally leads to a reduction of the free distance. The decoder treats the punctured bits as erasures. Puncturing can also be used to provide unequal error protection. For code rate reduction, generator polynomi- als can be repeated. By a combination of puncturing and repetitions, code rates can be achieved flexibly. These newly obtained codes usually show a similar performance as opti- mized convolutional codes with the same code rate [CC+79; YK+84; LP+01]. In addition, the newly designed codes can be decoded using the trellis of the original convolutional code. The original convolutional code is called the mother code.
The first application of convolutional codes in diffusion-based molecular communication is studied in [SL+12; MM+13]. However, a scenario without equalization is considered. As in [DH18], this disseration focuses on the convolutional codes presented in [Tüc04]. From the (4, 1, 4) mother code (equal to the code in Fig 4.12 and (4.14)), 17 subcodes are obtained by puncturing, repeating the generator polynomials and simultaneously maximizing the free distance. The subcodes have code rates from R =1/10to R =9/10in 1/20 steps.
In Section 5.3 these subcodes are used to design an irregular convolutional code (IRCC). By means of IRCC, the info/code word is partially encoded/decoded by the subcodes of different rates. This allows to achieve arbitrary overall code rates and to shape the extrinsic information transfer (EXIT) function of the decoder, which can be advantageous for iterative detection.
Numerical Results
Fig. 4.13 shows the BER performance of convolutional codes at different code rates over the transmission distance. Different normalizations are considered. Compared to the block codes discussed in Section 4.1, the coding gain achieved by the convolutional codes at comparable code rates is in between. The convolutional code achieves a better performance than the simpler repetition code due to the introduced memory in conjunction with APP decoding. However, the LDPC code outperforms the convolutional code by its internal iterative decoding. The comparison to the RA code, which can also be interpreted as a special kind of convolutional code, is mixed. While the R =1/2convolutional code performs even better than the R = 1/2 RA code, the R = 1/4 RA code outperforms the R = 1/4 convolutional code. An advantage of the RA code is its internal iterative decoding. A disadvantage is the short memory length.
Fig. 4.13(a) shows the unnormalized case. In this case, as with the block codes in Section 4.1, the lower the code rate, the more redundancy the convolutional code offers. More redundancy leads to more powerful codes. Consequently, a convolutional code with lower code rate achieve a larger coding gains. With a target BER of 10−3, the maximum transmission distance can be increased from 28 µm to 50 µm with an R =1/4convolutional code. For the R = 1/10 convolutional code, the maximum transmission distance can be increased to 62 µm, which is depicted in Fig. 5.9.
In Fig. 4.13(b), the symbol duration is normalized to the information rate. Consequently, the symbol duration is reduced more strongly for low-rate codes than for high-rate codes. Nevertheless, the additional redundancy of the coding gain dominates the limitation of the symbol duration. Furthermore, all considered convolutional codes lead to a coding gain compared to uncoded transmission. The maximum coding gain at a target BER of 10−3 is achieved by the R =1/10 convolutional code with a maximum transmission distance of 41 µm.
In Fig. 4.13(c), in addition to the symbol duration, the average number of released molecules per info bit is normalized. Here, low-rate codes are more affected by molecule reduction than higher-rate codes as well. If this additional normalization is considered, the
4.2 Convolutional Codes 10 15 20 25 30 35 40 45 50 10−6 10−5 10−4 10−3 10−2 10−1 d in µm BER APP R=9/10 R =1/2 R=1/4 R=1/10 (a) Unnormalized. 10 15 20 25 30 35 40 45 50 10−6 10−5 10−4 10−3 10−2 10−1 d in µm BER (b) T normalized. 10 15 20 25 30 35 40 45 50 10−6 10−5 10−4 10−3 10−2 10−1 d in µm BER (c) T & N normalized.
Figure 4.13: Bit error rate performance of convolutional encoded transmissions as a
limitations of the normalizations outweigh the positive effect of the gained redundancy. Consequently, high-rate convolutional codes in Fig. 4.13(c) perform better than low-rate convolutional codes. In comparison to uncoded transmission, only high-rate convolutional codes lead to a gain. The R =9/10 code can increase the maximum transmission distance by about 1 µm at a target BER of 10−3. For lower BER, this gain is even larger.