|
Выбор ПЛИС для БПФ, 2^16 (100 каналов) |
|
|
|
May 14 2012, 07:27
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Уважаемые специалисты, помогите подобрать ПЛИС, пожалуйста. (Не судите меня строго, начал заниматься разработкой алгоритмов на системном уровне, но встала задача срочно подобрать ПЛИС и прикинуть затраченное время на процесс обработки и энергию).
Ситуация следующая: имеется сто датчиков, с них сигналы на БПФ, после операций умножения и суммирования получаем энергетический спектр. Отсюда главный вопрос - какую и каким образом ПЛИС выбрать? - БПФ: количество точек от 2^14 (16384) до 2^16 (65536) - Разрядность данных 16-32 бит. Т.к. 100 датчиков, значит ли это, что требуется 100 "каналов"?? Т.к. не являюсь спецом в области программируемой логики - спрашиваю у Вас. Что будет быстрее, с учетом выбранного изделия, распараллеливание процесса обработки или последовательная об-ка? Как выяснить за сколько тактов, секунд реализуется операции умножения, суммы, умножения на вектор поворота?
Существует ли методика какая то? Некогда долго разбираться, результат нужен в ближайшее время! Помогите пожалуйста!
|
|
|
|
|
May 14 2012, 07:37
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806

|
"Я не профи и мне некогда долго разбираться " У xilinx прочтите http://www.xilinx.com/support/documentatio.../xfft_ds260.pdf. Там есть результаты - тип fft, кристалл , частота , сколько умножителей , блоков памяти , вентилей требуется, число тактов. Все кстати зависит от частоты этих датчиков.
|
|
|
|
|
May 14 2012, 07:47
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Огромное спасибо, сейчас почитаю! Еще вопросик - для Альтеры есть что нибудь? И для общего развития - не предпочтительнее ли использовать dsp?
|
|
|
|
|
May 14 2012, 11:23
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Что то я всё равно никак не соображу какую ПЛИСину выбрать. Пролистал Xilinx datasheet выше, да мозгов не хватает. Не могли бы Вы "пальцем ткнуть" как выбрать!!!
|
|
|
|
|
May 14 2012, 13:05
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 13-04-10
Пользователь №: 56 623

|
я бы сперва постарался посчитать размер необходимой памяти. Например, количество выборок входного сигнала 16К*16бит=264К бит для хранение сигнала от одного канала. Например столько же для хранения спектра. Умножаем на количество каналов 100, получаем ~6,5Мбайт. Врядли это можно разместить в ПЛИС, значит нужна будет внешняя DDR память. Попробовать оценить скорость потока данных, хватит ли пропускной способности памяти DDR и при скольки разрядах. Какой алгоритм использовать? Теоретически если считать спектр от потока (а не от массива), то можно не вычислять весь спектр с каждой новой выборкой, а пытаться модифицировать текущий спектр. Ведь одна выборка пришла, но и самая старая ушла. В принципе можно сделать за один проход вдоль массива спектра. Правда здесь возможно накопление ошибки вычислений. Не уверен на сколько этот метод возможен, но потенциально он экономит ресурсы.
|
|
|
|
|
May 14 2012, 16:17
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Благодарю за ответы. Если частота семплов с каждого датчика 100 KHz. И если пренебречь выводом и размером необходимой памяти пока что. То какая FPGA подойдет?
|
|
|
|
|
May 14 2012, 17:14
|
Гуру
     
Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261

|
Для параметров БПФ: Цитата(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 нужно удвоить.
Сообщение отредактировал blackfin - May 14 2012, 17:34
|
|
|
|
|
May 14 2012, 17:51
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Благодарю! Теперь буду разбиратся с предложенным, постараюсь больше не выпрашивать помощь). И прошу прощения за свою некомпетентность, просто наш спец свалил, а "работа не ждет".
|
|
|
|
|
May 14 2012, 20:07
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(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 так тем более справится.
|
|
|
|
|
May 15 2012, 03:00
|
Частый гость
 
Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142

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

Группа: Участник
Сообщений: 43
Регистрация: 13-04-10
Пользователь №: 56 623

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

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Спасибо за комментарии. Уточните пожалуйста по нескольким моментам: 1. Каким образом и на чем основываясь вы выбрали именно - "5AGXA3, 5AGTC3 или аналогичные с бОльшим объемом Embedded memory (> 10,000 Kbits)"? Какими данными руководствовались? 2. Не могли бы Вы уточнить о каналах, а лучше каким образом все 100 преобразований Фурье возможно реализовать? Т.е. предварительно выбрав 5AGXA3 - можно предположить, что все преобразования произойдут одновременно или параллельно? 3. И почему не из High-End FPGA?
пс. прошу понять и простить)
|
|
|
|
|
May 15 2012, 13:38
|
Гуру
     
Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261

