реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> БПФ, может есть у кого исходник?
Pianist
сообщение Mar 14 2009, 20:10
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 2-11-08
Пользователь №: 41 326



Всем добрый вечер. Хочу реализовать простенький анализатор спектра на AVR. Микроконтроллер пока не выбрал. Может есть у кого программа быстрого преобразования фурье на С? Поделитесь пожалуйста...

Сообщение отредактировал Pianist - Mar 14 2009, 20:11
Go to the top of the page
 
+Quote Post
Alex11
сообщение Mar 15 2009, 10:32
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Посмотрите. Это, конечно, под PC, но там полторы страницы текста, можно оптимизировать и под контроллер.Прикрепленный файл  FFT32k.zip ( 1010 байт ) Кол-во скачиваний: 938
Go to the top of the page
 
+Quote Post
klen
сообщение Mar 15 2009, 10:55
Сообщение #3


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



тут все уже сделано, используются инструкции арифметики дробная фиксированой запятой

http://elm-chan.org/works/akilcd/report_e.html
Go to the top of the page
 
+Quote Post
Pianist
сообщение Mar 15 2009, 19:26
Сообщение #4





Группа: Новичок
Сообщений: 5
Регистрация: 2-11-08
Пользователь №: 41 326



Спасибо. Но все же хочется самому попробовать. Насколько я понял без операции умножения мне далеко не уехать, а из микроконтроллеров AVR аппаратное умножение появилось только у АтМега128?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 15 2009, 20:32
Сообщение #5


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
умножение появилось только у АтМега128?


Все современные AVR серии Mega имеют аппаратный умножитель. Вы давно не посещали сайт Атмела smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
blackfin
сообщение Mar 16 2009, 03:28
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Pianist @ Mar 14 2009, 23:10) *
Может есть у кого программа быстрого преобразования фурье на С? Поделитесь пожалуйста...

БПФ
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 16 2009, 05:15
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(klen @ Mar 15 2009, 13:55) *
тут все уже сделано, используются инструкции арифметики дробная фиксированой запятой
http://elm-chan.org/works/akilcd/report_e.html
+5
на чистом Си для AVR можно и не начинать - скорости не хватит для реального времени

bb-offtopic.gif не могу удержаться... вот что с помощью этой либы сделал


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 16 2009, 06:48
Сообщение #8


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
на чистом Си для AVR можно и не начинать - скорости не хватит для реального времени


Да ладно. Для такого спектроанализатора достаточно было сделать 10 гетеродинных фильтров. Без всякого Фурье. По скорости это, ну, на вскидку, не более 15-20% CPU Load.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 16 2009, 07:42
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Вот, на асме, правда, 64 точки 8 бит DFT. Не моё, сам где то когда то скачал.
Прикрепленные файлы
Прикрепленный файл  DFT864V1.zip ( 3.6 килобайт ) Кол-во скачиваний: 133
Прикрепленный файл  GLOBDEFS.zip ( 6.32 килобайт ) Кол-во скачиваний: 118
Прикрепленный файл  MathCons.zip ( 2.45 килобайт ) Кол-во скачиваний: 121
 


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 16 2009, 08:08
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Rst7 @ Mar 16 2009, 09:48) *
Да ладно. Для такого спектроанализатора достаточно было сделать 10 гетеродинных фильтров. Без всякого Фурье. По скорости это, ну, на вскидку, не более 15-20% CPU Load.
речь идет об анализаторе или о реализации БПФ на Си? мое мнение о нехватке производительности относилось к реализации на Си БПФ для AVR.

на счет вашего варианта не могу сказать ничего, хотя сомнения все-таки есть... особенно если эти фильтры так же на чистом Си делать...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 16 2009, 08:18
Сообщение #11


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
мое мнение о нехватке производительности относилось к реализации на Си БПФ для AVR.


Ну вот в теме про распознование голоса мы делали DHT, правда, 32хточечный. На чистом Си. Не померли smile.gif 2000 тактов.

Цитата
на счет вашего варианта не могу сказать ничего, хотя сомнения все-таки есть... особенно если эти фильтры так же на чистом Си делать...


Да нефиг там делать. Все просто, как стол.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 16 2009, 09:06
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Rst7 @ Mar 16 2009, 11:18) *
Ну вот в теме про распознование голоса мы делали DHT, правда, 32хточечный. На чистом Си. Не померли smile.gif 2000 тактов.
гм... нашел ваши исходники... все-таки ваш код можно назвать "чистым Си" с весьма большой натяжкой - там все сделано не только в виде оптимизации алгоритма, но и специально заточено на IAR... в сущности, доказывать, что при глубоком знании особенностей компилятора и умелом их использовании можно получить очень близкий к чисто ассемблерному варианту код - бессмысленно. я же имел ввиду под чистым Си, когда возведение в степень так и делается long result = var * var; smile.gif
т.е. ваше решение "не в лоб", а я говорил о "лобовой атаке" smile.gif все расставлено по своим местам.

а вот по поводу полосовых фильтров - увы, в ЦОС не шибко силен... считаете, что 10 цифровых полосовых фильтров будут быстрее БПФ?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 16 2009, 09:13
Сообщение #13


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
но и специально заточено на IAR...


IAR пока является наиболее оптимальным компилятором для AVR (несмотря на некоторые свои забобоны). Так что имею право. А если бы тут был ARM, то функции, помеченные как hard-coded функции заменяеются на прямой код без извращений и все нормально работает.

Т.е. например
Код
//Hardcoded for AVR, return (var*c)>>8;
#pragma inline=forced
static int FDMUL(int var, UREG c)
{
  int v=__multiply_signed_with_unsigned(var>>8,c);
  unsigned int v2=__multiply_unsigned(var,c);
  v+=v2>>8;
  return v;
}


заменяется на

Код
#pragma inline=forced
static int FDMUL(int var, UREG c) {return (var*c)>>8;}


И всем славно.

Цитата
считаете, что 10 цифровых полосовых фильтров будут быстрее БПФ?


Конечно. Потому что отсчетов для БПФ надо брать намного больше - необходимые полосы на каждой интересующей частоте разной ширины - это легко решается в случае фильтров.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 16 2009, 09:23
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Rst7 @ Mar 16 2009, 12:13) *
Потому что отсчетов для БПФ надо брать намного больше - необходимые полосы на каждой интересующей частоте разной ширины - это легко решается в случае фильтров.
больше 32? я обошелся 32 отсчетами... но с полосовыми хотелось бы разобраться... что-нибудь посоветуете? если можно, "для средних умов" 05.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 16 2009, 09:31
Сообщение #15


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
больше 32?


Ну и как тогда получить с частотами
Цитата
32, 64, 125, 250, 500 Гц и 1, 2, 4, 8, 15,5

правильные полосы? 32 точки с нижней частотой в 32Гц имеют верхнуюю полосу в 1024Гц. А никак не 15.5.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 20:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.14522 секунд с 7
ELECTRONIX ©2004-2016