дискретное преобразование фурье на AVR\Pic24F
дискретное преобразование фурье на AVR\Pic24F
Привет всем радио котам. Возникла проблема: реально ли реализовать ДПФ(дискретное преобразование фурье) на микроконтроллере AVR(например ATmega32). В связи с тем, что в цифровой обработке сигналов я новичек, вынужден попросить вашей помощи. Не могу разобраться в алгоритме ДПФ\БПФ. Есть ли примеры кода на ассемблере\или готовые алгоритмы? Понимаю что в реальном времени сигнал обработать я не успею, на данном этапе мне важно именно понимание алгоритма и математики , которая используется для преобразования фурье. В дальнейшем, после полного понимания алгоритма, буду переделывать проект на Pic24F. У кого есть какие соображения???
- Реклама
Re: дискретное преобразование фурье на AVR\Pic24F
Посмотрите здесь
http://www.microchip.com/stellent/idcpl ... e=en023598
и здесь.
ftp://ftp.efo.ru/pub/efo-ftp/TMP/pub/at ... s-on+1.pdf
И еще в Гугле.
http://www.microchip.com/stellent/idcpl ... e=en023598
и здесь.
ftp://ftp.efo.ru/pub/efo-ftp/TMP/pub/at ... s-on+1.pdf
И еще в Гугле.
- Shapa
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Пт июн 20, 2008 09:38:05
- Откуда: Харьков
- Контактная информация:
Re: дискретное преобразование фурье на AVR\Pic24F
Да, реально. Лично я реализовал на Кортексе М3. Но потом перешел к алгоритму Герциля, т.к он даёт результат только для нескольких спектральных отсчётов, соответственно он не так ресурсоёмок.
А что вы знаете о Рядах Фурье? Каким физическим смыслом наделено разложение в ряд Фурье?стьюдент писал(а):....мне важно именно понимание алгоритма и математики....
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: дискретное преобразование фурье на AVR\Pic24F
+1 Shapa!
Нужно матчасть читать прежде чем что-то пытаться понять в программе. Это вам не светодиодики зажигать.
Нужно матчасть читать прежде чем что-то пытаться понять в программе. Это вам не светодиодики зажигать.
Ставим плюсы: )
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: дискретное преобразование фурье на AVR\Pic24F
Замутил нечто похожее:
http://www.simple-devices.ru/forum/Прог ... ье-для-AVR
Там же и чуток теории написал.
http://www.simple-devices.ru/forum/Прог ... ье-для-AVR
Там же и чуток теории написал.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
Re: дискретное преобразование фурье на AVR\Pic24F
"В обработке сигналов и связанных областях преобразование Фурье обычно рассматривается как декомпозиция сигнала на частоты и амплитуды, то есть обратимый переход от временно́го пространства (time domain) в частотное пространство (frequency domain)."Shapa писал(а): А что вы знаете о Рядах Фурье? Каким физическим смыслом наделено разложение в ряд Фурье?
Это всего лишь сухая теория, какую пользу она несет?! Если у меня на форуме ник стьюдент, то это не значит, что я типичный студент который ищет халявы и не в состоянии предварительно поискать информацию сам
Gudd-Head, нашел вашу статью еще вчера. Насколько я понял у вас не дискретное преобразование фурье? Особо интересует, как с помощью ДПФ выполнять фильтрацию (разделение по частотам) спектра сигнала (сигнал кстати записан в формате .wav).
Ser60, спасибо за ссылки, но к сожалению с английским очень туго, к тому же первоначально буду реализовывать на AVR, а ссылки ведут на dsp Pic и AVR32
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: дискретное преобразование фурье на AVR\Pic24F
Чертовски приятно.стьюдент писал(а):Gudd-Head, нашел вашу статью еще вчера.
Дискретное. Но не быстрое.стьюдент писал(а):Насколько я понял у вас не дискретное преобразование фурье?
Суть БПФ в упрощении за счёт количества выборок 2^N. Тогда применяют двоичную перестановку и алгоритм "бабочка". Надеюсь, вы про это уже прочитали. Просто я не силён в СИ, а на АСМе с комплексными числами мне не очень хотелось заморачиваться.
Вообще говоря, фильтрацию проще выполнять с помощью фильтров. Из результатов ПФ вы замучаетесь восстанавливать сигнал. А вот посмотреть спектр сигнала — запросто.стьюдент писал(а):Особо интересует, как с помощью ДПФ выполнять фильтрацию (разделение по частотам) спектра сигнала (сигнал кстати записан в формате .wav).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: дискретное преобразование фурье на AVR\Pic24F
Собственно алгоритм БПФ хорошо расписан в виде формул на википедии, сложность в реализации на микроконтроллере заключается лишь в комплексной функции exp(x), которую как правило задают заранее просчитанным массивом. А так используется обычный цикл для обсчета интеграла численными методами, а для ускорения обсчета используются исключительно целые числа. Ну, это до тех пор пока объемы RAM в контроллере считаются килобайтами и отсутствует математический сопроцессор.
У самого стала такая проблема для отображения спектра сигнала в усилителе в поле 32 столбца на 16 уровней. Ведь в таком случае использование даже 16-битных вычислений кажется каким-то кощунством и переводняком ресурсов.
У самого стала такая проблема для отображения спектра сигнала в усилителе в поле 32 столбца на 16 уровней. Ведь в таком случае использование даже 16-битных вычислений кажется каким-то кощунством и переводняком ресурсов.
Re: дискретное преобразование фурье на AVR\Pic24F
1) зачем восстанавливать сигнал?Gudd-Head писал(а): Дискретное. Но не быстрое.
Суть БПФ в упрощении за счёт количества выборок 2^N. Тогда применяют двоичную перестановку и алгоритм "бабочка". Надеюсь, вы про это уже прочитали. Просто я не силён в СИ, а на АСМе с комплексными числами мне не очень хотелось заморачиваться.
Вообще говоря, фильтрацию проще выполнять с помощью фильтров. Из результатов ПФ вы замучаетесь восстанавливать сигнал. А вот посмотреть спектр сигнала — запросто.
2) меня интересует только спектр сигнала, т.е. мне нужна вещественная часть, а внимую можно отбросить???
3) аналоговые фильтры не подойдут. "Нет научной навизны..."
4) можно полные исходники вашей программы?
Re: дискретное преобразование фурье на AVR\Pic24F
Я не уверен, что можно алгоритм БПФ (перестановки "бабочка") реализовать на 8-ми битном AVR. Дискретное преобразование вроде бы проще, особенно для малого числа точек(кстати изходя из чего выбирается их число?).Alexeyslav писал(а):Собственно алгоритм БПФ хорошо расписан в виде формул на википедии, сложность в реализации на микроконтроллере заключается лишь в комплексной функции exp(x), которую как правило задают заранее просчитанным массивом.
.
.
.
У самого стала такая проблема для отображения спектра сигнала в усилителе в поле 32 столбца на 16 уровней. Ведь в таком случае использование даже 16-битных вычислений кажется каким-то кощунством и переводняком ресурсов.
- Shapa
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Пт июн 20, 2008 09:38:05
- Откуда: Харьков
- Контактная информация:
Re: дискретное преобразование фурье на AVR\Pic24F
Я не правильно выразился. Правлиьно вопрос должен звучать "Что вы понимаете?". Именно это меня интересовало.стьюдент писал(а): Это всего лишь сухая теория, какую пользу она несет?! Если у меня на форуме ник стьюдент, то это не значит, что я типичный студент который ищет халявы и не в состоянии предварительно поискать информацию сам![]()
Разложение в ряд Фурье есть разложение гармонического сигнла по его гармоникам. Т.е. в "идиотски упрощённом" виде это Fs = x1*F1 + x2*F2 + ... + xn*Fn, где n - номер спектрального отсчета, F(n) - частота спектрального отсчета, а Хn - амплитуда. Разложение в Ряд Фурье производится в комплексном пространстве и один из простых переводов из комплексного пространства в пространство вещественных чисел это вычсление длинны вектора ( Sqrt ( Re^2 + Im^2) )стьюдент писал(а): 2) меня интересует только спектр сигнала, т.е. мне нужна вещественная часть, а внимую можно отбросить???
ibiza11, хорошая статья, сам её когда-то был рад просмотреть
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: дискретное преобразование фурье на AVR\Pic24F
Ну это же ваши слова:стьюдент писал(а):1) зачем восстанавливать сигнал?
А в моём понимании фильтр вносит линейные искажения в сигнал. После ДПФ сигнал оказывается в частотной области, так что его (после обработки) нужно будет вернуть во временную. Вот зачем.как с помощью ДПФ выполнять фильтрацию
Мнимую отбрасывать не надо, это та же вещественная, только сдвинута на 90°. Если вам нужна огибающая спектра, то мой алгоритм вам как раз подойдётстьюдент писал(а):2) меня интересует только спектр сигнала, т.е. мне нужна вещественная часть, а внимую можно отбросить???
Кто говорил про аналоговые фильтры? Я имел в виду цифровые. Но вам, видимо, нужна не фильтрация, а сам спектр.стьюдент писал(а):3) аналоговые фильтры не подойдут. "Нет научной навизны..."
Всё что есть я выложил на том форуме. Вроде бы.стьюдент писал(а):4) можно полные исходники вашей программы?
Почему же нельзя? Всё возможно. Весь вопрос в производительности.стьюдент писал(а):Я не уверен, что можно алгоритм БПФ (перестановки "бабочка") реализовать на 8-ми битном AVR.
Бабочка и есть БДПФ, просто это один из... способов, что ли. Число точек 2^N и зависит от точности которую вы хотите получить в частотной области.стьюдент писал(а):Дискретное преобразование вроде бы проще, особенно для малого числа точек(кстати изходя из чего выбирается их число?).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: дискретное преобразование фурье на AVR\Pic24F
Gudd-Head, посмотрел ваши наработки, я так понял вы не пробовали запускать АЦП ? Ограничились анализом только готовых данных? Или я смотрю устаревшую часть программы? Сохранился ли алгоритм (в визио,..) или все делалось без предварительного алгоритма?(
- Вложения
-
- SCP.asm
- (3.22 КБ) 767 скачиваний
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: дискретное преобразование фурье на AVR\Pic24F
Не, проект был чисто теоретический — готовые данные в ОЗУ (?), никакого предварительного алгоритма в сторонней программе.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: дискретное преобразование фурье на AVR\Pic24F
Кто может объяснить в чём ошибка (использую комплексное ДПФ) ? Или использовать формулы ДПФ для действительных сигналов?
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: дискретное преобразование фурье на AVR\Pic24F
Амплитуды - действительная часть результата, мнимая часть - это фаза соответствующей составляющей сигнала. Тебе надо вывести на экран только действительную часть.
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: дискретное преобразование фурье на AVR\Pic24F
Надо период (от 0 до 2ПИ) разделить на 8 интервалов, а не на шесть. Получается что седьмая складывается с первой гармоникой и первая гармоника складывается с седьмой.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: дискретное преобразование фурье на AVR\Pic24F
Амплитуда — это длина комплексного вектора, фаза — угол между вещественной и мнимой частью.Alexeyslav писал(а):Амплитуды - действительная часть результата, мнимая часть - это фаза соответствующей составляющей сигнала.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: дискретное преобразование фурье на AVR\Pic24F
Не понял как это реализовать. Увеличить число точек?Meteor писал(а):Надо период (от 0 до 2ПИ) разделить на 8 интервалов, а не на шесть. Получается что седьмая складывается с первой гармоникой и первая гармоника складывается с седьмой.


