Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FFT корки из мегавизарда/корегена : как конфигурить?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
yes
нужно получить максимальное количество преобразований в секунду, при этом lattency может быть достаточно большим (даже 100мкс для 2048 точек не страшно)
это подсчет сверток, поток входных данных достаточно узкий (предполагаемая схема без особой хитрости fft->(N).*ref->(N)ifft->max search), опорные последовательности загружаются заранее
таких блоков M
ну и М*N*(1/T) должно быть максимально для ПЛИС и может занимать все ресурсы ПЛИС
входные данные малоразрядные, но это вроде и не важно так как прямых fft мало, для ifft получаетсю 16разрядными, выход можно 16-ти разрядным с округлением/масштабированием в процессе

пока не могу соотнести два fft даташита ксайлинский и альтеровский
кажется, что V5 должен быть значительно лучше (ну что-то типа 400МГц против 100 у циклона, а стандартный алгоритм реализован наверно одинаково)
но из-за квартуса, было бы конечно удобнее пользовать циклон

но в даташитах

----------------
берем
Streaming Data Flow Engine 1024 точки width 16

для циклона 3 (второго там нет, ) в ug_fft.pdf написано в табл 1-3
Transform
Time (μs)
4.33 (fMAX (MHz) 237, тактов 1,024)

для ксайлинса xfft_ds260.pdf табличка 8
1k Str N 16 16 - частота 445МГц, но циклов 2171 и Latency (μs) = 4.88

то есть хуже чем для циклона

что за фигня???

V5 получается медленнее при том что это топ и умножители у него целый DSP48 блок?

-----------------

что я не понял? как-то плохо соображаю - нужна подсказка




vadimuzzz
Цитата(yes @ Dec 8 2010, 18:44) *
что за фигня???

ну, частично наверное компромисс тактовая частота/латентность. ну и насчет архитектуры уточнить, у альтеры их 4, за хилых не скажу
VladimirB
Цитата(yes @ Dec 8 2010, 15:44) *
нужно получить максимальное количество преобразований в секунду, при этом lattency может быть достаточно большим (даже 100мкс для 2048 точек не страшно)
...
но в даташитах...

Если пошевелить мозгами то по-моему Альтера смухлевала.

У Альтеры, во всех таблицах для преобразования с длиной выборки N, число циклов, требуемых на преобразование, тоже равно N, а время преобразования тупо вычисляется как N делённое на тактовую частоту. В тоже время, для того чтобы преобразование началось мне нужно загрузить в ядро блок данных длиной N, что как раз и займёт столько же времени.

ИМХО варианта два: 1) Альтера не учитывает время загрузки данных, 2) либо она только его и учитывает (что судя по красивым цифрам - наиболее вероятно).

А по частоте как и положено Виртекс в 2 раза лучше Циклопа. Только ещё надо учесть, что у Виртекса самый медленный спидгрейд, а для какой скорости Циклопа меряла Альтера - ХЗ.

P.S. Альтера меряла для 6-й скорости Циклопа, которая судя по ценам самая быстрая. Мухлют буржуи sm.gif

P.P.S. У ксилинка написано что латентность меряется от начала загрузки первого байта данных до выдачи последнего байта преобразования.
А у Альтеры слово "latency" встречается всего 9 раз и все не в тему.

P.P.P.S. bb-offtopic.gif Поэтому я и не перевариваю даташиты от Альтеры - мутные они какие-то, кругом пальцы да ноги.
yes
спасибо

как я понял, мне нужна streaming (конвейерная/потоковая) реализация, которая имеет максимальную производительность (throughput)
там работает пайплайн и можно предположить, что для ксайлинса тоже будет 1024 такта для длины 1024,
при этом латентность (которая мне вобщем не критична) у альтеры скрыта(?), а у ксайлинса она побольше 1024

при этом у меня циклон 2 и по результатам синтеза/P&R в квартусе получается приблизительно вдвое меньше (90-110МГц), чем в даташите для C3

в то же время у виртекса получается 350-400 (тоже меньше, но по абсолютной величине получше sm.gif )

----------

но вопросы:
streaming жрет существенно больше ресурсов, чем burst
если я поставлю 2 burst-овых БПФера не получится ли так, что они посчитают быстрее, чем streaming посчитает 2 преобразования?
(по даташиту получается, что по скорости burst по основанию 4 в 3 раза медленнее, а ресурсов жрет в 1.5 раз меньше для моего случая, поэтому я и выбрал для начала потоковый, но может что-то упускаю?)

перебрать все варианты так сразу как-то трудно, хотелось бы получить пинок в нужном направлении

у ксайлинса вроде бы более разумно даташит написан - поэтому взял понятия оттуда

-----------

при этом альтеровские burst реализации пожирают больше ресурсов (QUAD OUTPUT память, а NUMBER OF ENGINES умножители и логику) при этом по даташиту затрачивают больше тактов, чем потоковая реализация
то есть вот так по даташиту вообще непонятно - нафига они нужны

