Полная версия этой страницы:
Выбор ПЛИС для БПФ
andreUF
May 14 2012, 07:27
Уважаемые специалисты, помогите подобрать ПЛИС, пожалуйста.
(Не судите меня строго, начал заниматься разработкой алгоритмов на системном уровне, но встала задача срочно подобрать ПЛИС и прикинуть затраченное время на процесс обработки и энергию).
Ситуация следующая:
имеется сто датчиков, с них сигналы на БПФ, после операций умножения и суммирования получаем энергетический спектр.
Отсюда главный вопрос - какую и каким образом ПЛИС выбрать?
- БПФ: количество точек от 2^14 (16384) до 2^16 (65536)
- Разрядность данных 16-32 бит.
Т.к. 100 датчиков, значит ли это, что требуется 100 "каналов"?? Т.к. не являюсь спецом в области программируемой логики - спрашиваю у Вас.
Что будет быстрее, с учетом выбранного изделия, распараллеливание процесса обработки или последовательная об-ка?
Как выяснить за сколько тактов, секунд реализуется операции умножения, суммы, умножения на вектор поворота?
Существует ли методика какая то? Некогда долго разбираться, результат нужен в ближайшее время!
Помогите пожалуйста!
"Я не профи и мне некогда долго разбираться "
У xilinx прочтите
http://www.xilinx.com/support/documentatio.../xfft_ds260.pdf.
Там есть результаты - тип fft, кристалл , частота , сколько умножителей , блоков памяти , вентилей требуется, число тактов.
Все кстати зависит от частоты этих датчиков.
andreUF
May 14 2012, 07:47
Огромное спасибо, сейчас почитаю!
Еще вопросик - для Альтеры есть что нибудь?
И для общего развития - не предпочтительнее ли использовать dsp?
blackfin
May 14 2012, 07:53
Цитата(andreUF @ May 14 2012, 11:47)

Еще вопросик - для Альтеры есть что нибудь?
ug_fft.pdf.
и еще, для вашей цели
Цитата
меется сто датчиков, с них сигналы на БПФ, после операций умножения и суммирования получаем энергетический спектр.
Отсюда главный вопрос - какую и каким образом ПЛИС выбрать?
- БПФ: количество точек от 2^14 (16384) до 2^16 (65536)
- Разрядность данных 16-32 бит.
лучшая "ПЛИС" это : 642 или аналогичный техас + мелкая плис - преобразователь интерфейсов
andreUF
May 14 2012, 11:23
Что то я всё равно никак не соображу какую ПЛИСину выбрать. Пролистал Xilinx datasheet выше, да мозгов не хватает.
Не могли бы Вы "пальцем ткнуть" как выбрать!!!
blackfin
May 14 2012, 11:45
Цитата(andreUF @ May 14 2012, 15:23)

Что то я всё равно никак не соображу какую ПЛИСину выбрать.
А почему нужно выбирать именно "ПЛИСину"?
RobFPGA
May 14 2012, 12:48
Приветствую!
Для выбора на чем считать надо бы знать какова частота семплов с каждого канала и каков интерфейс датчиков.
Если вам надо обрабатывать данные с АЦП с частотой семплов в 100 MHz каждая, то вам и 10 FPGA может понадобится.
А если частота семплов с датчика 1-100 KHz, то и один DSP без проблем все сделает.
Ну и потом все это посчитанное нужно куда то выводить - а куда?
Успехов! Rob.
я бы сперва постарался посчитать размер необходимой памяти.
Например, количество выборок входного сигнала 16К*16бит=264К бит для хранение сигнала от одного канала.
Например столько же для хранения спектра.
Умножаем на количество каналов 100, получаем ~6,5Мбайт.
Врядли это можно разместить в ПЛИС, значит нужна будет внешняя DDR память.
Попробовать оценить скорость потока данных, хватит ли пропускной способности памяти DDR и при скольки разрядах.
Какой алгоритм использовать?
Теоретически если считать спектр от потока (а не от массива), то можно не вычислять весь спектр с каждой новой выборкой, а пытаться модифицировать текущий спектр. Ведь одна выборка пришла, но и самая старая ушла.
В принципе можно сделать за один проход вдоль массива спектра.
Правда здесь возможно накопление ошибки вычислений. Не уверен на сколько этот метод возможен, но потенциально он экономит ресурсы.
andreUF
May 14 2012, 16:17
Благодарю за ответы.
Если частота семплов с каждого датчика 100 KHz. И если пренебречь выводом и размером необходимой памяти пока что.
То какая FPGA подойдет?
blackfin
May 14 2012, 17:14
Для параметров БПФ:
Цитата(andreUF @ May 14 2012, 11:27)

