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

Отправлено shenon@yandex.ru 19 октября 2001 г. 16:54
В ответ на: Ответ: отправлено shenon 15 октября 2001 г. 17:08

.MODULE Arctan_Approximation;

{
Arctangent Approximation
y = Arctan(x)

Calling Parameters
MR1 = Integer part of x
MR0 = Fractional part of x
M3 = 1
L3 = 0

Return Values
AR = Arctan(x) in 1.15 scaled format
(-0.5 for -90 degrees, 0.5 for 90 degrees)

Altered Registers
AX0,AX1,AY0,AY1,AR,AF,MY0,MY1,MX1,MF,MR,SR,SI

Computation Time
58 cycles (maximum)
}

.VAR/DM/RAM atn_coeff[5];

.INIT atn_coeff : H#28BD, H#006D, H#EF3E, H#08C6, H#FED4;

.ENTRY arctan;

arctan: I3 = ^atn_coeff; {Point to coefficients}
AY0=0;
AX1=MR1;
AR=PASS MR1;
IF GE JUMP posi; {Check for positive input}
AR=-MR0; {Make negative number positive}
MR0=AR;
AR=AY0-MR1+C-1;
MR1=AR;
posi: SR=LSHIFT MR0 BY -1 (LO); {Produce 1.15 value in SR0}
AR=SR0;
AY1=MR1;
AF=PASS MR1;
IF EQ JUMP noinv; {If input < 1, no need to invert}
SE=EXP MR1 (HI); {Invert input}
SR=NORM MR1 (HI);
SR=SR OR NORM MR0 (LO);
AX0=SR1;
SI=H#0001;
SR=NORM SI (HI);
AY1=SR1;
AY0=SR0;
DIVS AY1,AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0;
DIVQ AX0; DIVQ AX0; DIVQ AX0;
AR=AY0;
noinv: MY0=AR;
MF=AR*MY0 (RND), MY1=DM(I3,M3);
MR=AR*MY1 (SS), MX1=DM(I3,M3);
CNTR=3;
DO approx UNTIL CE;
MR=MR+MX1*MF (SS), MX1=DM(I3,M3);
approx: MF=AR*MF (RND);
MR=MR+MX1*MF (SS);
AR=MR1;
AY0=H#4000;
AF=PASS AY1;
IF NE AR=AY0-MR1;
AF=PASS AX1;
IF LT AR=-AR;
RTS;
.ENDMOD;


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru