beautypg.com

Motorola DSP96002 User Manual

Page 645

background image

B-126

DSP96002 USER’S MANUAL

MOTOROLA

; Input angle in d6 in degrees, -180 < d6 < 180
;
fabs.x d6 d6.s,d3.s ;make positive, save sign
move #90.0,d7.s ;get pi/2
fcmp d7,d6 #180.0,d7.s ;see if greater than 90
fsub.x d6,d7 ffge ;reduce to less than 90
ftfr.x d6,d7 fflt ;transfer if no change
fneg.x d3 ffge ;flip if other quadrant
;
; First quadrant CORDIC trig computation
; Input angle in d7 in degrees
; Output d1=sine, d0=cosine
;
move #tantab,r0 ;point to tangent table
fclr d1 #scale,d0.s ;y=0, x=scale
fclr d5 #45.0,d6.s ;z=0,alp=45
do #tabsize,_cordic
fcmp d5,d7 x:(r0)+,d4.s ;angle < z? get tangent
fneg.x d4 fflt ;yes, rotate cw
fsub.x d6,d5 fflt ;yes, subtract angle
fadd.x d6,d5 ffge ;no, add angle for ccw
fmpy.x d1,d4,d2 ;y*tan
fmpy d0,d4,d2 fsub.x d2,d0 ;x*tan, x’=x-y*tan
fadd.x d2,d1 ;y’=y+x*tan
fscale.x #-1,d6 ;alp=alp/2
_cordic
fcopys.s d3,d0 ;fix sign of tangent
ftfr.s d1,d0 d0.s,d1.s ;exchange d0

←→

d1

fseedd d1,d4 ;d0/d1
ftfr.s d4,d1 ffinf
fneg.s d1 ffinf
fmpy.s d1,d4,d1 #2.0,d2.s
fmpy d0,d4,d0 fsub.s d1,d2 d2.s,d3.s
fmpy.s d1,d2,d1 d2.s,d4.s
fmpy d0,d4,d0 fsub.s d1,d3
fmpy.s d0,d3,d0 ;tangent
end

Program ICycles
Words
Argument Reduction 10 10
Quadrantizing 8 8
CORDIC Algorithm 16 8N+9
Division/Error Check 10 10
---- -------