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

 
 
> ДПФ/БПФ/ДКП на Cortex-M3 (1986ВЕ94Т), Вычисление БПФ на ARM
uwboy
сообщение Aug 19 2013, 10:39
Сообщение #1


Участник
*

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



Господа!
Есть необходимость решить задачу спектрального анализа квазипериодического сигнала. Частота дискретизации не менее 80 кГц (изначально 100 кГц, но возможно выбрать исходя из удобного числа отсчётов). Поступает сигнал непрерывно. Спектральный анализ проводится сначала приблизительный — на первой четверти выборки; затем точный — на всей выборке. Длина полной выборки 1 секунда. Для спектрального анализа следует выполнить одно из дискретных преобразований Фурье (как несведущий затрудняюсь определить).
Для ЦОС собираюсь использовать микросхему (1986ВЕ94Т, 1986ВЕ93Т или 1986ВЕ92Т). Предварительно планирую систему следующим образом. Буфер для исходных отсчётов собираюсь организовать на отдельных двух микросхемах (1645РУ4АУ): первая хранит первую четверть выборки и результаты ДПФ, вторая — остаток выборки. Перенаправлять вывод с внешнего АЦП собираюсь внешней же логикой. Сразу после захвата первой четверти отсчётов МК следует начать ДПФ на первой четверти выборки. Закончить следует быстрее, чем 250 мс (соответствует времени захвата четверти выборки), при этом должно остаться немного времени на анализ спектра (поиск пиков). По завершении захвата остатка выборки, МК выполняет ДПФ на первой четверти и остатке менее, чем за секунду.

Вопросы такие:
  1. Успеет МК выполнить ДПФ?
  2. Какой случай ДПФ более предпочтителен (вход — действительные целые, выход — амплитуды целые/дробные)?
  3. Значительно ли повысит быстродействие количество отсчётов являющееся степенью числа 2?
  4. Возможно ли использовать внутренний АЦП микросхемы 1986ВЕ94Т и единственную микросхему СОЗУ и копировать из внутреннего АЦП во внешнее СОЗУ отсчёты по прерываниям АЦП во время вычисления ДПФ? Не сильно ли это притормозит основную программу (ДПФ)?
  5. Значительно ли вырастет производительность ДПФ при использовании внутренней СОЗУ микросхемы 1986ВЕ94Т для части операций?


Поправьте, если я неправильно задаю вопрос или не в тот раздел обращаюсь. Поиск использовал, но просветления не достиг. Заранее спасибо, джентльмены!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Aug 21 2013, 07:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



как мне тут указали несколькими постами выше, что и 32 бит с фиксированной точкой должно хватить, и умножение у вас будет делаться за 1 такт, может попробовать так?
Go to the top of the page
 
+Quote Post
MSP430F
сообщение Aug 21 2013, 08:14
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911



Цитата(Golikov A. @ Aug 21 2013, 11:23) *
как мне тут указали несколькими постами выше, что и 32 бит с фиксированной точкой должно хватить, и умножение у вас будет делаться за 1 такт, может попробовать так?


Я не понимаю, как можно реализовать целочисленное БПФ с 32 разрядными числами и получить хоть какую-нить приемлемую точность?
Go to the top of the page
 
+Quote Post
prig
сообщение Aug 21 2013, 17:22
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
_pv
сообщение Aug 21 2013, 17:41
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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