Trellis Based Decoding of Linear Block Codes
Trellis Based Decoding of Linear Block Codes
1
Branch complexity
• Let Ii=2 if there is an information symbol corresponding to
output bit i, Ii =1 otherwise.
• Then the branch complexity is the number of one-symbol branches
= the number of additions in the Viterbi algorithm
= Na = i=0...n-1 Ii 2i
• Let Ji=0 if there is only one branch entering each state at time i, Ji= 1
otherwise
• Then the number of comparisons in the Viterbi algorithm
= Nc = i=0...n-1 Ji 2i+1
Example: (8,4) RM
Na = 44
Nc = 11
2
Trellis sectionalization
• Sectionalization combines adjacent bits and provides a trellis with
fewer time instances, in order to simplify the decoders.
• Let ={t0, t1,…,t}, for n. Delete all state spaces (and their
adjacent branches) at time instances not in , and connect every pair
of states, one in tj and one in tj+1, iff there were a path between these
states in the original trellis, label the new branches by the old path
labels.
• A set of parallel paths forms a composite branch
3
Sectionalization: Example
5
Complexity of sectionalized trellis decoding
• Depends on choice of section boundaries
• Optimal sectionalization: Minimum number of
additions+comparisons (Lafourcade & Vardy)
(x,y)= number of computations to calculate section from time x to
time y
min(x,y)= minimum number of computations to calculate section
from time x to time y
min(0,y)=min{ (0,y) , min0<x<y{min(0,x) + (x,y)} }
• Algorithm:
• Calculate (x,y) for 0x<yn
• Use these values to calculate min(0,y) for successive values of y
6
Example
7
Recursive ML decoding
• Sectionalized trellis
• Recursive combining of the path metrics
• Start with minimal trellis for an (n,k) block code
• Consider state sx at time x and state sy at time y
• L(sx,sy) is the set of parallel branches from sx to sy (forming one
composite branch)
• L(sx =zero state ,sy =zero state ) is a linear block code Cx,y
• Each L(sx,sy) is a coset of Cx,y , that is a coset in px,y(C) /Cx,y
• The number of distinct such sets is
= 2k(px,y(C))-k(Cx,y)
• So each coset appears (Chapter 9)
= 2k - k(C0,x) - k(Cy,n) - k(px,y(C)) times as a composite path
8
Composite Path Metric Table
• For each distinct L(sx,sy), store in CPMTx,y
• Label: Best path within composite branch, l(L(sx,sy))
• Metric: The metric of the best path, m(L(sx,sy))
• Eventually, CPMT0,n will contain just one path
• Construct CPMTx,y by
1. For small y-x: Compute metrics for each path in composite path.
This requires 2k(Cx,y)(y-x-1) additions 2k(Cx,y)-1 comparisons
= 2k(Cx,y)(y-x) – 1 operations.
2. For larger y-x : Recursively, i. e. from CPMTx,z and CPMTz,y
9
Recursive MLD (continued)
• Per L(sx,sy) :
• Direct: 2k(Cx,y)(y-x) – 1
• Recursively: (2z -1) = 2(2k(Cx,y) - k(Cx,z) - k(Cz,y)-1) – 1)
• Recursive computation significantly faster if k(Cx,z) and
k(Cz,y) are large.
11
Computation
• Instead of forming the trellis section Tx,y from the complete trellis:
• Construct the special trellis T({x,z,y,nx,y}):
13
Optimum Sectionalization
• Lafourcady-Vardy algorithm applied to RMLD
14
Complexity comparisons
15
Humble remark
• First such algorithm devised in [14,15]
• But...
• Similar algorithm for convolutional codes in
– Marianne Fjelltveit and Øyvind Ytrehus. On Viterbi decoding of
high rate convolutional codes. In Abstracts of Papers of the 1994
IEEE International Symposium on Information Theory,
Trondheim, 1994.
– Marianne Fjelltveit and Øyvind Ytrehus. Two-step trellis
decoding of partial unit memory convolutional codes. IEEE
Transactions on Information Theory, IT-43:324–330, January
1997.
16
Suggested exercises
• 14.1-14.5
17