why Turbo Code encoder doesn't work if the component codes are recursive but not SYSTEMATIC?

604 Views Asked by At

Doesn't work in my sense is that it will not give a desired performance or in other words doesn't give inter-leaver performance gain?


I know that component codes should be Recursive Systematic Codes. I Knew the reason why it doesn't work if the component codes are Non Recursive. But what is the need for Systematic??


[Editor's comment: I took the liberty of moving this comment by the OP here, because that IMHO shows that he has thought about this. JL]

1

There are 1 best solutions below

3
On BEST ANSWER

A turbo code uses a convolutional code (of, say, rate $\frac{1}{2}$) to create two different codewords $C_1$ and $C_2$ from the given block $D$ of $K$ data bits. Note that $C_1$ and $C_2$ are terminated codewords, that is, input $D$ is followed by zeroes to clear out the encoder buffers, and so the codewords are of length slightly more than $2K$ bits. $C_1$ encodes the block $D$ as is, that is, the information symbols are followed by buffer-clearing zeroes, while $C_2$ encodes a permutation $\pi(D)$ of the data block as the information symbols (also followed by the buffer-clearing zeroes).

Now, if the convolutional code is non-systematic, it is necessary to transmit both $C_1$ and $C_2$ over the channel, and so a little more than $4K$ bits are transmitted to send $K$ information bits over the channel. The effective code rate is thus $\frac{1}{4}$. On the other hand, if the code in use is systematic, then the two codewords are effectively of the form $C_1 = (D, P_1)$ and $C_2 = (\pi(D), P_2)$ where $P_1$ and $P_2$ are the parity bit blocks of slightly more than $K$ bits each. What is transmitted over the channel is effectively $(D, P_1, P_2)$ because it is not really necessary to transmit both $D$ and $\pi(D)$ over the channel. The decoder, who knows the permutation $\pi(\cdot)$, can construct $\pi(D)$ from the received data block. The effective rate is thus $\frac{1}{3}$.

Of course, what the decoder reconstructs is $\pi(\hat{D})$ where $\hat{D}$ is the received data block which may differ from $D$ in a few positions. Now, as the turbo decoding proceeds, the two decoders for the two received words $(\hat{D}, \hat{P}_1)$ and $(\pi(\hat{D}), \hat{P}_2)$ create estimates of the data block $D$ and each uses what the other thinks is the best estimate of the data in improving its own estimate. This "message-passing" is the crux of the turbo decoding algorithm. Of course, all this could be done with nonsystematic codes as well, but it is more complicated, and there is also the rate penalty to be considered.

In short, the reason for using systematic codes is that they offer significantly better code rates than nonsystematic codes.