
Expanding the Viterbi Algorithm
Traceback: Obtaining the Decoder Output
Viterbi Decoder Implementation
For More Information On This Product,
Go to: www.freescale.com
3-15
For each path stored, then, we start by reading in the path. We move the path 5 bits to
the right, so that A1 has the byte of path data to store right aligned. We mask off all but
the 5 rightmost bits in B1 to clear the stored path bits. The loop finishes by writing both
the path data to be stored and the updated path for the path metric.
The macro finishes by setting r5 for use in the next butterfly, as well as updating N0 to
point to the next page of stored path data during the next storage interval.
Example 3-4
Traceback Output Path Code Listing
;***********************TRACEBACK OUTPUT PATH MACRO*******************
;
FUNCTION: To output the correct data, we begin at the end. We take the
;
output path of the survivor state (0), and place its associated
;
output path in memory as the last output data byte. Then we use
;
bits 3-7 of that data as an offset pointer to the correct traceback
;
data of the next previous path data memory. We continue this until
;
we have traced the data back to the beginning.
;
INPUTS:
;
n0 should point to memory where the path bits are to be stored
;
r5 should point to the latest path metric for state 0
;
OUTPUTS:
;
Decoder output data in Y memory
;
REGISTERS USED:
;
a,b,y,r0,n0,r2,r5
;
;*********************************************************************
;
;
Store off path data in bytes to avoid overflow in path Registers
;
TRACEBACK macro
;
move
N0,R0
move
#0,n0
move
#DECOUT+(NUMINPUTS/8/2),r2
move
y:(r5),b
move
#-1,m2
move
b1,x:(r0)
move
#$513,x0
;
move
#$501d,x0
;
;*****************BEGIN TRACEBACK*****************************
;
IF (EVEN==0)
move
x:(r0+n0),a
extractu x0,a,b
lua
(r0-NUMSTATES),r0
lsl
#8,a
move
b0,n0
move
a1,y:(r2)-
ENDIF
;
;path ptr to r0
;prep for traceback
;point to end to trace data
;recall last path
;r2 now linear
;save off last path data
;control word for extract, 16 bit
;control word for extract, 24 bit
;recall last path
;bits 3-7 of a1 point to next data
;dec r0 to next earlier state set
;move to upper byte
;load as offset for traceback
;save off
F
Freescale Semiconductor, Inc.
n
.