|
ДПФ/БПФ/ДКП на Cortex-M3 (1986ВЕ94Т), Вычисление БПФ на ARM |
|
|
|
Aug 19 2013, 10:39
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 19-08-13
Пользователь №: 77 977

|
Господа! Есть необходимость решить задачу спектрального анализа квазипериодического сигнала. Частота дискретизации не менее 80 кГц (изначально 100 кГц, но возможно выбрать исходя из удобного числа отсчётов). Поступает сигнал непрерывно. Спектральный анализ проводится сначала приблизительный — на первой четверти выборки; затем точный — на всей выборке. Длина полной выборки 1 секунда. Для спектрального анализа следует выполнить одно из дискретных преобразований Фурье (как несведущий затрудняюсь определить). Для ЦОС собираюсь использовать микросхему (1986ВЕ94Т, 1986ВЕ93Т или 1986ВЕ92Т). Предварительно планирую систему следующим образом. Буфер для исходных отсчётов собираюсь организовать на отдельных двух микросхемах (1645РУ4АУ): первая хранит первую четверть выборки и результаты ДПФ, вторая — остаток выборки. Перенаправлять вывод с внешнего АЦП собираюсь внешней же логикой. Сразу после захвата первой четверти отсчётов МК следует начать ДПФ на первой четверти выборки. Закончить следует быстрее, чем 250 мс (соответствует времени захвата четверти выборки), при этом должно остаться немного времени на анализ спектра (поиск пиков). По завершении захвата остатка выборки, МК выполняет ДПФ на первой четверти и остатке менее, чем за секунду. Вопросы такие: - Успеет МК выполнить ДПФ?
- Какой случай ДПФ более предпочтителен (вход — действительные целые, выход — амплитуды целые/дробные)?
- Значительно ли повысит быстродействие количество отсчётов являющееся степенью числа 2?
- Возможно ли использовать внутренний АЦП микросхемы 1986ВЕ94Т и единственную микросхему СОЗУ и копировать из внутреннего АЦП во внешнее СОЗУ отсчёты по прерываниям АЦП во время вычисления ДПФ? Не сильно ли это притормозит основную программу (ДПФ)?
- Значительно ли вырастет производительность ДПФ при использовании внутренней СОЗУ микросхемы 1986ВЕ94Т для части операций?
Поправьте, если я неправильно задаю вопрос или не в тот раздел обращаюсь. Поиск использовал, но просветления не достиг. Заранее спасибо, джентльмены!
|
|
|
|
|
 |
Ответов
|
Aug 21 2013, 08:14
|
Частый гость
 
Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911

|
Цитата(Golikov A. @ Aug 21 2013, 11:23)  как мне тут указали несколькими постами выше, что и 32 бит с фиксированной точкой должно хватить, и умножение у вас будет делаться за 1 такт, может попробовать так? Я не понимаю, как можно реализовать целочисленное БПФ с 32 разрядными числами и получить хоть какую-нить приемлемую точность?
|
|
|
|
|
Aug 21 2013, 17:22
|
Знающий
   
Группа: Свой
Сообщений: 869
Регистрация: 30-01-08
Из: СПб
Пользователь №: 34 595

