Error Correction Convolutional Codes - Coding Theory

468 Views Asked by At

This question is regarding convolutional encoders. I have come across an encoder that has a constraint length 7 and a generator polynomial of {133, 171}.

My questions are next.

1- Does this mean that the input to the encoder is a maximum length of 7 bit sequence? Lets assume for now that the D transform of the input sequence is denoted by u(D).

2- Given that the generation polynomial is {133, 171}, can I tell what $G_1(D)$ and $G_2(D)$ is?

3- Is the output of the encoder G(D)*u(D)

Looking forward for your opinion

1

There are 1 best solutions below

1
On BEST ANSWER

This is a $(2,1)$ (nonsystematic) convolutional code meaning that there is one input stream of bits $u(D)$ and two output streams of bits. The output streams are often interleaved into a single bit stream with twice as many bits per unit time as the input stream, but it is best to keep them separate (and at the same bit rate as the input stream) for conceptual reasons.

The input to the encoder can be arbitrarily long; the constraint length of $7$ means that each of the two current output bits of the encoder is a linear combination of the current input bit and $6$ most recent past input bits. The output streams are $G_1(D)u(D)$ and $G_2(D)u(D)$ where $G_1(D)$ and $G_2(D)$ are specified in this case in octal notation: express each digit of $131$ and $171$ as a three-bit binary number, e.g. $131 = 001\vert 011\vert 001$, to get the coefficients of the corresponding generator polynomial e.g. $G_1(D) = 1+D^2+D^3+D^6$ or $G_1(D) = D^6+D^4+D^3+1$ depending on your book's preference for writing polynomials.
Edit in response to OP's query: The connection is as follows $$\begin{matrix} 1 & 0 & 1 & 1 & 0 & 0 & 1\\ 1 & & D^2 & D^3 & & & D^6 \end{matrix}$$ or $$\begin{matrix} 1 & 0 & 1 & 1 & 0 & 0 & 1\\ D^6 & & D^4 & D^3 & & & 1 \end{matrix}$$

The output bit streams are the result of the convolution of the input bit stream with the vector of generator polynomial coefficients (hence convolutional code). In particular, the coefficient $C_{1,N}$ of $D^N$ in $(1 + D^2 + D^3 + D^6)u(D) = C_1(D)$ is $$C_{1,N} = u_N + u_{N-2} + u_{N-3} + u_{N-6}, ~ N = 0, 1, \cdots, \deg(U(D)) + 6.\tag{1}$$ (The bits $u_{-1}, u_{-2}, \cdots, u_{-6}$ needed in $(1)$ for small $N$ are assumed to be $0$). Note that $C_1(D)$ is of degree $\deg(U(D)) + 6$ and thus has $6$ more bits than the input stream $u(D)$. In particular, in applying $(1)$ for $N = \deg(U(D)) + 1, \deg(U(D)) + 2,$ etc., $u_N, u_{N+1}, $ etc. are taken to be $0$.

In engineering terms, there is a (first-in, first-out) buffer or linear shift register that stores the previous $6$ data bits $u_{N-1}, u_{N-2}, \ldots. u_{N-6}$, and the output bit is a linear combination (e.g. as in $(1)$) of these $6$ bits and the current input bit $u_N$. After doing this computation, all the bits in the buffer shift right by one position ($u_{N-6}$ is lost off the right end; we don't need it any more) and the current input bit $u_N$ enters the buffer. For the computation of the next output bit $C_{1,N+1}$, the buffer now contains $(u_N, u_{N-1}, \cdots, u_{N-5})$ and the current input bit is $u_{N+1}$, exactly as described by $(1)$. Thus, the process of computing the last six bits of each of the output streams can be thought of as including pumping in six $0$'s to clear out that buffer. Bear in mind that the next codeword transmission will be assuming that the buffer contains $0$'s to start with (remember $u_{-6} = u_{-5} = \cdots = u_{-1} = 0$??), and so the flushing of the buffer is a necessary housekeeping step. Since the corresponding 12 output bits do have information about the last few data bits, they are included in the previous codeword instead of being discarded.