- БПФ: количество точек 2^14 (16384)
- Разрядность данных 16 бит.
- 100 датчиков...
и:
Цитата(andreUF @ May 14 2012, 20:17)

Если частота семплов с каждого датчика 100 KHz. И если пренебречь выводом и размером необходимой памяти пока что.
То какая FPGA подойдет?
вероятно, подойдут:
EP4CGX75, EP4CE75 или аналогичные с бОльшим объемом Embedded memory (> 2500 Kbits).
Для параметров БПФ:
Цитата(andreUF @ May 14 2012, 11:27)

- БПФ: количество точек 2^16 (65536)
- Разрядность данных 16 бит.
- 100 датчиков...
вероятно, подойдут:
5AGXA3, 5AGTC3 или аналогичные с бОльшим объемом Embedded memory (> 10,000 Kbits).
Если же:
Цитата(andreUF @ May 14 2012, 11:27)

- Разрядность данных 32 бит.
то требования по Embedded memory нужно удвоить.
andreUF
May 14 2012, 17:51
Благодарю! Теперь буду разбиратся с предложенным, постараюсь больше не выпрашивать помощь).
И прошу прощения за свою некомпетентность, просто наш спец свалил, а "работа не ждет".
Цитата(des00 @ May 14 2012, 15:36)

лучшая "ПЛИС" это : 642 или аналогичный техас + мелкая плис - преобразователь интерфейсов
+1
65536 точек на 100кГц это 655.36мс времени = 6.5мс на канал.
можно даже взять
tms32c5505 ему на 1024 точки надо 7315 тактов и 1836 нДж энергии. на 60МГц.
если это линейно (что вообще-то не правильно, но для оценки сойдёт) экстраполировать до 65536 - то получится ~500000 тактов, на частоте 150Мгц ~ 3мс, в принципе подходит, но надо аккуратней смотреть. ну и ~200мкДж, то есть ~40мВт, думаю что при реализации на плис такого потребления не получить.
а уж С64x так тем более справится.
seldim
May 15 2012, 03:00
Цитата(andreUF @ May 14 2012, 20:17)

Благодарю за ответы.
Если частота семплов с каждого датчика 100 KHz. И если пренебречь выводом и размером необходимой памяти пока что.
То какая FPGA подойдет?
Все датчики одновременно нужно обрабатывать? Получится, что раз в 1 us нужно обработать все датчики. Если так, то процессору нужно принять информацию от датчика и обработать ее за 100 ns. Если я правильно все понял то процессор врятли осилит. При такой задаче возможно придется комбинировать ПЛИС + процессор. В ПЛИС принять данные от каждого датчика паралельно, провести преобразование и определить в буфер. А процессором проводить дальнейшую обработку массивов данных.
Можно конечно и процессор в плис дополнительно организовать.
blackfin
May 15 2012, 03:30
Цитата(seldim @ May 15 2012, 07:00)

Все датчики одновременно нужно обрабатывать? Получится, что раз в 1 us нужно обработать все датчики. Если так, то процессору нужно принять информацию от датчика и обработать ее за 100 ns.
Что-то Вы как-то странно считаете.
Буфер на 65536 точек при частоте семплирования 100 КГц заполняется за 65536/100000 = 0.65536 секунды и за это время нужно вычислить FFT для каждого датчика.
Если датчиков 100, то на вычисление FFT для каждого датчика мы должны тратить не более 0.65536/100 = 0.0065536 секунды или 6.5536 мс.
Цитата(blackfin @ May 15 2012, 06:30)