|
Цитата(MSP430F @ Aug 21 2013, 12:14)  Я не понимаю, как можно реализовать целочисленное БПФ с 32 разрядными числами и получить хоть какую-нить приемлемую точность? Вообще-то, 32 разряда дают динамический диапазон, который в реальной практике не встречается. Ну, потеряются при БПФ несколько битов от 32-х, как это скажется на результате? Да никак. С 16-ю битами тоже не всё плохо. В своё время приходилось делать оценку 16-бит версий БПФ с групповой плавающей точкой для 8К. Потеря точности (оценка по шуму) - примерно 1...2 бита. При нормировании данных к 15-ти битам, шум от 8К 16-бит радикс-2 БПФ сопоставим с шумом 14-бит оцифровки. Т.е. SNR преобразования что-то около 86дБ для шумоподобного сигнала. А вот 4-й радикс шумней на 6дБ из-за дополнительной потери 1-го бита при постадийном нормировании. В том, что касается сабжа, на перемножителе 32*32 можно сделать вполне приемлимый вариант улучшенного 16-битного(16 данные+16 защита) БПФ на 64К с фикс. точкой. Лучше 90 дБ по шуму вполне достижимо. Потерь точности из-за нормирования данных ни на 2-м ни на 4-м радиксе не будет. А вот со временем выполнения всё несколько сложнее. Эффективность кода по сравнению с сигнальниками будет существенно ниже. 8К 16-бит радикс-2 БПФ с групповой плавающей точкой на 533МГц блэкфине, со всем что можно в L1-памяти, выполняется за 1мс. Грубая прикидка для 64К на 80МГц М3 даёт что-то около 350мс (1*10*7*5, где 5 - опять же, грубая оценка эффективности к блэкфину). Так что, выбор 1986ВЕ94Е для данной задачи ТС несколько сомнителен. Но что бы сказать наверняка, можно попробовать найти готовый радикс-4 и проверить на реальной железке или симуляторе. Если искать что-нибудь другое, следует учитывать большой объём данных. Если не размещать данные и коэффициенты в памяти/кэше первого уровня, производительность может очень сильно упасть. На том же 533МГц блэкфине для 64к будет использоваться внешняя SDRAM. Результат будет на уровне 100мс вместо ожидаемых 10мс. Цитата(MSP430F @ Aug 21 2013, 11:22)  ...Надо посчитать БПФ для 4096 точек за 1 секунду. Чувствую, что МК справится. Хочу считать на float (32 бита), double не нужен, АЦП у меня 16 бит. В этой работе www.rf.unn.ru/NATO/1ws/SfP_Perov.pdf люди посчитали, что для АЦП с разрядность от 11 до 23 float достаточно. Фикс точка на 32 бита (20 данные + 12 защита) Вам более чем хватит. 1986ВЕ94Е сгодится. float (32 бита) - 24 значащих бита и экспонента. Это явно избыточно и слишком затратно. Проще разобраться с фикс. точкой.
Сообщение отредактировал prig - Aug 21 2013, 17:23
|
|
|
|
|
Aug 21 2013, 17:41
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(prig @ Aug 22 2013, 00:22)  А вот со временем выполнения всё несколько сложнее. Эффективность кода по сравнению с сигнальниками будет существенно ниже.8К 16-бит радикс-2 БПФ с групповой плавающей точкой на 533МГц блэкфине, со всем что можно в L1-памяти, выполняется за 1мс. Грубая прикидка для 64К на 80МГц М3 даёт что-то около 350мс (1*10*7*5, где 5 - опять же, грубая оценка эффективности к блэкфину). 533000 тактов на 8к отсчётов это 65тактов на отсчёт, ftp://ftp.analog.com/pub/www/technology/d...kfin_FftDct.zip : Код Performance : Code Size : 504 Bytes. Cycle Count : 3 * N * M + 20 * M - N + 17 where N = FFT length and M = log(N) to the base 4. 137 cycles for FFT size of 16. 589 cycles for FFT size of 64. 2913 cycles for FFT size of 256. 14453 cycles for FFT size of 1024. соответственно 1507505 для длины 65536 или 23 такта на отсчёт, только вот памяти под коэффициенты не напасёшся. в ссылке выше fft для M3 получалось как раз в 5 раз больше около сотни тактов на отсчёт при 4096.
|
|
|
|
Сообщений в этой теме
uwboy ДПФ/БПФ/ДКП на Cortex-M3 (1986ВЕ94Т) Aug 19 2013, 10:39 Golikov A. А вы с преобразование Фурье хорошо знакомы?
там ... Aug 19 2013, 11:01 uwboy Цитата(Golikov A. @ Aug 19 2013, 15:01) А... Aug 19 2013, 12:42  Aleksandr Baranov Цитата(uwboy @ Aug 19 2013, 08:42) Резуль... Aug 19 2013, 20:38 DASM Цитата(Golikov A. @ Aug 19 2013, 15:01) А... Aug 20 2013, 04:01 prig Цитата(Golikov A. @ Aug 19 2013, 15:01) А... Aug 20 2013, 08:35  Golikov A. Цитата(prig @ Aug 20 2013, 12:35) А Вы са... Aug 20 2013, 11:53   DASM Цитата(Golikov A. @ Aug 20 2013, 15:53) Я... Aug 20 2013, 19:14    Golikov A. Цитата(DASM @ Aug 20 2013, 23:14) Вы цену... Aug 21 2013, 03:46  MSP430F Всем доброго времени суток!
Не балует гугл отв... Aug 21 2013, 07:22   Ruslan1 Цитата(MSP430F @ Aug 21 2013, 10:22) У ме... Aug 22 2013, 11:06    uwboy Цитата(Ruslan1 @ Aug 22 2013, 15:06) сишн... Aug 22 2013, 11:54     Ruslan1 Цитата(uwboy @ Aug 22 2013, 14:54) Прямо ... Aug 22 2013, 14:46 Aleksandr Baranov Цитата(uwboy @ Aug 19 2013, 06:39) Господ... Aug 19 2013, 12:21 Golikov A. скажу что нужен сопроцессор, ПЛИС какую нибудь, и ... Aug 19 2013, 13:27 Lmx2315 QUOTE (uwboy @ Aug 19 2013, 14:39) Законч... Aug 19 2013, 15:08 uwboy Цитата(Lmx2315 @ Aug 19 2013, 19:08) ..ес... Aug 20 2013, 07:16 Alex11 Про степень 2, что тут говорили - это относится не... Aug 19 2013, 21:31 Golikov A. я не говорил только, но исходил из того что дабл н... Aug 20 2013, 04:55 uwboy Спасибо, господа, за ваши советы.
Уже прочёл про п... Aug 20 2013, 12:02 _pv http://www.embeddedsignals.com/ARM.htm
там бенчмар... Aug 20 2013, 20:03   MSP430F Цитата(prig @ Aug 21 2013, 21:22) Вообще-... Aug 21 2013, 17:45    _pv Цитата(MSP430F @ Aug 22 2013, 00:45) Вот ... Aug 21 2013, 18:21     MSP430F Цитата(_pv @ Aug 21 2013, 22:21) были дан... Aug 22 2013, 07:01      prig Цитата(MSP430F @ Aug 22 2013, 11:01) Я не... Aug 22 2013, 08:52      Golikov A. Цитата(MSP430F @ Aug 22 2013, 11:01) Я не... Aug 22 2013, 10:17       MSP430F Кто-нибудь может привести проверенный рабочий код ... Aug 22 2013, 11:11        Aleksandr Baranov Цитата(MSP430F @ Aug 22 2013, 07:11) Кто-... Aug 22 2013, 13:09        prig Цитата(MSP430F @ Aug 22 2013, 15:11) И чт... Aug 22 2013, 13:18         MSP430F Цитата(prig @ Aug 22 2013, 17:18) Вообще ... Aug 22 2013, 14:00          prig Цитата(MSP430F @ Aug 22 2013, 18:00) Я им... Aug 22 2013, 16:20           Golikov A. Цитата(prig @ Aug 22 2013, 20:20) Любой к... Aug 23 2013, 05:32            prig Цитата(Golikov A. @ Aug 23 2013, 09:32) .... Aug 23 2013, 09:46             Golikov A. Цитата(prig @ Aug 23 2013, 13:25) Знаете,... Aug 23 2013, 09:53           MSP430F Цитата(prig @ Aug 22 2013, 20:20) Любой к... Aug 23 2013, 08:24        Maverick Цитата(MSP430F @ Aug 22 2013, 14:11) Кто-... Aug 23 2013, 10:55         MSP430F Цитата(Maverick @ Aug 23 2013, 14:55) пос... Aug 23 2013, 11:19          prig Цитата(MSP430F @ Aug 23 2013, 15:19) То е... Aug 23 2013, 11:32           MSP430F Цитата(prig @ Aug 23 2013, 15:32) Не исхо... Aug 23 2013, 11:57           MSP430F Цитата(prig @ Aug 23 2013, 15:32)
Если ... Aug 23 2013, 15:43            Maverick Цитата(MSP430F @ Aug 23 2013, 18:43)
еще... Aug 23 2013, 18:11          Maverick Цитата(MSP430F @ Aug 23 2013, 14:19) Так ... Aug 23 2013, 12:47           MSP430F Цитата(Maverick @ Aug 23 2013, 16:47) а э... Aug 23 2013, 13:22    Golikov A. Цитата(MSP430F @ Aug 21 2013, 21:45) Вот ... Aug 22 2013, 05:52 Golikov A. 32 инт это
от +- 2 147 483 648
соответственно можн... Aug 21 2013, 10:46 Alex11 По поводу дополнительной обработки спектра после Ф... Aug 22 2013, 22:20 prig -Обращаться к программным кодам ADI не обязательно... Aug 23 2013, 11:09 Golikov A. Наконец то понял что куда сдвигается...
то есть е... Aug 23 2013, 12:16 Golikov A. это если вы 16 бит умножая на 16 бит, пытаетесь н... Aug 23 2013, 17:45 MSP430F Цитата(Golikov A. @ Aug 23 2013, 21:45) э... Aug 25 2013, 19:53  Golikov A. Цитата(MSP430F @ Aug 25 2013, 23:53) И я ... Aug 26 2013, 04:46 prig Ну что, все, кто "ниасилил" фикс. точку,... Aug 30 2013, 10:38 Golikov A. Ну или опять кто-то не понятно объяснил
Я имел в ... Aug 30 2013, 10:48 prig Цитата(Golikov A. @ Aug 30 2013, 14:48) Н... Aug 30 2013, 11:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|