Например TDA7294

Форум РадиоКот • Просмотр темы - Можно ли ускорить дискретное преобразование Фурье?
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 10:04:57

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 34 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Пт окт 02, 2020 12:04:05 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 3
Можете прокомментировать...?

Чтобы увести разговор из формализованной математики, переведу стрелки на физический смысл.
Итак.
Каждый бин ДПФ - это квадратурный приемник прямого преобразования. И гетеродин (гетеродины) у него синусно/косинусная последовательность кратной первому фильтру частоты. Значит в полный массив сигнала всегда укладывается полное число периодов гетеродинов ЛЮБОГО из фильтров. Сиречь, имея ОДНУ таблицу синуса или косинуса с дискретностью по фазе равной числу отсчетов входного массива, мы сможем брать готовые отсчеты синуса и косинуса, просто рассчитывая адресное смещение и адресный шаг. Ну или создав для каждого фильтра две константы - смещение и шаг адреса.
Естественно, что если фильтр один, то полная таблица превращается в прореженный огрызок ОДНОГО периода гетеродина, который на полном массиве просто повторяется некоторое количество раз.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Пт окт 02, 2020 19:16:44 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
Все достаточно просто. Поразрядно, начиная со старшего разряда добавляем 1 и возводим в квадрат. После чего сравниваем с исходным аргументом. Оставляем единицу, если меньше или равно.
Спасибо! Жаль не могу почему-то поставить плюс. :(

Перевёл на си (если не ошибся в чём-то):
Код:
u32 Sqrt(u32 x)
{
  u32 w5 = B15, w6 = 0;
  do {
    w6 += w5;
    if (w6 * w6 > x) w6 -= w5;
  } while (w5 >>= 1);
  return w6;
}

скомпилил с макс. оптимизацией по скорости:
Код:
         MOV      R6,#+32768
         MOVS     R2,#+0
DteSqrt: ADDS     R2,R6,R2
         MUL      R7,R2,R2
         CMP      R1,R7
         IT       CC
         SUBCC    R2,R2,R6
         LSRS     R6,R6,#+1
         BNE      DteSqrt

получилось ооооочень медленно. :(
Результат для sqrt(127):
Ньютон_Рафсон = 63 тактов
посл_приближение = 192 тактов
Результат для sqrt(2^31-1):
Ньютон_Рафсон = 89 тактов
посл_приближение = 192 тактов

Выполнение из ОЗУ.
Видимо - сказывается большое число итераций в вашем методе и высокая цена за переход: (1+1+1+1+1+1+5)*16+k=192 такта.
К тому же у НР с уменьшением величины числа уменьшается время вычисления.

PS: Так что для ARM-ов последовательное приближение - не самый лучший способ. :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Пт окт 02, 2020 21:07:34 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Я писал для 16-битных Микрочипов, причем без применения инструкции do, чтобы переваривалось PIC24, в котором этой инструкции нет. Плюс к этому конвейер у Микрочипа короче и переход выполняется за 2 или 3 маш. цикла.
Итого в предложенном мной варианте в PIC-ах получается 9*16+2=146.
Опять же нужно посмотреть результат компиляции по Н-Р. Он может плохо лечь на систему команд Микрочипа. Переменная длительность исполнения ничего не дает по факту, как вы сами понимаете, важен самый длинный вариант.
Ну и слишком малый вес корня в общей производительности Фурье не слишком мотивирует к поискам оптимума по скорости.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Ср окт 21, 2020 18:31:05 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 311
Рейтинг сообщения: 0
Не нужен тут ДПФ
НУЖЕН просто фильтр настроенный на одну частоту
FIR или IIR

Добавлено after 3 minutes 49 seconds:
автор какая (f/FS ) ?
работы на 3 мин
http://www.winfilter.20m.com/

"Спектр рассчитывать не требуется, только вытащить амплитуду одной заданной частоты."
именно для этого ..
и не важно что частота дробная

_________________
ух ты.... показывает


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Ср окт 21, 2020 20:33:15 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Не нужен тут ДПФ

Вообще то автору не нужен сигнал на выходе фильтра. Ему нужна АМПЛИТУДА.
И что ему делать с полоснопропускающим фильтром для этого?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Чт окт 22, 2020 08:38:53 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 311
Рейтинг сообщения: 0
Вычислить амплитуду через 3 тау установления фильтра
Не есть проблема .

ну не любит дпф дробных частот когда число волн не укладывается ровно в период измерения
окна нужны
а фильтру поф на фазы и дробность

_________________
ух ты.... показывает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Чт окт 22, 2020 09:16:24 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Вычислить амплитуду через 3 тау установления фильтра

Я не спрашивал КОГДА, я спрашивал КАК (впрочем, "когда" является отдельной проблемой - от какого момента считать время?).
На выходе бина ДПФ мы получим СРАЗУ комплексное значение сигнала. Из которого элементарно находится амплитуда.
А два бина позволяют легко решить проблему дробной частоты.
На выходе фильтра мы получим просто мгновенное значение сигнала. И что с ним делать? Особенно если нет точного значения частоты....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Пт окт 23, 2020 09:21:43 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 311
Рейтинг сообщения: 0
по работе именно что измеряю амплитуды затухающих колебаний для вычисления декремента колебаний

12 бит Ацп центруется делителем R=R ref+ref- на коде 2047 (- + 50 не критично ! )
в начале программы дополнительно вычисляем усреднением 0
ловится перепад через ноль на фронте ->+
находится максимальное значение
находится минимальное значение
A= (max - min)/2
пока не следующий перепад через ->+
амплитуды соседних колебаний складыааются последовательно в массив

_________________
ух ты.... показывает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Пт окт 23, 2020 11:13:53 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
ловится перепад через ноль на фронте

:facepalm:
Помилосердствуйте, отец родной!!! Какой перепад через ноль? Ничего, что при дискретизации 4...5 семплов на период там никаких максимумов ВООБЩЕ НЕТ? Точнее попадание мгновенного значения на максимум можно ждать очень долго, поскольку фаза дискретизации относительно измеряемого сигнала может оказаться любой и асинхронной.
Извините, но все это эпичный бред. В узкополосном фильтре сигнал практически синусоидальный. Его амплитуда выясняется в полтычка ДВУМЯ квадратурными отсчетами. И нах не облокотилось чего то там ловить...
ЗЫ. К чему вы написали о нуле АЦП я так и не понял... Мы обсуждали как беззнаковый формат превратить в знаковый? Чего то я не припомню...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Пт окт 23, 2020 19:58:50 
Потрогал лапой паяльник

Зарегистрирован: Пт янв 29, 2010 19:42:27
Сообщений: 311
Рейтинг сообщения: 0
Согласен с 1 абзацем раз всего 500 килосамплов .ну пусть так .посему гибко меняю алгоритм

Если частота дискретизации всего в 4 раза выше частоты сигнала то
суммируются все абсолютные значения октлонения отсчетов за 8-32 периодав и делятся на количество самплов за это время




автор молчит .может уже неактуально
Но если появится я ему предложу решение на фильтре .

_________________
ух ты.... показывает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Сб окт 24, 2020 07:21:46 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
суммируются все абсолютные значения октлонения отсчетов за 8-32 периодав

Может стоит наконец прекратить рандомные фантазии и понять, что каждый бин ДПФ (кстати, с окном, есличо) и есть искомый FIR, причем сразу с квадратурным (комплексным) результатом. И вычисление амплитуды по этому результату займет около 100 машинных циклов. И все...
А пара бинов даст амплитуду для дробной частоты находящейся между этими бинами.
Для снятия экспоненциальной огибающей затухающих колебаний вообще не требуется никаких нелинейных мероприятий типа поисков-сортировок-отбора. Оные мероприятия являются самими ресурсоемкими действиями на ЛЮБОЙ аппаратной платформе. Вместо них в ДПФ используются MAC-инструкции.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Сб окт 31, 2020 14:38:26 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
PS: Так что для ARM-ов последовательное приближение - не самый лучший способ. :dont_know:

Вернулся к вопросу.
Основная проблема метода Ньютона для dsPIC33/PIC24 - деление 32/16 (19 машинных циклов), а не 32/32. Из-за этого возникает ограничение входного аргумента величиной 32 762^2=1 073 348 644. Для сигнальных применений в 12 разрядов (внутренний АЦП) непринципиально, но нужно иметь ввиду.
Написал на АСМе метод Ньютона для dsPIC33 и получил время извлечения корня 117 машинных циклов. Для dsPIC33С - 65 машинных циклов, поскольку деление у них не 19, а 7 циклов.
Последовательное приближение дает полный диапазон (0...65 535^2=4 294 836 225) за 167 циклов и диапазон до 32 762^2=1 073 348 644 за 157 циклов. То есть у Ньютона выигрыш в 40 циклов.
Резюме. Основная экономия метода Ньютона возникает на длительности деления и расчете первого приближения путем нахождения старшего значащего разряда (логарифмирование по основанию 2). Для чего, например, в системе команд dsPIC33/PIC24 есть инструкция FF1L.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Сб авг 07, 2021 10:37:24 
Потрогал лапой паяльник

Карма: 3
Рейтинг сообщений: -44
Зарегистрирован: Пт июн 12, 2015 09:21:56
Сообщений: 355
Откуда: Челяба-сити
Рейтинг сообщения: 0
Всем привет.
Вопрос скорее из области теории.
Задача такова: есть сигнал от некого датчика, в котором полезная составляющая находится на определенной частоте, порядка десятков-сотни с небольшим кГц. Нужно отфильтровать эту частоту и вычислить ее амплитуду.
Применяю ДПФ, хочу ускорить расчет, но есть одна загвоздка: для быстрого преобразования требуется, чтобы количество точек замеров (N) сигнала выражалось степенью двойки. .
попробуйте Герцеля
https://livepcwiki.ru/wiki/Goertzel_algorithm
также есть несколько алгоритмов бпф переменной длины (сложной или комплексной, Винограда, Адамара)
таакже можно забить нулями отчёты до длины кратной степени двойки.
у меня такая же проблема стояла, когда делал аон на 580ик80 в 1992. сами понимаете выч.мощность аховая ) но зато нужно вычислять всего 6 частот и ьыстро через каждые 200 Гц. я взял 64 отчёта и окно Хэмминга на подставке (это уже на z80), а друг делал на герцеля 40 отчётов, но затем всётаки перешёл на ких фильтры (по мере изучения в вузе ))
кстати, он также как и вашей задаче, определчл только наличие частот (я же считал амплитуду для большей чёткости ), поэтому у него входное ацп это просто вход компаратора, а умножение 1 разряда на команде xor.
и ничего, работало норм.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Можно ли ускорить дискретное преобразование Фурье?
СообщениеДобавлено: Пн сен 13, 2021 14:59:01 
Открыл глаза

Зарегистрирован: Вт сен 25, 2007 13:53:49
Сообщений: 40
Откуда: Воронеж
Рейтинг сообщения: 0
имхо куда-то не туда ушли - если нужно диагностировать появление одной частоты из выборки сигналов - адаптивный алгоритм герцеля.
https://ru.dsplib.org/content/goertzel/goertzel.html - далее есть вариант на последовательное дополнение на каждой новой выборке
- http://www.dsplib.ru/content/goertzelmo ... elmod.html (недавно искал такую задачу)...
на произвольной частоте выборок, выше как минимум в 2 раза от требуемой частоты, см. теорему котельникова, а на необходимые частоты выставляет коэффициенты и вуаля...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 34 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y