Помогите с БПФ - быстрое преобразование Фурье

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Помогите с БПФ - быстрое преобразование Фурье

Сообщение poff »

Доброго времени суток. Пытаюсь реализовать очередной проект - цветомузыка в виде куба. Идея не новая, на радиокоте, кажется обсужддалась, но как то поверхностно.
Нет проблем изготовить линейку из активных фильтров, как предлагают некоторые, а потом МК обрабатывать сигналы после фильтров. Но это скучно, нет революции, я такие штучки делал 20 лет назад.

Ближе к сути:

1. Система построена на базе ATMEGA8.
2. Результатом работы подпрограммы БПФ вижу четкое разделение входного звукового сигнала на три полосы 100-1000гц, 1200-3000гц, 3200-5000гц
(соответственно результаты будут использоваться другими подпрограммами для реализации различных эфектов).
3. Хочется использовать один вход АЦП.
4. Для написания программы использую асемблер.

Литература по данной теме не предлагает перехода в практическую плоскость.
Единственная книга, которая помогла - Юкио Сато "Обработка сигналов".

Господа! если кто решал аналогичные задачи, поделитесь опытом.
Предлагаю расписать алгоритм по шагам.

Шаг 1. Измеряем с определенной частотой, 10Кгц например, уровень входного сигнала.
Шаг 2. ?
Шаг 3. ?
ИТД

Заранее благодарен.
Anode_Katode
Держит паяльник хвостом
Сообщения: 986
Зарегистрирован: Ср июл 07, 2010 06:48:57

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение Anode_Katode »

М-да... Задача оригинальная. Прямые преобразования Эйлера-Фурье не прокатят. Около года назад я тоже озадачился нечто подобным, жаль только не надолго меня хватило(((
Смыл в использовании численных методов для разложения в ряд гармонических составляющих, в частности схемы Рунге (по крайней мере я пытался его осмыслить). Вот ссылка на теорию http://www.ipages.ru/index.php?ref_item ... 3&ref_dl=1
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение Meteor »

1)Частоту дискретизации лучше взять повыше раз в 5 (20...30 кГц).
2) Поищите информацию о проектировании цифроых фильтров ибо для меги БПФ и тем более ДПФ будет непосильной задачей.
3) Весь проект потребует значительной памяти - как минимум на 3 выборки, а лучше еще иметь запас.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение pyzhman »

А вот попробуйте это:
Вложения
realfft.cpp
(5.34 КБ) 872 скачивания
Docendo discimus
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение ChipKiller »

poff писал(а):Литература по данной теме не предлагает перехода в практическую плоскость.
Единственная книга, которая помогла - Юкио Сато "Обработка сигналов".
... а может не там искали ? http://www.atmel.com/dyn/general/tech_doc.asp?doc_id=8778&family_id=607
Аватара пользователя
Rinon Ninqueon
Говорящий с текстолитом
Сообщения: 1562
Зарегистрирован: Ср июн 30, 2010 18:54:47
Откуда: NO14MU
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение Rinon Ninqueon »

у мну тут есть исходник анализатора спектра на Си
DFT прокоментирована хорошо

как лапы дойдут, выложу
Изображение
Изображение
Изображение
Сам себе Гилмор
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение ARV »

AVR никогда не сможет делать БПФ (FFT) сигнала звукового частотного диапазона с вещественными числами в реальном времени! так что про эту идею можете забыть сразу и навсегда.
AVR при определенных усилиях может считать FFT в целых числах со знаком, но для вашего случая (3 достаточно широких полосы частот) более перспективным кажется не БПФ, а обычные цифровые фильтры, адаптированные для целочисленной математики. не могу утверждать, но интуитивно мне кажется, что AVR способен сделать соответствующие расчеты.
можно еще попытаться сделать опять же целочисленное ДПФ конкретно для трех частот, это так же по силам AVR, но полученные результаты будут "узкополосными" и для цветомузыки могут не подойти.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение phanis »

George22
Родился
Сообщения: 5
Зарегистрирован: Вт фев 15, 2011 09:50:06

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение George22 »


Chan в 2005-ом это сделал именно на Mega8.
Кто-нибудь разбирался в какой среде разработки это сделано:
там и С-файлы и ассемблерные S-файлы?
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение poff »

