Basic Algorithm Program Listing
Viterbi Decoder Implementation
For More Information On This Product,
Go to: www.freescale.com
A-7
;***********************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 begining.
;
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 reg's
;
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
;
;******************************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
;
do
#NUMINPUTS/8/2,TRCBK
move
x:(r0+n0),a
extractu x0,a,b
lua
(r0-NUMSTATES),r0
move
b0,n0
move
a1,x1
move
x:(r0+n0),a
extractu x0,a,b
lua
(r0-NUMSTATES),r0
move
b0,n0
lsl
#8,a
or
x1,a
move
a1,y:(r2)-
TRCBK
endm
;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
;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
;once for each byte pair
;recall last path
;get ptr to next earlier path
;point r0 to next earlier states
;save ptr as offset
;save out byte in x1
;do it all again!
;move to upper byte
;or in last byte to get 16 bit word
;store result
Example A-1
Basic 16-Bit Implementation of a Viterbi Decoder (Continued)
F
Freescale Semiconductor, Inc.
n
.