Что-то Вы как-то странно считаете.
Буфер на 65536 точек при частоте семплирования 100 КГц заполняется за 65536/100000 = 0.65536 секунды и за это время нужно вычислить FFT для каждого датчика.
Если датчиков 100, то на вычисление FFT для каждого датчика мы должны тратить не более 0.65536/100 = 0.0065536 секунды или 6.5536 мс.
ну вообще-то точное ТЗ не известно.
Может быть нужно считать "мгновенный" спектр? В этом случае в 10мкс поступает новая выборка и убывает самая старая. Мгновенный спектр меняется каждые 10мкс
blackfin
May 15 2012, 06:25
Цитата(nckkm @ May 15 2012, 10:07)

Может быть нужно считать "мгновенный" спектр?
Не сочиняйте ерунды..
Вычислить FFT от 65536 точек 10^7 раз в секунду современные вычислительные средства не позволяют..

Цитата(nckkm @ May 15 2012, 10:07)

ну вообще-то точное ТЗ не известно.
А вот с этим согласен, но ТС уже сто раз про это намекали..
andreUF
May 15 2012, 11:55
Спасибо за комментарии.
Уточните пожалуйста по нескольким моментам:
1. Каким образом и на чем основываясь вы выбрали именно - "5AGXA3, 5AGTC3 или аналогичные с бОльшим объемом Embedded memory (> 10,000 Kbits)"?
Какими данными руководствовались?
2. Не могли бы Вы уточнить о каналах, а лучше каким образом все 100 преобразований Фурье возможно реализовать? Т.е. предварительно выбрав 5AGXA3 - можно предположить, что все преобразования произойдут одновременно или параллельно?
3. И почему не из High-End FPGA?
пс. прошу понять и простить)
blackfin
May 15 2012, 13:38
Цитата(andreUF @ May 15 2012, 15:55)

Спасибо за комментарии.
Уточните пожалуйста по нескольким моментам:
1. Каким образом и на чем основываясь вы выбрали именно - "5AGXA3, 5AGTC3 или аналогичные с бОльшим объемом Embedded memory (> 10,000 Kbits)"?
Какими данными руководствовались?
2. Не могли бы Вы уточнить о каналах, а лучше каким образом все 100 преобразований Фурье возможно реализовать? Т.е. предварительно выбрав 5AGXA3 - можно предположить, что все преобразования произойдут одновременно или параллельно?
3. И почему не из High-End FPGA?
пс. прошу понять и простить)
1. Это результат запуска MegaWizard Plug-In Manager с дефолтными параметрами:
- Transform Length = 16384 (or 65536) Points ;
- Data Precision = 18;
- Twiddle Precision = 18;
- I/O Data Flow = Streaming;
2. Все каналы обрабатываются последовательно, друг за другом. Частота работы FPGA (> 200 MHz) позволяет сделать это с запасом. Но нужен будет внешний буфер. Вы намекнули, что пока для Вас это не важно..
3. Ну, можете выбрать Stratix IV, или Stratix V, или Virtex-6, или Virtex-7.. Для FFT на 65536 точек и 100 КГц достаточно любого кристалла с "Embedded memory (> 10,000 Kbits)", как, например, 5AGXA3.
andreUF
May 15 2012, 16:11
Благодарю Вас за отзывчивость.
1. Не могли бы Вы сказать, какие именно изменения произойдут при использовании внешнего буфера? И как, вернее на чем, строится его выбор?
2. Возможно ли рассчитать-прикинуть для подобного случая энергию потребления для fpga, на чем основываться?
3. Правильно ли утверждать (хотя бы аналитически), что затраченное время на все преобразования fft будет равно (6.5536 мс * 100)?
seldim
May 15 2012, 16:58
Цитата(blackfin @ May 15 2012, 07:30)