to phanis. Спасибо, похоже, это то что нужно. Буду разбираться, но если у кого-то есть мысли по поводу - милости просим.. :)
Аватара пользователя
Сэр Мурр
Модератор
Сообщения: 11169
Зарегистрирован: Чт окт 27, 2005 18:50:07
Откуда: из мест не столь отдалённых

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение Сэр Мурр »

Делайте компаратор длительности импульса. Задайте столько окон анализа, сколько хотите иметь полос выделения (анализа) сигнала. Для этого компаратора не важен уровень сигнала- главное- его должно хватать для срабатывания. Алгоритм- очень простой, и не будет нагружать контроллер.
На АЦП можно реализовать индикацию уровня сигнала.
Конечно, это не так точно, как БПФ, но для простых случаев достаточно. Запросто можно реализовать многополосный анализатор спектра.
Аватара пользователя
Rinon Ninqueon
Говорящий с текстолитом
Сообщения: 1562
Зарегистрирован: Ср июн 30, 2010 18:54:47
Откуда: NO14MU
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение Rinon Ninqueon »

вотъ
там spectr.c главное
смотри последовательность в "main" (закоментированно)
массив должен быть Data, а не Data_h и Data_l
и ещё, должно быть: Data[K-1] = Data[K-1] * Okno[K-1];
Вложения
spectr1.rar
(137.35 КБ) 306 скачиваний
Изображение
Изображение
Изображение
Сам себе Гилмор
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение poff »

to Сэр Мурр. Изначально я так и хотел сделать, но ненашел поддержки среди коллег - забраковали мою идею. В любом случае стоит разобраться с БПФ, в лучшем случае получится хорошая программа , в худшем - расширится кругозор. Спвсибо за поддержку.
driver_gv
Потрогал лапой паяльник
Сообщения: 399
Зарегистрирован: Сб авг 08, 2009 23:02:57
Откуда: Ростов-на-Дону
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение driver_gv »

Делал такую цветомузыку на PIC , FFT , 6 полос, 6 каналов шим 6 бит. Писал на асме, только целочисленная математика 16/32 бит со знаком.
Все получается и работает в реалтайме. Памяти надо много.

Сначала оцифровать не хуже 128 отсчетов на 4 периода , множим на синус и косинус, отдельно складываем , делим на количество отсчетов и корень квадратный из квадратов синуса и косинуса.
Я еще накладывал функцию Хемминга для подавления боковых лепесков и расширения центрального.
Например фильтр на 4000Гц светится от 3 до 5,5 кГц с переменной яркостью в зависимости от отстройки от центральной частоты.

Сначала рекомендую потренироваться в екселе.
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять
poff
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс авг 10, 2008 00:41:08

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение poff »

to driver_gv. Сейчас пытаюсь анализировать код анализатора от Chanа (см. ссылки выше). Альтернативные решения не помешают. Если это возможно, не могли бы Вы перекинуть мне исходники в асме для Пика.
Заранее благодарен..
driver_gv
Потрогал лапой паяльник
Сообщения: 399
Зарегистрирован: Сб авг 08, 2009 23:02:57
Откуда: Ростов-на-Дону
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение driver_gv »

По некорым причинам не могу публиковать исходник этого проекта.
Советутю прочесть http://91.210.216.1/Books/Микроконтроллеры/Цифровая%20обработка%20сигнала/Уолт%20Кестер/
и можно поискать его книги.
Примерный алгоритм расчета я описал, будет не понятно - спрашивайте.
Оцифровывать для цветомузыки надо 40 -60 кГц для диапазона фильтров до 10 -15 кГц
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение Paguo-86PK »

Странно, в журнале РАДИО за 80-ые в разделе цифровой техники я читал, что наша промышленность до сих пор штампует телевизоры на лампах, тогда как западные модели телевизоров начала 80-ых имели цифровой звуковой тракт с АЦП и на процессоре с тактовой частотой порядка 20МГц для регулировки тембра по представленным формулам :dont_know:
Неужели современные чипы так слабы в Фурье и годятся лишь для тембровки, как 30 лет назад!? :shock:
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите с БПФ - быстрое преобразование Фурье

Сообщение pyzhman »

У каждого чип специализированная задача. Пики и атмелы, о которых здесь идет речь, не DSP, обрабатываают чисто цифру. Да, есть АЦП. Но не шустрый. А в тв применены соответственно свои м/с. Под свои задачи разработанные. Никто микроскопом гвозди не забивает.
Docendo discimus
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»