|
Цитата(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.
|
|
|
|
|
May 15 2012, 16:11
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Благодарю Вас за отзывчивость.
1. Не могли бы Вы сказать, какие именно изменения произойдут при использовании внешнего буфера? И как, вернее на чем, строится его выбор? 2. Возможно ли рассчитать-прикинуть для подобного случая энергию потребления для fpga, на чем основываться? 3. Правильно ли утверждать (хотя бы аналитически), что затраченное время на все преобразования fft будет равно (6.5536 мс * 100)?
|
|
|
|
|
May 15 2012, 16:58
|
Частый гость
 
Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142

|
Цитата(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. Я имел ввиду, что процессор умрет только на обработке входных данных от датчиков не говоря уже об преобразовании фурье (ктото предлогал процессор поставить  ).
|
|
|
|
|
May 15 2012, 17:39
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(seldim @ May 15 2012, 23:58)  Я имел ввиду, что процессор умрет только на обработке входных данных от датчиков не говоря уже об преобразовании фурье (ктото предлогал процессор поставить  ). завести входной поток аж в 10Мсэмплов/с = 20мБайт/с не проблема для практически любого dsp. сигнальным процессорам вычислительной мощности для ффт надо, грубо говоря, 20 тактов на отсчёт. (посмотрите таблички по скорости ффт для tmsов и блэкфинов). то есть 200 мипсов. если бы хватало внутренней или была бы внешняя память для буфера под данные, это смог бы осилить даже двухбаксовый ADSP-BF592. причем даже без достаточного количества внутренней памяти, думаю, можно кусками подтаскивать и убирать обратно данные из внешнего СДРАМА через ДМА без особого ущерба производительности на каком-нибудь ADSP-BF512. одновременно складывая новые данные через PPI в ту же внешнюю память. ну или TMS, как-то С55 с аппаратным ускорителем ффт или С64 у которых вычислительной мощности на порядок больше чем для данной задачи надо.
|
|
|
|
|
May 16 2012, 02:58
|
Частый гость
 
Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142

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

|
Цитата(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 мс.
|
|
|
|
|
May 16 2012, 18:33
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Низкий поклон, blackfin!
65536*4*100, а что за 4?
|
|
|
|
|
May 16 2012, 18:35
|
Местный
  
Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023

|
Цитата(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 не предлагаете? Вроде тоже должны тянуть, хотя в них памяти меньше и нужно будет подгружать из внешней памяти данные для следующего канала, делать БПФ и выгружать результат в внешнюю память. Но всё вместе может быть существенно дешевле
Сообщение отредактировал maksimp - May 16 2012, 18:40
|
|
|
|
|
May 17 2012, 03:04
|
Гуру
     
Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261

|
Цитата(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$. Но ТС упорствует. Возможно, что-то не договаривает...
|
|
|
|
|
May 22 2012, 15:00
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
Спасибо за помощь. Сам понимал, что без ТЗ конкретно посоветовать что то тяжело. Однако мне самому нужно было немного понять и подразобраться с рядом моментов, параметров и т.д. Представив свои выводы нашему научному сотруднику, я был разбит пух и прах (этого и следовало ожидать наверное)... но суть не этом.
Не могли бы Вы помочь мне с в данной задачи (продолжить помогать), к примеру оценив достаточность постановки задачи: - разработка предназначенной для реализации на Плис структуры системы обработки информации, выполняющей 65536-точечное БПФ 100 действительных последовательностей. Отсчеты входных последовательностей поступают с АЦП в 16-тибитном коде с частотой дискретизации 0…100 Гц. Время выполнения преобразования не должно превышать времени накопления отсчетов.
Какие еще условия нужно знать для "правильного" решения задачи, а именно аппаратной реализации? И не могли бы Вы также уточнить еще раз собственно требуемые аппаратные затраты для подкорретированной задачи?
|
|
|
|
|
May 24 2012, 06:11
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
видимо, я не правильно выразился... не сто последовательностей, а 100 каналов (думал одно и тоже, извиняюсь)
и как подсчитать количество операций сложения, умножения... что собой будет представлять структурная (функциональная) схема, интересует как вообще аппаратно реализовать... как подсчитать сколько будет затрачено вентилей, логических ячеек и т.д.
Сообщение отредактировал andreUF - May 24 2012, 06:20
|
|
|
|
|
May 24 2012, 07:06
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

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

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
В теории это всё ясно. Я не представляю как реализовать на FPGA и о влиянии оконной ф-и на аппаратную реализацию. Пока моя главная цель - выяснить эти аппаратные затраты (понадобиться ли доп. память и др. уст-ва), обосновав их (проанализировав все параметры, скорости, время преобразования), для поставленной задачи.
Сообщение отредактировал andreUF - May 24 2012, 07:47
|
|
|
|
|
May 24 2012, 10:21
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 9-01-11
Пользователь №: 62 100

|
дело то в том, что я не использую мегафункцию, код генериться из matlab&simulink.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|