Что-то Вы как-то странно считаете.
Буфер на 65536 точек при частоте семплирования 100 КГц заполняется за 65536/100000 = 0.65536 секунды и за это время нужно вычислить FFT для каждого датчика.
Если датчиков 100, то на вычисление FFT для каждого датчика мы должны тратить не более 0.65536/100 = 0.0065536 секунды или 6.5536 мс.
Да описался, нолик забыл. 10 us на все датчики, а так дальше все правильно. Один датчик 100 ns * количество семплов 65536 получаем Ваши 6,55636ms. Я имел ввиду, что процессор умрет только на обработке входных данных от датчиков не говоря уже об преобразовании фурье (ктото предлогал процессор поставить

).
Цитата(seldim @ May 15 2012, 23:58)

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

).
завести входной поток аж в 10Мсэмплов/с = 20мБайт/с не проблема для практически любого dsp.
сигнальным процессорам вычислительной мощности для ффт надо, грубо говоря, 20 тактов на отсчёт. (посмотрите таблички по скорости ффт для tmsов и блэкфинов).
то есть 200 мипсов. если бы хватало внутренней или была бы внешняя память для буфера под данные, это смог бы осилить даже двухбаксовый ADSP-BF592.
причем даже без достаточного количества внутренней памяти, думаю, можно кусками подтаскивать и убирать обратно данные из внешнего СДРАМА через ДМА без особого ущерба производительности на каком-нибудь ADSP-BF512. одновременно складывая новые данные через PPI в ту же внешнюю память.
ну или TMS, как-то С55 с аппаратным ускорителем ффт или С64 у которых вычислительной мощности на порядок больше чем для данной задачи надо.
seldim
May 16 2012, 02:58
Цитата(_pv @ May 15 2012, 21:39)

завести входной поток аж в 10Мсэмплов/с = 20мБайт/с не проблема для практически любого dsp.
сигнальным процессорам вычислительной мощности для ффт надо, грубо говоря, 20 тактов на отсчёт. (посмотрите таблички по скорости ффт для tmsов и блэкфинов).
то есть 200 мипсов. если бы хватало внутренней или была бы внешняя память для буфера под данные, это смог бы осилить даже двухбаксовый ADSP-BF592.
причем даже без достаточного количества внутренней памяти, думаю, можно кусками подтаскивать и убирать обратно данные из внешнего СДРАМА через ДМА без особого ущерба производительности на каком-нибудь ADSP-BF512. одновременно складывая новые данные через PPI в ту же внешнюю память.
ну или TMS, как-то С55 с аппаратным ускорителем ффт или С64 у которых вычислительной мощности на порядок больше чем для данной задачи надо.
Я так понял Вы говорите об обработке уже готовых данных от датчиков. Тут я согласен процессор данные обработает, но их ему надо получить, а датчиков много. Наши програмисты воют, что у них вся производительность уходит на прием данных а на их обработку времени остается очень мало и приходится в плис готовить буфер с входными данными. Выше шла речь о том, что можно разделить задачу ПЛИС + процессор. Я считаю это заработает.
Хотя вообще информации мало. Какие сигналы от датчиков? Какой интерфейс?.
blackfin
May 16 2012, 03:44
Цитата(andreUF @ May 15 2012, 20:11)

1. Не могли бы Вы сказать, какие именно изменения произойдут при использовании внешнего буфера? И как, вернее на чем, строится его выбор?
2. Возможно ли рассчитать-прикинуть для подобного случая энергию потребления для fpga, на чем основываться?
3. Правильно ли утверждать (хотя бы аналитически), что затраченное время на все преобразования fft будет равно (6.5536 мс * 100)?
1. Вам нужна двухпортовая память на 65536*4*100 = 26,214,400 МБайт + контроллер управления этой памятью (DSP or FPGA).
2. Можете
прикинуть сами:

3. Нет, не правильно. Время затраченное на все преобразования fft будет равно 6.5536 мс.
andreUF
May 16 2012, 18:33
Низкий поклон, blackfin!
65536*4*100, а что за 4?
maksimp
May 16 2012, 18:35
Цитата(blackfin @ May 15 2012, 17:38)

3. Ну, можете выбрать Stratix IV, или Stratix V, или Virtex-6, или Virtex-7.. Для FFT на 65536 точек и 100 КГц достаточно любого кристалла с "Embedded memory (> 10,000 Kbits)", как, например, 5AGXA3.
А почему дешёвые Cyclone-3, Cyclone-4 и Spartan-6 не предлагаете? Вроде тоже должны тянуть, хотя в них памяти меньше и нужно будет подгружать из внешней памяти данные для следующего канала, делать БПФ и выгружать результат в внешнюю память. Но всё вместе может быть существенно дешевле
blackfin
May 17 2012, 03:04
Цитата(andreUF @ May 16 2012, 22:33)

65536*4*100, а что за 4?
Два буфера для 16-ти битных данных на входе и на выходе FFT.
Цитата(maksimp @ May 16 2012, 22:35)

