beautypg.com

Motorola DSP96002 User Manual

Page 641

background image

B-122

DSP96002 USER’S MANUAL

MOTOROLA

move #coef,r4

nop

fclr d1 x:(r0)+,d4.s y:(r4)+,d6.s 1 1

do #nsec,loop 2 3

fmpy d4,d6,d0 fadd.s d1,d2 x:(r0)-,d5.s y:(r4)+,d6.s 1 1

fmpy d5,d6,d1 fadd.s d2,d0 d5.s,x:(r0)+ y:(r4)+,d6.s 1 1

fmpy d6,d4,d1 fadd.s d1,d0 y:(r4)+,d6.s 1 1

fmpy.s d6,d5,d2 d0.s,x:(r0)+ y:(r4)+,d4.s 1 1

fmpy d4,d0,d1 fadd.s d1,d2 x:(r0)+,d4.s y:(r4)+,d6.s 1 1

loop

move d2.s,y:output

--- ---

Totals: 8 5N+4

B.1.51

Four Quadrant Trigonometric SINE (CORDIC Algorithm)

page 132,60,1,1
opt mex,cex
tabsize equ 16

org x:0
scale set 1.0
tantab
tanarg set 45.0*3.14159/180.0
dup tabsize
scale set scale*@cos(tanarg)
dc @tan(tanarg)
tanarg set tanarg/2.0
endm

org p:$100
;
; Do argument reduction, input in d6 in degrees
;
move #-180.0,d7.s ;get range min
fadd.x d7,d6 #1.0/360.0,d5.s ;adjust to min, get range
fmpy.x d5,d6,d6 ;reduce range
floor d6,d5 ;get int part
fsub.x d5,d6 #360.0,d5.s ;get frac part, spread
fmpy.x d5,d6,d6 ;spread fraction part to range
fadd.x d7,d6 ;adjust to min
;
; Input angle in d6 in degrees, -180 < d6 < 180
;
fabs.x d6 d6.s,d3.s ;make positive, save sign