AN2072 Freescale Semiconductor / Motorola, AN2072 Datasheet - Page 23

no-image

AN2072

Manufacturer Part Number
AN2072
Description
AN2072, Decision Feedback Equalizer for StarCore-Based DSPs
Manufacturer
Freescale Semiconductor / Motorola
Datasheet
---------------------
3.4.3 Finding the Optimum Delay
This section describes the assembly routine to find the optimum delay and explains how to implement it on the
SC140 core. A special SC140 instruction, max2, helps implement this type of array search very efficiently. The
max2 instruction finds the maximum number between two sets of 16-bit numbers. However, this assembly routine
requires the size of the input array to be in multiples of eight. In our example there are 12 diagonal values. To
resolve this problem, d_array, which contains all the diagonal values, is first zero padded to make the total size of
the array equal to 16. The max2 instruction then finds the maximum number between two sets of 16-bit numbers.
This routine works as follows:
In the second loop, Loop_2, the global maximum is found from the local maxima. The set containing this global
maxima is then located. This set has only (N
element that is equal to the global maximum. This is accomplished in the third loop, Loop_3.
Freescale Semiconductor
ox2
;------------------------------------------------------------------------------
The vector d_array has N
eight sets:
set #0 contains elements with index - 0,8,16,...
set #1 contains elements with index - 1,9,17,...
set #2 contains elements with index - 2,10,18,...
o
o
o
set #7 contains elements with index - 7,15,23,...
In the first loop, Loop_1, the local maximum value in each of the eight sets is found.
The index of each local maximum is not known at the end of the kernel.
Maximum of set #0 is at d4.l, maximum of set #1 is at d4.h,
Maximum of set #2 is at d5.l, maximum of set #3 is at d5.h,
Maximum of set #4 is at d6.l, maximum of set #5 is at d6.h,
Maximum of set #6 is at d7.l, maximum of set #7 is at d7.h.
]
add #1,d12
loopend0
;NOTE: at the end of kk_loop "start_location" contains the location for
;the last element in v
adda #$4,BASE_ROW
Decision Feedback Equalizer for StarCore™-Based DSPs, Rev. 1
suba #4,r1
f
+ ν elements indexed: 0,1,2,...,(N
adda #$4,BASE_ROW,r2
f
+
ν
+4)/8 elements). Next, we scan the set and locate the index of the
;---------------------------------------------------------
moves.2f d6:d7,(r2)
; move pointer to next address to
; fill up the new value of v
f
+ ν + 4) –1. The vector is divided into
clr d6 clr d7
Implementation of the Algorithm
23

Related parts for AN2072