|
|
  |
Вопрос по вычислению atan(x) на Сortex 3 |
|
|
|
Oct 10 2013, 10:06
|
Знающий
   
Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073

|
Здравствуйте, уважаемые коллеги, подскажите, пожалуйста. Нужно в реальном времени на процессоре STM32F405 вычислять atan(x), сейчас на вычисление уходит 18 us, при частоте ядра 168 МГц, Keil 5.4, включена оптимизация по времени, включен FPU. Размещение кода в ОЗУ, видимо , не прибавит скорости, но все же попробую. Что еще можно придумать, кроме кардинальноого пересмотра алгоритма? Дайте совет из своего опыта. Заранее благодарю.
|
|
|
|
|
Oct 10 2013, 10:13
|
Частый гость
 
Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724

|
А сейчас какой алгоритм? Судя по этому Цитата(Vladimir_T @ Oct 10 2013, 14:06)  включена оптимизация по времени, включен FPU. вы полагаетесь на кодогенерацию, т.е. код написан на Си?
|
|
|
|
|
Oct 10 2013, 13:52
|
Знающий
   
Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073

|
Сейчас здорово удалось сократить (в 20 раз) время вычисления с использование atan2f() . Время вычисления с небольшими накладными составляет около 900 нсек. Цитата(ViKo @ Oct 10 2013, 16:32)  Вместо таблицы и стандартных функций, можно попытаться использовать алгоритм CORDIC. Я, конечно, проштудирую эту тему. Для того, чтобы мне быстрее разобраться, не могли бы вы дать ссылку на пример реализации для какой-либо функции ?
|
|
|
|
|
Oct 10 2013, 17:06
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 29-05-10
Из: Пенза
Пользователь №: 57 619

|
Цитата(Fat Robot @ Oct 10 2013, 18:16)  Из моего опыта: точность float (а тем более double) во многих случаях избыточна. Если это Ваш случай, то попробуйте перейти на fixed point. В этом случае даже fpu будет не нужен.
Реализацию fract16 atan2_fr16 (fract16 y, fract16 x); fract16 atan_fr16 (fract16 x); для Q1.15 можно подсмотреть в библиотеке AD VisualDSP++. Там используется, насколько я помню, полиномиальная интерполяция.
Если процессор имеет операцию умножения, то в CORDICе нет смысла Неплохо разъяснялось в их DIGITAL SIGNAL PROCESSING APPLICATIONS USING THE ADSP-2100 FAMILY первый том, глава 4
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|