AN2072 Freescale Semiconductor / Motorola, AN2072 Datasheet - Page 19

no-image

AN2072

Manufacturer Part Number
AN2072
Description
AN2072, Decision Feedback Equalizer for StarCore-Based DSPs
Manufacturer
Freescale Semiconductor / Motorola
Datasheet
end_loop_d:
;****End loop_a
3.4.2 Back Substitution Algorithm
Back substitution is part of the Cholesky factorization routine, which takes the result of the Cholesky factored
matrix and performs a back substitution solving a set of linear equations to get the final solutions for the optimum
feed-forward and feedback taps. This section explains how the back substitution was implemented on the SC140
core by comparing the assembly implementation with its corresponding Matlab implementation presented in Code
Listing 2.
LOOP 1 (Refers to LOOP 1 of Matlab code in Code Listing 2)
Freescale Semiconductor
1.
[ mac d0,d4,d6
moves.2f d10:d11,(r4)+n0
]
mac d1,d5,d6
[ sub d6,d2,d10
move.2f (r0)+n0,d2:d3
clr d6 clr d7
]
loopend2
mac d1,d5,d6
adda #N_1,CURRENT_COL,CURRENT_COL
adda #N_0,BASE_COL,r1adda #N_0,BASE_COL,BASE_COL
;****End loop_c******
end_loop_c:
sub #1,d8
loopend0
The column corresponding to the maximum value in the diagonal of Matrix A (the lower triangular
Cholesky factor) is located. This gives the location of the optimum feedback filter coefficients, and its
index gives the optimum decision delay. Locating the index with the maximum diagonal value in the
Cholesky factored matrix is done by the assembly routine find_max.asm and is explained in Section
3.4.3, Finding the Optimum Delay, on page 23.
loopend1
adda #N_1,BASE_ROW,r0 adda #N_1,BASE_ROW,BASE_ROW
Decision Feedback Equalizer for StarCore™-Based DSPs, Rev. 1
mac d0,d5,d7
mac -d1,d4,d7
sub d7,d3,d11
move.2f (r1)+n0,d4:d5
mac -d1,d4,d7
adda #N_1,CURRENT_COL,r0
; d6 & d7 = Re & Im
; [A(i,k)*conj(A(j,k))]
; d10=Re(A(i,j))
; d11=Im(A(i,j))
; move d10,d11 in to memory
;r0->r0+$30 and r1->r1+$30
; end of for loop j
; NOTE Taking -d1
; implements the conj operation
;*****End loop_d
; moves.2f d10:d11,(r4)+n0
; CURRENT_COL=CURRENT_COL+$34
; k_COL=BASE_COL+$30
; r1->BASE_COL , r0->CURRENT_COL
; r0->r0+$34,BASE_ROW->
; BASE_ROW+$34
; d8=d8-1 (counter) r0->BASE_ROW
; (r0 points to the next col. and
; BASE_ROW contains the start
; address for that col.
; end loop_a
Implementation of the Algorithm
19

Related parts for AN2072