English
Language : 

AN2407 Datasheet, PDF (25/48 Pages) Freescale Semiconductor, Inc – Reed Solomon Encoder/Decoder on the StarCore SC140/SC1400 Cores, With Extended Examples
References
doen3 #N/4
dosetup3 LOOP_ON_BLOCK
; N = length of vector
move.l #_bin_2_exp,d0
[ clr d1
clr d5
tfra r10,r8
]
clr d3
clr d7
move.l (r0)+,d2
first 4 vector entries -> d2
[ asrr #8,d2
tfr d0,d14
]
insert #8,#1,d2,d1
; 2 x 1-st vector entry -> d1
[ asrr #8,d2
add d0,d1,d1
]
insert #8,#1,d2,d3
; 2 x 2-nd vector entry -> d3
; 1-st table index ->d1
[ asrr #8,d2
add d14,d3,d3
move.l d1,r3
]
insert #8,#1,d2,d5
; 2 x 3-rd vector entry -> d5
; 2-nd table index ->d3
; 1-st table index -> r3
[ add d14,d5,d5
move.l d3,r4
]
insert #8,#1,d2,d7
; 2 x 4-th vector entry -> d7
; 2-nd-st table index -> r4
[ add d14,d7,d7
move.l d5,r5
]
; 4-th table index -> d7
; 3-rd table index -> r5
; Main loop. Here, the table lookups are done."i" is the index of the iteration,
; ranging from 0 to #N/4-1.
loopstart3
LOOP_ON_BLOCK
[ clr d1
clr d5
move.l (r0)+,d2
]
clr d3
clr d7
move.l d7,r6
; clear d1,d3,d5,d7
; vector entries [5,6,7,8+i]-> d2
table index[4+i] -> r6
[ tfr d14,d0
asrr #8,d2
move.w (r3),d4
]
insert #8,#1,d2,d1
move.f (r4),d6
; copy #_bin_2_exp to d0
; vector entry [6+i] -> d2 2 x vector entry[5+i] -> d1
; result[1+i] -> d4
result[2+i] -> upper portion of d6
[ asrr #8,d2
add d0,d1,d1
move.w (r5),d0
]
insert #8,#1,d2,d3
eor d6,d4
move.f (r6),d6
; vector entry [7+i] -> d2 2 x vector entry[6+i] -> d3
; table index[5+i] ->d1 unify result[1+i] and result[2+i] into d4
; result[3+i] -> d0
result[4+i] -> upper portion of d6
Reed Solomon Encoder/Decoder on the StarCore™ SC140/SC1400 Cores, With Extended Examples, Rev. 1
Freescale Semiconductor
25