BENCHMARK PROGRAMS

;Latest Revision — September 30, 1986

 

 

;

 

 

 

 

 

move

#points/2,n0

;initialize butterflies per group

move

#1,n2

 

 

;initialize groups per pass

move

#points/4,n6

;initialize C pointer offset

move

#-1,m0

 

;initialize A and B address modifiers

move

m0,m1

 

;for linear addressing

move

m0,m4

 

 

 

move

m0,m5

 

 

 

move

#0,m6

 

;initialize C address modifier for

 

 

 

 

;reverse carry (bit-reversed) addressing

;

 

 

 

 

 

;Perform all FFT passes with triple nested DO loop

 

;

 

 

 

 

 

do

#@cvi (@log(points)/@log(2)+0.5),_end_pass

move

#data,r0

 

;initialize A input pointer

move

r0,r4

 

 

;initialize A output pointer

lua

(r0)+n0,r1

 

;initialize B input pointer

move

#coef,r6

 

;initialize C input pointer

lua

(r1)-,r5

 

;initialize B output pointer

move

n0,n1

 

 

;initialize pointer offsets

move

n0,n4

 

 

 

 

move

n0,n5

 

 

 

 

do

n2,_end_grp

 

 

move

x:(r1),X1

y:(r6),y0

;lookup -sine and

 

 

 

 

 

; -cosine values

move

x:(r5),a

y:(r0),b

 

;preload data

move

x:(r6)+n6,x0

 

 

;update C pointer

do

n0,_end_bfy

 

 

mac

x1,y0,b

y:(r1)+,y1

;Radx 2 DIT

 

 

 

 

 

;butterfly kernel

macr

-x0,y1,b

a,x:(r5)+

y:(r0),a

 

subl

b,a

 

x:(r0),b

b,y:(r4)

 

mac

-x1,x0,b

x:(r0)+,a

a,y:(r5)

 

macr

-y1,y0,b

x:(r1),x1

 

 

subl

b,a

 

b,x:(r4)+

y:(r0),b

 

_end_bfy

 

 

 

 

 

move

a,x:(r5)+n5

y:(r1)+n1,y1

;update A and B pointers

move

x:(r0)+n0,x1

y:(r4)+n4,y1

 

_end_grp

 

 

 

 

 

move

n0,b1

 

 

;divide butterflies per group by two

Isr

b

n2,a1

 

;multiply groups per pass by two

IsI

a

b1,n0

 

 

 

move

a1,n2

 

 

 

 

_end_pass

 

 

 

 

 

endm

 

 

 

 

 

 

 

 

 

 

 

Figure B-2 Radix 2, In-Place, Decimation-In-Time FFT (Sheet 2 of 2) Figure B-5 Real Input FFT Based on Glenn Bergland Algorithm (Sheet 1 of 8)

B - 12

BENCHMARK PROGRAMS

MOTOROLA

Page 574
Image 574
Motorola DSP56000, 24-Bit Digital Signal Processor manual Benchmark Programs