Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Воскресенье
5 мая
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Средства и методы разработки
801245
Топик полностью
0men
(11.12.2017 15:47, просмотров: 151)
ответил
йцукен
на
Если можно, поясните на конкретном примере. Вот функция, работу которой я хотел бы ускорить (FIR-фильтр). Это в ассемблерном стиле? И в каком другом стиле это можно написать?
мой фир
int32_t ADS1248_fir ( uint32_t ulAdcData, uint8_t AdcCh ) { int32_t * p1; int32_t * p2; int32_t const * pc; int64_t acc; uint32_t uiFilterLength; int32_t lAdcData; int32_t lFilterData; lAdcData = (int32_t)ulAdcData; // FIR uiFilterLength = LENGTH_FIR; pc = &fir_coeff3[LENGTH_FIR]; p1 = &dfir[AdcCh][uiFilterLength-1]; p2 = &dfir[AdcCh][uiFilterLength]; acc = 0; for(uint32_t j=0; j<uiFilterLength; j++) { acc += (int64_t)(*p1) * (*pc); pc--; *p2-- = *p1--; } acc += (int64_t)lAdcData * (*pc); *p2 = lAdcData; lFilterData = (int32_t)((acc + (int64_t)((1L)<<(ROUND_BIT-1)))>>ROUND_BIT); return( lFilterData ); }
Ответить
Сомневаюсь, что фильтр с копированием данных быстрее фильтра на круговом буфере. Кроме того, использование кругового буфера развязывает операции засовывания данных в буфер и собственно фильтрации.
-
йцукен
(11.12.2017 16:26
)