скорее всего многоэнжинные бёрст реализации как раз таки дают выигрыш в латенси, который не показан для таблички streaming
но и у них DATA LOAD &TRANSFORM CALCULATION в тактах все-равно больше чем длина преобразования, а перекрытие блоков (конвееризация) достаточно маленькое - поэтому получается Nтактов=Msavples+ некая добавка
что тогда означаетотдельно TRANSFORM CALCULATION (который приблизительно пропорционален Msamples/Kengines)??? это только внутреняя гордость альтеровских бпфписателей?

======

как это пишут - дисклеймер : я не хочу опорочить альтеру, нужно понимать разницу в стоимости и прочем между виртексом 5 и циклоном 2. даже более - я бы предпочел циклон из-за квартуса и удобства железки.
но хотелось бы понять - как много я потеряю выбрав циклон
у меня два кИта, то есть стоимость железа не играет роли и вопрос, по-моему, имеет смысл

dmitry-tomsk
Если сигнал узкополосный, то делать свертку через fft вообще смысла нет, делайте напрямую с прореживанием, умножителей в xilinx хватит.
VladimirB
Цитата(yes @ Dec 8 2010, 19:15) *
спасибо...


У нас один товарисч выбирал для Виртексов между потоковыми FFT и пачкой блочных, потоковые оказались лучше по ресурсам.
У блочных латентность очень большая - поэтому их надо ставить очень много, чтобы результаты выдавать непрерывно как в потоковом.

Ещё на ресурсы сильно влияют такие параметры, как Scaling/Unscaling (масштабирование), переупорядочивание даннных на выходе (Bit reversed/Natural order).

А по Альтерам тут много специалистов - поспрашивайте понастойчивей - тогда вам раскажут каг разогнать Циклопа.



P.S. а вообще чудес не бывает бабочки-то одинаковые, что в блочном, что в потоковом - поэтому по умножителям теоретически должно быть одинаково, а вот блок-рамов сожрёт в блочных больше т.к. больше затраты на буферизацию данных.
Shtirlits
А в потоковом память-то зачем вообще?

Если в virtex-5 память почти не тормозит по сравнению с максимумом клокового дерева, то в третьем циклоне память заметно медленнее. Stratix-IV в плане умножителей и памятей выглядит не столь привлекательно, как virtex-5.
yes
еще раз спасибо,

что я понял :

в потоковом ресурсов больше и так (DSP) и этак (BRAM) : память там есть в каждой ступеньке, а в burst реализациях одна память и туда-сюда

пока непонятно - зачем альтеровцам burst реализации, потребляющие кучу ресурсов и имеющее маленькое внутреннее время преобразования, при том, чтобы выкачать данные все-равно надо N+ тактов?

также минусом альтеры считаю автоматическое внутреннее маштабирование - что там с шумами будет? мне, как человеку плавающему в тематике, это не понятно. и еще для алгоритмов поиска придется нормировать выход БПФ
как-то это пугает

-----

у ксайлинса очень понравилось скэйлинг скедьюл и выход overflow - то есть по-моему все правильно (это Scaling), и ресурсов жреть меньше и промоделировать можно. ну а если совсем понадобится - то и скэйлингом этим можно управлять

======

по поводу задачи - ну это поиск по задержки, поэтому считать просто свертки или согласованным фильтром - получается хуже по ресурсам и по времени
согласованный фильтр такой лезет в эти ПЛИС 1-2 шт и скорость у него поменьше, а FFT+IFFT лезет штук 5 (и при этом логики остается)
если делать сумматор не пирамидальным, а на DSP блоках многотактным, то это еще по производительности проигрыш
вобщем пока БПФ кажется самое подходящее


RobFPGA
Приветствую!

В общем случае памяти в бурст и потоковом требуется одинаково. Для N точечного - FFT 2N слов (IQ).
Если используется масштабирование после бабочек (ширина входных и выходных данных одинаковая) то общий объем памяти
будет одинаков. Если будет unscaled (то есть размер выходных данных шире чем входных) то для потоковой реализацию
требуется меньше памяти чем в бурст (если конечно FFT грамотно написано) , так как в бурст весь объем памяти необходимо выделять с максимальной разрядностью, а в потоковом количество слов памяти в каждой ступени уменьшается в 2 раза при увеличении разрядности на 2 бит.

А что у вас буде в качестве источника данных для FFT?

P.S. Virtex5 для этой задачи подходит значительно лучше чем циклона 3 - это все таки более старшее семейство FPGA (но и соответственно более дорогое)
хотя модули на базе Virtex5FX70 сейчас можно купить в районе $1000

Успехов! Rob
yes
Цитата(RobFPGA @ Dec 9 2010, 14:39) *
А что у вас буде в качестве источника данных для FFT?

хотя модули на базе Virtex5FX70 сейчас можно купить в районе $1000


из памяти малоразрядный (то есть с пропускной способностью нормально), а опорные сигналы загружаются не в реал-тайме

модуль такой и есть ML507
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.