Figure 5–23. fast logarithm for fft displays – Texas Instruments TMS320C3x User Manual

Page 153

Advertising
background image

Fast Logarithms on a Floating-Point Device

5-48

Figure 5–23. Fast Logarithm for FFT Displays

**************************************************************** *
* FAST Logarithm for FFT displays *
* >>>> NEED ONLY ADD ONE INSTRUCTION IN MANY CASES <<<< *
******************************************************************

||

||

;

MPYF

REAL,REAL,R0

; calculate the magnitude

MYPF

IMAG,IMAG,R1

; Note: sign bit is zero

ADDF

R1,R0

;

ASH

–1,R0

; <–One instruction logarithm!

STR

R0,OUT

; scaled externally in DAC

||

||

;

**********************************************************************
* _log_E.asm DEVICE: TMS320C30 *
**********************************************************************

.global_log_E

_log_E:POP

AR1

; return address –> AR1

POPF

R0

; X –> R0

LDF

R0,R1

; use R1 to accumulate answer

LDI

2,RC

; repeat 3x

RPTB

loop

;

ASH

7,R1

;

LDE

1.0,R0

; EXP = 0

MPYF

R0,R0

; mant^2

MPYF

R0,R0

; mant^4

MPYF

R0,R0

; mant^8

MPYF

R0,R0

; mant^16

MPYF

R0,R0

; mant^32

MPYF

R0,R0

; mant^64

MPYF

R0,R0

; mant^128

PUSHF

R1

; PUSH EXP and Mantissa (sign is now data!)

POP

R0

; POP as ianteger (EXP+FRACTION)

BD

AR1

;

FLOAT

R0

; convert EXP+FRACTION to float

MPYF

@CONST,R0

; scale the result by 2^–24 and change base

ADDI

1,SP

; restore stack pointer

.data

CONST_ADR:

.word CONST

CONST

.long

0e7317219h

;;Base e hand calc w/1 lsb round

.end

Advertising