Convolutional Codes: N, K, M K-N M
Convolutional Codes: N, K, M K-N M
Example
Example (cont.)
Encoding equations
+ ul - 2 + ul - 3
vl(0) = ul
g(1) = (1, 1, 1, 1)
vl(1) = ul + ul - 1 + ul - 2 + ul 3
Or, simplified
v(0) = u * g(0), v(1) = u * g(1)
* is a discrete convolution
In general: v(j) = u * g(j) = i=0..m ul i gi(j) where ul i = 0 for l<i 4
G=
g 00
g 01
g 10
g 1
1
g 20
g 1
2
g m0
g 1
m
g 00
g 1
0
g 10
g 1
1
g 20
g 1
2
g m0
g m1
g 00
g 1
0
g 10
g 1
1
g 20
g 1
2
g m0
g 1
m
a) Encoding of u: v = uG
b) Example (continued): For u = (1 0 1 1 1)
1 1 0 1 1 1 1 1
1 1 0 1 1 1 1 1
v=uG =1 0 1 1 1
1 1 0 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 0 1 1 1 1 1
=1 1 0 1 0 0 0 1 0 1 0 1 0 0 1 1
5
Example: (3,2,1) CC
a) Encoding equations
vl(0) = ul(1) + ul - 1(1) + ul - 1(2)
b) Or, simplified
v(0) = u(1) * g1(0) + u(2) * g2(0)
1 0 1 1 1
0 1 1 1 0
G=
1 0
0 1
1
0
1 1 1 1
1 1 0 0
G0 G1 G 2 G m
G0 G1 G 2 G m
G=
G0 G1 G 2 G m
where
g 1,0l
Gl =
g k,l0
n1
g 1
g
1, l
1, l
n1
g 1
g
k,l
k,l
8
Important definitions
a) Nominal code rate R = k/n
b) Length of ith shift register = i
c) Encoder memory order m = max1ik i
d) The overall constraint length = 1ik i
e) An (n,k,) convolutional code is the set of all output sequences
produced by an (n,k,) convolutional encoder
f) Effective code rate Reff : Input length kL, output length n(L+m),
and Reff = kL / n(L+m) = RL/(L+m)
for i = 0,1
for i = 0,1
for i = 0,1
0
g1 D
1
g1 D
for i=0,1
n1
g1 D
G D =
1
n1
g0
g
D
k
k
k
11
Transform domain:
Relation to constraint length
a) Length of ith shift register: i = max0jn-1 deg gi(j)(D)
12
Systematic encoders
a) An (n,k,m) convolutional encoder is systematic if the first k output
sequences are a copy of the k information sequences
b) All convolutional codes have systematic encoders, but there are codes
that do not have feedforward systematic encoders
G D =
0 0
g1k D g1n1 D
1 0
0 1
g2k D
gkk D
g2n1 D
gkn1 D
IP 0 0P 1 0P 2 0P m
IP 0 0P 1 0P 2 0P m
G=
IP 0 0P 1 0P 2 0P m
13
Transform domain
Starting with a systematic feedforward generator matrix it is easy to
find a parity check matrix for the code:
Thus, for any codeword V(D) = (v(0)(D), v(1)(D), ..., v(n-1)(D)), V(D)HT
(D) = 0(D)
Parity check matrices exist for all convolutional codes (but they are less
straightforward to find)
15
16
Another example,
and another encoder form
1 0 1+D+D 2
G D =
0 1
1+D
H D = D 2 +D+ 1
D+ 1 1
G(D) = [D2 + D + 1, D2 + 1, D + 1]
18