Motorola DSP56000 Manual: B-5 Real Input Fft Based On Glenn Bergland Algorithm

24-bit.

;Latest Revision — September 30, 1986
;
move
move
move
move
move
move
move
move
;
;Perform all FFT passes with triple nested DO loop
;
do
move
move
lua
move
lua
move
move
move
do
move
move
move
do
mac
macr
subl
mac
macr
subl
_end_bfy
move
move
_end_grp
move
Isr
IsI
move
_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
#points/2,n0
;initialize butterﬂies per group
#1,n2
;initialize groups per pass
#points/4,n6
;initialize C pointer offset
#-1,m0
;initialize A and B address modiﬁers
m0,m1
m0,m4
m0,m5
#0,m6
;initialize C address modiﬁer for
;reverse carry (bit-reversed) addressing
#@cvi (@log(points)/@log(2)+0.5),_end_pass
#data,r0
;initialize A input pointer
r0,r4
;initialize A output pointer
(r0)+n0,r1
;initialize B input pointer
#coef,r6
;initialize C input pointer
(r1)-,r5
;initialize B output pointer
n0,n1
;initialize pointer offsets
n0,n4
n0,n5
n2,_end_grp
x:(r1),X1
y:(r6),y0
x:(r5),a
y:(r0),b
x:(r6)+n6,x0
n0,_end_bfy
x1,y0,b
y:(r1)+,y1
-x0,y1,b
a,x:(r5)+
b,a
x:(r0),b
-x1,x0,b
x:(r0)+,a
-y1,y0,b
x:(r1),x1
b,a
b,x:(r4)+
a,x:(r5)+n5
y:(r1)+n1,y1
x:(r0)+n0,x1
y:(r4)+n4,y1
n0,b1
;divide butterﬂies per group by two
b
n2,a1
;multiply groups per pass by two
a
b1,n0
a1,n2
BENCHMARK PROGRAMS
;lookup -sine and
; -cosine values
;update C pointer
;butterﬂy kernel
y:(r0),a
b,y:(r4)
a,y:(r5)
y:(r0),b
;update A and B pointers
MOTOROLA