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

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

Отправлено TImattU 09 февраля 2006 г. 12:42
В ответ на: Могу предложить такую идею (+) отправлено <font color=gray>homekvn</font> 09 февраля 2006 г. 12:13

Спасибо, проверим. Но судя по вычислениям, обход массива займёт не больше времени, чем обсчитывание "В лоб" по следующему алгоритму:
n=1234 - число
hun = n*0.001 = 1.234 = 1;
dec = n*0.01-(hun<<4)*10/16 = 12.34-10 = 2.34 = 2
uni = n*0.1-(hun<<7)*100/128-(dec<<4)*10/16 = 123.4-1*100-2*10 = 3.4 = 3 (округление отсечением)
dci = n-(hun<<10)*1000/1024-(dec<<7)*100/128-(uni<<4)*10/16 = 1234-1*1000-2*100-3*10 = 4
Вроде бы нормально, но, получаются иногда числа равные 10 и приходитсяч переносить результат в следующий разряд. Коэффициенты 1000/1024 и подобные заданы в виде чисел во Fractional формате и в выражении вычисляются с помощью MPY - ев.
выглядит примерно так:
...
move.w A1,X:(R0+3) ;hun=A1
asll.w #4,A ;A1=hun<<4
move.w #-20480,X0 ;X0=-10/16
mpy X0,A1,B ;B1=(hun<<4)*-10/16
move.w #327,X0 ;X0=0.01
mac Y1,X0,B ;B1=n*0.01-(hun<<4)*10/16
move.w B1,X:(R0+2) ;dec=B1
asll.w #4,B ;dec=dec<<4
move.w #-20480,X0 ;X0=-10/16
mpy X0,B1,B ;B1=-(dec<<4)*10/16
move.w #3276,X0 ;X0=0.1
mac Y1,X0,B ;B=-(dec<<4)*10/16+number*0.1
asll.w #3,A ;A1=hun<<7 ;4+3
move.w #-25600,X0 ;X0=-100/128
mpy A1,X0,A ;A1=-(hun<<7)*100/128
add A,B ;B1=A1+B1
move.w B1,X:(R0+1) ;uni=B1
asll.w #4,B ;B1=uni<<4
move.w #-20480,X0 ;X0=-10/16
mpy B1,X0,A ;A1=-(uni<<4)*10/16
move.w X:(R0+2),B1 ;B1=dec
asll.w #7,B ;B1=dec<<7
move.w #-25600,X0 ;X0=-100/128
mac B1,X0,A ;A1=-(uni<<4)*10/16-(dec<<7)*100/128
move.w X:(R0+3),B1 ;B1=hun
asll.w #10,B ;B1=hun<<10
move.w #-32000,X0 ;X0=1000/1024
mac B1,X0,A ;A1=-(uni<<4)*10/16-(dec<<7)*100/128-(hun<<10)*1000/1024
add Y1,A ;A1=n-(uni<<4)*10/16-(dec<<7)*100/128-(hun<<10)*1000/1024
move.w A1,X:(R0) ;dci=A1


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

Ответы


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

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

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

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

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


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru