MBedder, терминатор (12.05.2008 16:36, просмотров: 265) ответил Dany на Нужно производить первичную обработку данных, поступающих со скоростного(105к в сек) 24 разрядного АЦП. Плавающая точка является запасом, потому как конечный алгоритм обработки пока не ясен. Для начала хочется проверить время вычисления
32-битный целый МАС (Multiply - Accumulate), который 1:1 представляет твоя формула res3+=res1*res2, даже с 64-битным результатом выполнится даже на PIC24H за 0.575 мкс на 40 МИПС. А на dsPIC33F при 40-битном результате можно еще почти вдвое урезать
;--------------------------------------------------------
; long long Z += long X * long Y
;
; X = w1w0
; Y = w3w2
; Z = w7w6w5w4
;
; 19 code words, 23 clock cycles (0.575 uS @40 MIPS)
;
MAC32:
push.d w8
mul.ss w2,w0,w8
add w8,w4,w4
addc w9,w5,w5
addc w6,#0,w6
addc w7,#0,w7
mul.ss w3,w0,w8
add w8,w5,w5
addc w9,w6,w6
addc w7,#0,w7
mul.ss w2,w1,w8
add w8,w5,w5
addc w9,w6,w6
addc w7,#0,w7
mul.ss w3,w1,w8
add w8,w6,w6
addc w9,w7,w7
pop.d w8
return
;--------------------------------------------------------
А пихать плавающие вычисления куда ни попадя - признак вопиющего ламерства.
.