[an error occurred while processing this directive]
Logarithm_Approximations
(«Телесистемы»: Конференция 'Цифровые сигнальные процессоры (DSP) и их применение')

миниатюрный аудио-видеорекордер mAVR

Отправлено SVPWM 21 мая 2004 г. 07:00
В ответ на: Быстрый логарифм или быстрая кусочно-линейная интреполяция в 16битах отправлено evgen_k 20 мая 2004 г. 20:02

.MODULE/RAM Logarithm_Approximations;

.PAGELENGTH 58;
.PAGEWIDTH 132;

{
Logarithm Approximations
Y = Ln (X)
Y = Log10 (X)

Calling Parameters
M_MODE = 0
MR1 = integer part of X in twos-complement 16.0 signed format
MR0 = fractional part of X in 0.16 unsigned format
L5 = 0
M5 = 1

Return Values
SR1 = Y (5.11 signed format for Ln; 4.12 signed format for Log10)

Altered Registers
AX0, AY0, AR, MX0, MY0, MR, MF, SE, SR, I5

Computation Time
32 cycles (maximum)
}

.CONST LNX_2 = 0x2C5D, LOG10X_2 = 0x2688;

.VAR/PM/RAM LNX_COEFFS [5];
.VAR/PM/RAM LOG10X_COEFFS [5];

.INIT LNX_COEFFS : 0x7FE300, 0xC14900, 0x249100, 0xEEF800, 0x040400;
.INIT LOG10X_COEFFS : 0x6F1500, 0xC98700, 0x1FC300, 0xF13500, 0x037D00;

.ENTRY LNX, LOG10X;

LNX:
I5 = ^LNX_COEFFS; { Natural Log start here }
MY0 = LNX_2;
JUMP COMPUTE;
LOG10X: I5 = ^LOG10X_COEFFS; { Common Log start here }
MY0 = LOG10X_2;
COMPUTE: SE = EXP MR1 (HI); { Check for redundant bits }
SE = EXP MR0 (LO);
AY0 = SE;
AR = AY0 - 1;
AX0 = 14;
SE = AR, AR = AX0 + AY0; { AR = SE + 14, 16.0 signed format }
SR = NORM MR1 (HI); { Remove redundant bits }
SR = SR OR NORM MR0 (LO);
MR = AR*MY0 (SS); { (SE + 14)*Log10 (2) in 25.15 format }
MY0 = MR1; { Shift left 16 bits to become 9.31 format }
MR1 = MR0;
MR2 = MY0;
MR0 = 0;
AR = SR1 - 0x8000; { Y = X - 1.0 in unsigned 1.15 format }
MY0 = AR;
MF = AR*MY0 (RND), MX0 = PM (I5, M5); { MF = X**2 }
MR = MR + MX0*MY0 (SS), MX0 = PM (I5, M5); { MR = MR + C1*X }
CNTR = 3;
DO APPROX UNTIL CE;
MR = MR + MX0*MF (SS);
APPROX: MF = AR*MF (RND), MX0 = PM (I5, M5);
MR = MR + MX0*MF (RND);
SR = ASHIFT MR2 BY 12 (HI); { Shift to correct format }
SR = SR OR LSHIFT MR1 BY 12 (LO);
RTS;


.ENDMOD;

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru