-
- У старинных процессоров есть описание операций умножения "двойной" да и просто любой ширины. По-моему у пиков с умножителем 8х8=16 операция умножения 16х16=32 занимает восемь что ли тактов. - Крок(05.07.2017 12:51)
- Раз никто не ответил, отвечу сам. Так я и не придумал, как православно резать коэффициенты на старшую и младшую часть, и решил вместо этого резать отсчёты АЦП. Ниже приведено 3 варианта фильтра: исходный, оптимизированный и хитрожопый. При йцукен(1105 знак., 26.06.2017 14:40, )
- а можно кое что уточнить: Hivex(143 знак., 26.06.2017 19:20, )
- intXX_t - знаковые типы, беззнаковые называются uintXX_t. Для КИХ-фильтров беззнаковая арифметика неудобна, поскольку у типичного фильтра коэффициенты знакопеременные. Длина фильтра 36, действительно забыл указать. - йцукен(27.06.2017 13:31, )
- Можно отсортировать положительные коэффициенты от отрицательных и умножать их абсолютные величины, накапливая две суммы. А в конце из одной суммы вычесть другую. Ксения(246 знак., 27.06.2017 13:38)
- Можно, но не хочется. Проверять знак коэффициента при исполнении - это тоже времени требует, а под каждый набор коэффициентов писать свою функцию, ну это уже на самый крайний случай. - йцукен(27.06.2017 15:17, )
- А разве заранее вы этих коэффициентов не знаете? Обычно коэффициенты фильтра рассчитывают заранее, а в программу для МК записывают уже в готовом виде. Причем, их здесь даже сгруппировать можно - от 0 до k положительные, от k+1 до n отрицательные. - Ксения(27.06.2017 15:20 - 15:23)
- Поэтому надо генерить код фильтра из коэффициентов на лету. JIT-компиляция! Модно и весело. - SciFi(27.06.2017 15:21)
- Можно, но не хочется. Проверять знак коэффициента при исполнении - это тоже времени требует, а под каждый набор коэффициентов писать свою функцию, ну это уже на самый крайний случай. - йцукен(27.06.2017 15:17, )
- Можно отсортировать положительные коэффициенты от отрицательных и умножать их абсолютные величины, накапливая две суммы. А в конце из одной суммы вычесть другую. Ксения(246 знак., 27.06.2017 13:38)
- intXX_t - знаковые типы, беззнаковые называются uintXX_t. Для КИХ-фильтров беззнаковая арифметика неудобна, поскольку у типичного фильтра коэффициенты знакопеременные. Длина фильтра 36, действительно забыл указать. - йцукен(27.06.2017 13:31, )
- а можно кое что уточнить: Hivex(143 знак., 26.06.2017 19:20, )