А почему дешёвые Cyclone-3, Cyclone-4 и Spartan-6 не предлагаете? Но всё вместе может быть существенно дешевле.
Не предлагаю, потому что ни Cyclone-3, ни Cyclone-4, ни Spartan-6, ни любая другая FPGA для этой задачи вообще не нужны.
Это всё можно посчитать на любом приличном DSP за 20$. Но ТС упорствует. Возможно, что-то не договаривает...
andreUF
May 22 2012, 15:00
Спасибо за помощь. Сам понимал, что без ТЗ конкретно посоветовать что то тяжело. Однако мне самому нужно было немного понять и подразобраться с рядом моментов, параметров и т.д.
Представив свои выводы нашему научному сотруднику, я был разбит пух и прах (этого и следовало ожидать наверное)... но суть не этом.
Не могли бы Вы помочь мне с в данной задачи (продолжить помогать), к примеру оценив достаточность постановки задачи:
- разработка предназначенной для реализации на Плис структуры системы обработки информации, выполняющей 65536-точечное БПФ 100 действительных последовательностей. Отсчеты входных последовательностей поступают с АЦП в 16-тибитном коде с частотой дискретизации 0…100 Гц. Время выполнения преобразования не должно превышать времени накопления отсчетов.
Какие еще условия нужно знать для "правильного" решения задачи, а именно аппаратной реализации?
И не могли бы Вы также уточнить еще раз собственно требуемые аппаратные затраты для подкорретированной задачи?
анатолий
May 23 2012, 14:09
Непонятна предметная область. Обычно системы ЦОС делают для прореживания информации - а тут - для ее размножения.
Было 100 каналов - стало 6,5 млн. Зачем нужен такой длинный БПФ?
Если нужно спектральное разрешение, то лучше стандартное решение:
перенос частоты из интересного диапазона в ноль+ низкочастотная фильтрация + малоточечное БПФ.
При этом и объем буферов, и вычислительные затраты уменьшаются в десятки раз.
А оконную операцию во временной области для "борьбы с утечкой" вы где собираетесь проводить?
andreUF
May 24 2012, 06:11
видимо, я не правильно выразился... не сто последовательностей, а 100 каналов (думал одно и тоже, извиняюсь)
и как подсчитать количество операций сложения, умножения...
что собой будет представлять структурная (функциональная) схема, интересует как вообще аппаратно реализовать...
как подсчитать сколько будет затрачено вентилей, логических ячеек и т.д.
А если оконная функция на входе FFT, то еще таблица коэффициентов со свом умножителем...=)
andreUF
May 24 2012, 06:44
Я пытаюсь разобрать, руководствоваясь статьями, как
http://www.compitech.ru/html.cgi/arhiv/00_04/stat_52.htmтак там ничего про оконную ф-ю и нет.
Цитата(andreUF @ May 24 2012, 09:44)

Я пытаюсь разобрать, руководствоваясь статьями, как
http://www.compitech.ru/html.cgi/arhiv/00_04/stat_52.htmтак там ничего про оконную ф-ю и нет.
Вы без оконной функции получите спектр "с утечкой", а значит не достоверный за счет краевого эффекта во времени(упрощенно). Это классика ЦОС.
Погуглите "утечка спектра".
andreUF
May 24 2012, 07:40
В теории это всё ясно. Я не представляю как реализовать на FPGA и о влиянии оконной ф-и на аппаратную реализацию.
Пока моя главная цель - выяснить эти аппаратные затраты (понадобиться ли доп. память и др. уст-ва), обосновав их (проанализировав все параметры, скорости, время преобразования), для поставленной задачи.
Цитата(andreUF @ May 24 2012, 10:40)

В теории это всё ясно. Я не представляю как реализовать на FPGA и о влиянии оконной ф-и на аппаратную реализацию.
Пока моя главная цель - выяснить эти аппаратные затраты (понадобиться ли доп. память и др. уст-ва), обосновав их (проанализировав все параметры, скорости, время преобразования), для поставленной задачи.
Так в мегафункции FFT указывают рессурс для разных режимов настройки.... FFT само по себе стандартное решение(если лицензия есть), а вот окно придется ваять свое....
andreUF
May 24 2012, 10:21
дело то в том, что я не использую мегафункцию, код генериться из matlab&simulink.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.