
Decoding Style
- Definition:
Choosing the decoding style determines
how the trace back mode will be handled The Workshop allows you to choose one of three
different methods: "Tailing", "Block", or "Continuous". The
Viterbi algorithm works similarly on all three methods but the progression through the
trellis is different for each.Tailing decoding is
thus named because zeros are added at the tail of segments of the message stream to force
the encoder back to the zero state. In other words, a block length is defined (you choose
it in the Block/Trace Lengthfield) and when the message
stream is being prepared for transmission it is broken up into blocks of this length and
zeros are added at the end of each block. Enough zeros must be added to return the encoder
back to the zero state. How many zeros that is depends on the code. You need to add as
many zeros as the maximum number of delays in the transfer function matrix for any one
message word bit.The advantage of this method is that the decoder always knows what state
the trace back through the trellis starts and stops in for every block, it's the zero
state. This means that the transmission of a block is independent of the transmission of
all other blocks. The disadvantage of this is that you sacrifice some data rate by adding
the zeros.
- Block decoding
is named as such because the decoding is done with multiple "blocks". You define
the length of a block in the Block/Trace Length field. With
this decoding style, the message does not need to be preprocessed before transmission.
Neither does the decoder need to know where the boundaries of a block are, or what state
to start in. The decoder calculates the path measures in the forward direction for two
blocks worth of trellis sections. The trace back starts at the state with the best path measure and follows the reverse path through the
trellis on the surviving branches for one whole block(trace) length before the message
estimates are considered valid. The next block back in the trace is then decoded all at
once. The reason for tracing back a block before decoding is explained in detail in the Block/Trace Length documentation page. The one disadvantage to
this method is that if the block length is long, as it may well need to be to ensure convergence of the paths, then there is up to a full two block
delay before the message estimate is decoded.
- Continuous decoding is
nearly identical to Block decoding but the two block delay is avoided at the cost of more
processing. Instead of decoding a whole block's worth of message word estimates after
tracing back a block's worth of trellis sections, the algorithm just decodes one message
word estimate. So each trace back procedure spans one block's worth plus one trellis
section. Therefore, the delay between when a word is received and decoded is (T+1) as
compared to the (2T) delay in Block decoding, where T is the trace back length. However,
since (T+1) trellis sections are traced back for every one section decoded, there is a lot
more computation involved.
Usage:
The best way to understand the
differences between these two variations is to try simulations with each of the three
different styles. Here are some helpful hints about what to expect with the three
different styles for a set Trace Length of (T) trellis sections.For Tailing
decoding, the algorithm will compute the path measures in the forward direction for T
trellis sections. It will then start a trace back at state zero and decode the message
word estimates immediately as it progresses in the reverse direction through the same T
trellis sections.
In Block
decoding, the algorithm will compute the path measures in the forward direction for T
trellis sections before tracing back, except at startup when it will need to compute the
path measures for the first 2T sections first. It will then start a trace back at the
state with the best path measure. It will trace back T
trellis sections without decoding the message estimate. This is the time allowed for the
different paths to converge. It continues the trace back
along the next T trellis sections but now decoding the message estimates as it goes. You
will notice when tracing back that the "Decoded:" word in the Small Trellis Diagram is "Not Ready" until the
algorithm has traced back T sections.
In Continuous decoding
the algorithm will compute the path measures in the forward direction for one trellis
section, again except at startup when it will need to do the forward computation for the
first (T+1) sections. Then it will trace back as in "Block" decoding for T
trellis sections while not decoding anything. Then it will decode the next section.