You are on page 1of 4

Error Control Coding week 6: Concatenated codes

Solutions to problems on product codes: 4.21, 15.1


4.21. Introduction A binary product code is obtained by encoding a block of K2 K1 information symbols row-wise by an (N1 , K1 , dmin 1 ) binary linear block code C1 and then encoding the obtained K2 N1 block column-wise by a (N2 , K2 , dmin 2 ) code C2 . We can interchange the order of encoding and the result will not change (we will prove this). The resulting codewords of the product code are the blocks of N2 N1 symbols. If the component encoders are systematic, the structure of the codeword is as shown in Figure 1. Here, we assume that with systematic encoding, the information bits appear on the rst K positions of a codeword, and the remaining N K symbols are the parity checks.

K1 C1 parity checks

K2

information bits

N2

C2 parity checks N1
Figure 1: Codeword of a product code, with systematic encoding The encoder of a product code does not necessarily have to be systematic. If we perform non-systematic encoding row-wise and column-wise, we still get the same product code, only the mapping specied by the encoding rule has changed. Note that this kind of code is in fact serial concatenation of component codes C1 and C2 , with a block interleaver in between, as shown in Figure 2. A block interleaver is a buer of size K2 N1 , into which the encoded symbols of C1 are written row-wise, and then they are read column-wise to be encoded by C2 .
outer code C1 block interleaver K2 N 1 inner code C2

Figure 2: Serial concatenation of block codes with the block interleaver

Error Control Coding week 6: Concatenated codes

In the systematic codeword from Figure 1, the shaded block in the lower right corner contains the (N2 K2 ) (N1 K1 ) symbols that are parity checks of parity checks. We will show that they can be obtained either from parity check rules of C2 applied on columns, or as parities of C1 applied row-wise.

If this parity block is simply omitted from the codeword, we obtain the so called incomplete product code whose codewords have size N2 N1 (N2 K2 )(N1 K1 ) symbols, as shown in Figure 3. This code has higher rate (less redundancy is added to the information block) but worse minimum distance than the original product code.

K1

K2

information bits

C1 parity checks
C1 C2

N2

C2 parity checks N1
Figure 3: Codeword of an incomplete product code, with systematic encoding Now note that this incomplete product code is nothing else but parallel concatenation of component codes C1 and C2 , with a block interleaver (of size K2 K1 ), as shown in Figure 4. The information symbols are written in the buer (interleaver) and encoded row-wise by C1 and column-wise C2 .

block interleaver K2 K 1

Figure 4: Parallel concatenation of block codes with the block interleaver Now we are ready to solve the Problem 4.21. Here, we assume that a systematic form of the generator matrix of an (N, K) block code is such that the information bits appear unchanged on rst K positions in the codeword, and the parity checks specied by the K (N K) matrix P appear last. Gsys = [I K | P ]

Error Control Coding week 6: Concatenated codes

Problem solution Let U be the K2 K1 matrix of information symbols to be encoded. Assume we perform row-encoding rst. Then, every row ui of U is rst encoded by C1 as v i = ui G1 = [ ui | pi ], i = 1, ..., K2 or, in matrix notation, we can write v1 v2 V 1 = . = U G1 = U [ I K1 | P 1 ] = [ U | U P 1 ] . . v K2

V 1 is K2 N1 block of codesymbols which are the result of the row-wise encoding. Now, we perform column-wise encoding of V 1 by C2 . The rst K1 columns of V 1 are columns of U . Reading the columns of the matrix is equivalent to transposing the matrix and then reading the rows. Hence, the result of encoding U column-wise is an N2 K1 matrix V 2 such that T U V T = U T G2 = U T [ I K2 | P 2 ] = [ U T | U T P 2 ] = 2 P TU 2 So far, we have established the following structure of the product-code codeword: U UP 1

P TU 2 The last step is to ll in the lower right corner with the parity checks and show that we obtain the same result if we do it column-wise with C2 or row-wise with C1 . When we encode column-wise with C2 , encoding columns of U P 1 results in T UP 1 (U P 1 )T G2 = (U P 1 )T [ I K2 | P 2 ] = [ (U P 1 )T | (U P 1 )T P 2 ] = . P TU P 1 2 Hence, we conclude that the lower right-hand side block equals P T U P 1 . 2 If we construct this block by encoding the block P T U row-wise by C1 we get 2 The obtained parity-check block P T U P 1 coincides with the previous result, 2 which concludes our proof. P T U G1 = P T U [ I K1 | P 1 ] = [ P T U | P T U P 1 ] 2 2 2 2

Error Control Coding week 6: Concatenated codes

The complete structure of the systematic product-code codeword V is

UP 1

P TU 2

P TU P 1 2

Every row of V is a codeword of C1 and every column is a codeword of C2 . 15.1. In a codeword of the product code considered in the previous example, every non-zero row has to have at least dmin 1 ones (because every row is a codeword of C1 (N1 , K1 , dmin 1 ) code). Similarly, every non-zero column has to contain at least dmin 2 ones. Thus, the total number of ones, which is the Hamming weight of the codeword has to be w dmin 1 dmin 2 The minimum distance dmin of the overall code is the smallest weight w of all non-zero codewords. Since the above inequality holds for all w, it also holds for w = dmin . Hence, dmin dmin 1 dmin 2 . In fact, we have that the minimum distance is precisely dmin = dmin 1 dmin 2 , and the codeword with weight w = dmin is obtained in the following way: choose one codeword from C1 of weight dmin 1 and choose one codeword from C2 of weight dmin 2 . Then, form the codeword of the product code as N2 N1 array in which all the columns corresponding to zeros in the dmin 1 -codeword from C1 are all-zero-columns, and all other columns, corresponding to the ones in the dmin 1 -codeword from C1 are the equal to the dmin 2 -codeword from C2 .

You might also like