AN2072 Freescale Semiconductor / Motorola, AN2072 Datasheet - Page 17

no-image

AN2072

Manufacturer Part Number
AN2072
Description
AN2072, Decision Feedback Equalizer for StarCore-Based DSPs
Manufacturer
Freescale Semiconductor / Motorola
Datasheet
loop_a:
loop_b:
move.2f (r0),d2:d3
Freescale Semiconductor
move.l #mult_out,r0
move.l #d_array,r5
move.w #ROW_COL_MULT_MATRIX_SUB1,d8
dosetup0 loop_a
move.l #ROW_COL_MULT_MATRIX_ADD1,n1tfra r0,CURRENT_COL ; n1=Matrix size+1,
tfra r0,BASE_ROWmove.l #ROW_COL_MULT_MATRIX,n0
move.f (r0),d15
loopstart
dosetup1 loop_b
tfr d15,d0 doen1 d8
jsr sqrt_and_invsqrt
clr d1
[ move.f d0,(r5)+
clb d4,d0
]
asrr d0,d4
loopstart1
;-------------------------------------------------------------------------------------;
;This loop multiplies each entry of k th col by 1/sqrt(A(k,k)) and replaces each
;entry of the k th col by the results
;---------------------------------------------------------------------------------------;
mpy d4,d2,d2
asll d0,d2
moves.2f d2:d3,(r0)+n0
a 10 1
a 1 1
a 2 1
a 3 1
a 4 1
a 5 1
a 6 1
a 7 1
a 8 1
a 9 1
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
) a 1 2
) a 2 2
) a 3 2
) a 4 2
) a 5 2
) a 6 2
) a 7 2
) a 8 2
) a 9 2
) a 10 2
(
(
(
(
(
(
(
(
(
(
Decision Feedback Equalizer for StarCore™-Based DSPs, Rev. 1
,
,
,
,
,
,
,
,
,
,
) a 1 3
) a 2 3
) a 3 3
) a 4 3
) a 5 3
) a 6 3
) a 7 3
) a 8 3
) a 9 3
) a 10 3
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
) a 1 4
) a 2 4
) a 3 4
) a 4 4
) a 5 4
) a 6 4
) a 7 4
) a 8 4
) a 9 4
) a 10 4
doen0 #ROW_COL_MULT_MATRIX_SUB1; repeat loop_a Matrix size-1 times
moves.2f d0:d1,(r0)+n0
mpy d4,d3,d3
asll d0,d3
Figure 7. First Step of Iteration 2
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
Code Listing 6. Cholesky
,
) a 1 5
) a 2 5
) a 3 5
) a 4 5
) a 5 5
) a 6 5
) a 7 5
) a 8 5
) a 9 5
) a 10 5
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
) a 1 6
) a 2 6
) a 3 6
) a 4 6
) a 5 6
) a 6 6
) a 7 6
) a 8 6
) a 9 6
) a 10 6
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
) a 1 7
) a 2 7
) a 3 7
) a 4 7
) a 5 7
) a 6 7
) a 7 7
) a 8 7
) a 9 7
) a 10 7
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
) a 1 8
) a 2 8
) a 3 8
) a 4 8
) a 5 8
) a 6 8
) a 7 8
) a 8 8
) a 9 8
) a 10 8
; r0->#mult_out, d8=11 (counter)
; r5->#d_array
; d8=counter for outermost
; loop loop_a
; CURRENT_COL->r0
; BASE_RW->r0 and n0->size Matrix
; Read element A(1,1) from memory
; start for loop_a
; loop_a k=1:Nf+nu-1
; d0=real(diagonal),loop_b 1:Nf+nu-1
; d0=sqrt(real(diagonal),
; d4=1/sqrt(real(A(1,1))
; d_array(i)=sqrt(real(diagonal)
; r0->a(i,i)=sqrt(Re(diagonal)),
; r0->r0+#ROW_COL_MULT_MATRIX($30),
; d0=scale for
; from sqrt_and_invsqrt routine
; repeat loop_b for l=k+1:n
; d4 = d4*scale
; start for loop (loop_b)
; d2=Re[(A(k+1:n,k)]
; d3=Im[A(k+1:n,k)]
; d2=Re[A(k+1:n,k)/A(k,k)]
; d3=Im[A(k+1:n,k)/A(k,k)]
; scale d2 and d3 by scale for
; 1/sqrt(A(k,k))
; move d2 to memory (real result)
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
) a 1 9
) a 2 9
) a 3 9
) a 4 9
) a 5 9
) a 6 9
) a 7 9
) a 8 9
) a 9 9
) a 10 9
(
(
(
(
(
(
(
(
(
(
Implementation of the Algorithm
,
,
,
,
,
,
,
,
,
,
) a 1 10
) a 2 10
) a 3 10
) a 4 10
) a 5 10
) a 6 10
) a 7 10
) a 8 10
) a 9 10
) a 10 10
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
)
)
)
)
) a 5 1 1 ( )
)
)
)
)
) a 10 11
a 1 11
a 2 11
a 3 11
a 4 11
a 6 11
a 7 11
a 8 11
a 9 11
(
(
(
(
(
(
(
(
(
(
,
,
,
,
,
,
,
,
,
,
)
)
)
)
)
)
)
)
) a 10,
) a 5,
;
;
a 1,
a 2,
a 3,
a 4,
a 6,
a 7,
a 8,
a 9,
(
(
(
(
(
(
(
(
(
(
17

Related parts for AN2072