06.06.2022 Views

B. P. Lathi, Zhi Ding - Modern Digital and Analog Communication Systems-Oxford University Press (2009)

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

828 ERROR CORRECTING CODES

the second message bit 1 enters the register. It enters the register stage dk, and the previous 1

in d1 is now shifted to dk- 1 , where as dk-2 is still 0. The modulo-2 adders now show Vk,1 = 0

and Vk,2 = 1. Hence, the encoder output is 01. In the same way, when the new digit O enters

the register, we have dk = 0, dk- 1 = 1, and dk-2 = 1, and the encoder output is 01.

Observe that each data digit influences N groups of £ digits in the output (in this case

three groups of two digits). The process continues until the last data digit enters the stage

dk .* We cannot stop here, however. We add N - 1 number of Os to the input stream (dummy

or augmented data) to make sure that the last data digit (0 in this case) proceeds all the way

through the shift register, to influence the N groups of v digits. Hence, when the input digits are

11010, we actually apply (from left to right) 1101000, which contains N - 1 augmented zeros

to the input of the shift register. It can be seen that when the last digit of the augmented message

stream enters ch, the last digit of the message stream has passed through all the N stages of

the register. The reader can verify that the encoder output is given by 11010100101100. Thus,

there are in all n = (N + k - 1)£ digits in the coded output for every k data digits. In practice,

k » N, and, hence, there are approximately k£ coded output digits for every k data digits,

giving an rate f/ ::::: 1/£.-r

It can be seen that unlike the block encoder, the convolutional encoder operates on a

continuous basis, and each data digit influences N groups of£ digits in the output.

Code Tree

The process of coding and decoding is considerably facilitated by what is known as the code

tree, which shows the coded output for any possible sequence of data digits. The code tree for

the encoder in Fig. 14.5 with k = 5 is shown in Fig. 14.6. When the first digit is 0, the encoder

output is 00, and when it is 1, the output is 11. This is shown by the two tree branches that

start at the initial node. The upper branch represents 0, and the lower branch represents 1. This

convention will be followed throughout. At the terminal node of each of the two branches,

we follow a similar procedure, corresponding to the second data digit. Hence, two branches

initiate from each node, the upper one for O and the lower one for 1. This continues until the

kth data digit. From there on, all the input digits are O (augmented digit), and we have only one

branch until the end. Hence, in all there are 32 ( or 2 k ) outputs corresponding to 2 k possible data

vectors. The coded output for input 11010 can be easily read from this tree (the path shown

dashed in Fig. 14.6).

Figure 14.6 shows that the code tree becomes repetitive after the third branch. This can

be seen by noting that the two blocks enclosed in the dashed lines are identical. It means that

the output from the fourth input digit is the same whether the first digit was 1 or 0. This is

not surprising, since when the fourth input digit enters the shift register, the first input digit

is shifted out of the register and ceases to influence the output digits. In other words, the data

vector lx1 x2x3x4 • • • and the data vector Ox1 x2x3x4 • • • generate the same output after the third

group of output digits. It is convenient to label the four third-level nodes (the nodes appearing

at the beginning of the third branch) as nodes a, b, c, and d (Fig. 14.6). The repetitive structure

begins at the fourth-level nodes and continues at the fifth-level nodes, whose behavior is similar

to that of nodes a, b, c, and d at the third level. Hence, we label the fourth- and fifth-level

nodes also as either a, b, c, or d . What this means is that at the fifth-level nodes, the first two

data digits have become irrelevant; that is, any of the four combinations (11, 10, 01, or 00) for

the first two data digits will give the san1e output after the fifth node.

* For a systematic code, one of the output digits must be the data digit itself.

t In general, instead of shifting one digit at a time, b digits may be shifted at a time. In this case ry ::::c h//l,.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!