Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
ны быть отброшены, желательно при этом не потерять требуемую точность. С минимальной ошибкой это может быть обеспечено использованием метода Хорнера [5].
В нижеприведенном примере 12-битный результат формируется умножением 12-битного и 9-битного множителей.
Обычное умножение выглядит так:
X * Y
0.11001011111 b * 0.01001001b
0.796386719 * 0.28515625 = 0.22709465
При использовании метода сдвига-сложения: 0.00110010111 Х*2-2 0.00000110010 Х*2-5
0.00111001111 Х*2-8 = 0.226074219 (-2.1 LSB)
Как видно из примера, ошибка превышает 2 МЗР, из-за того, что большое количество бит было утеряно в результате сдвига вправо.
Метод Хорнерна лишён этого недостатка, в нём младшие биты сохраняются до тех пор, пока это возможно:
0.00011001011 Х*2-3
0.11001011111 +Х
0.11100101010
0.00011100101 (Х*2-3 + Х)*2-3
0.11001011111 +Х
0.11101000100
0.00111010001 (Х*2-3 + Х)*2-3Х*2-3 + Х)*2-3= 0.227050781 (-0.1 LSB)
Процесс начинается с младшей '1' множителя, в дальнейшем происходит накопление, после чего промежуточный результат сдвигается вправо (на разницу положений бит до следующей 'Г), с последующим сложением, сдвигом и т.д. Операции абсолютного сдвига (в данном случае 28,25,22) выполняются корректно. Вышеописанный процесс используется для введения и оптимизации коэффициентов фильтра, с целью минимизировать вычислительные ресурсы при максимальном сохранении точности. Т.к. арифметические вычисления в микроконтроллере обычно осуществляются с 16-битными целыми операндами, следует договориться о представлении значений сигнала. Для программной обработки операций с плавающей точкой потребуется слишком
Дата публикования: 2014-11-18; Прочитано: 249 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!