Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как оценить скорость FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
zuy
Нужно принять решение подходит ли FPGA к моей задаче.
Рассматривается Spartan 3A.
Задача в 2-х словах такая. Идет поток данных по дифф. линиям LVPECL на скорости 600 Мбит/сек.
всего таких 32 линии.
Еще есть 64-битный модуль DDR2 памяти. Надо получать данные, и через раз писать в память.
В даташите я нашел что входные линии Spartsn3 работают до 633 Мбит/сек.

Вопрос в том, успеет ли Spartan3 принять данные на нужной мне скорости и сложить их в 64-х битный регистр для последующей обработки?
Если не успеет, то подскажите по каким парамерам в даташитх я должен это понять?
slog
Я так полагаю 633Mbit это в DDR режиме. Т.е. клок должен быть 316MHz.
DmitryR
Так. 32 линии по 600 мегабит = 64 разряда памяти по 300 мегабит, т.е DDR2 работает на 150 МГц. Вроде успеет, причем даже в медленном speedgrade. Однако приготовьтесь настраивать програмируемую задержку частоты, по которой принимается LVDS - у нас иначе не получалось. Впрочем, без нее такая скорость не получалась и на Virtex.

Другой вопрос - что потом с этими записанными в память данными потом делать?
zuy
Цитата(DmitryR @ Mar 13 2008, 17:16) *
Так. 32 линии по 600 мегабит = 64 разряда памяти по 300 мегабит, т.е DDR2 работает на 150 МГц. Вроде успеет, причем даже в медленном speedgrade. Однако приготовьтесь настраивать програмируемую задержку частоты, по которой принимается LVDS - у нас иначе не получалось. Впрочем, без нее такая скорость не получалась и на Virtex.


DDR2 успеет, я понимаю и есть пример реализации DDR2 400мегабит на Spartan3A. Но пособна ли Spartan3 принять данные 600 мегабит не в DDR режиме? Это главный вопрос.
Если в общем, то план такой:
1. Сделать 64-х битный буфер, и через такт ложить пришедшие 32 бита, сначала в первую часть буфера потом во вторую, т.о. на выходе получу через такт (т.е. 300МГц) 64 бита.
2. Далее я уже эти 64 бита буду в DDR2 писать, тут скорости уже хватает

Та вот по 1-му пункту успеет Spartan3 ?

Цитата
Другой вопрос - что потом с этими записанными в память данными потом делать?

Ну как, что делать, обрабатвать smile.gif
От меня данные просят, насчет дальнейшей обработки пока молчат.
DmitryR
Цитата(zuy @ Mar 13 2008, 16:58) *
Но пособна ли Spartan3 принять данные 600 мегабит не в DDR режиме? Это главный вопрос.

Нет, на это не способен даже Virtex. Но это не проблема - подайте эту 600 МГц частоту на DCM, поставьте ей проперть делить вход пополам сразу (CLKIN_DIVIDE_BY_2=TRUE), а также CLKFEEDBACK=NONE, CLKFX_MULT=2, CLKFXDIV=2 и снимите частоту с CLKFX. Дело в том, что CLK0 не умеет более 280 МГц, а CLKFX умеет 300 даже в медленном speedgrade. Таким образом вы получаете 300 МГц. С помощью нее захватывайте вход как DDR, с помощью моделирования находите значение FIXED PHASE SHIFT для DCM, при котором деленная частота окажется в нужной фазе по отношению к захватываемым данным. Моделируя помните, что у CLKFX джиттер будет около 700 ps.

Можно попробовать конечно тупо поделить 600 пополам на триггере, но это ненадежно, может дать локальный перегрев, да и фазу двигать все равно надо. Это короче last chance.

Цитата(zuy @ Mar 13 2008, 16:58) *
Ну как, что делать, обрабатвать smile.gif
От меня данные просят, насчет дальнейшей обработки пока молчат.

Так вы сразу прикиньте их первые слова, когда они молчать перестанут. Первыми словами будет просьба прочитать эти данные обратно. Если обработка идет пакетно, то есть сначала накапливаются данные, а потом неспешно обрабатываются - это нормально. Если же обработка должна идти в реальном времени - то надо сначала, немедленно после захвата обработать данные, иначе смысл гонять их туда-сюда? Вы можете просто не успеть: 200 МГц - это пиковая скорость работы DDR2 на Spartan-3A, а вам потребуется 150 туда и 150 оттуда, IMHO запас небольшой.
zuy
Цитата(DmitryR @ Mar 13 2008, 18:37) *
Нет, на это не способен даже Virtex. Но это не проблема - подайте эту 600 МГц частоту на DCM, поставьте ей проперть делить вход пополам сразу (CLKIN_DIVIDE_BY_2=TRUE), а также CLKFEEDBACK=NONE, CLKFX_MULT=2, CLKFXDIV=2 и снимите частоту с CLKFX. Дело в том, что CLK0 не умеет более 280 МГц, а CLKFX умеет 300 даже в медленном speedgrade. Таким образом вы получаете 300 МГц. С помощью нее захватывайте вход как DDR, с помощью моделирования находите значение FIXED PHASE SHIFT для DCM, при котором деленная частота окажется в нужной фазе по отношению к захватываемым данным. Моделируя помните, что у CLKFX джиттер будет около 700 ps.

Ага, вроде понял. Похоже что получается, на макете надо будет попробовать.

Насчет обработки. Поговорили, да, режим будет пакетный. На максимальной произвдительности FPGA должна по команде начать собирать данные и ложить в память. Длится это совсем не долго, потом она их по требованию выдает на обработку.
DmitryR
У меня еще родился в догонку совет посмотреть на Spartan-3, без буковок: у него есть DCI, что существенно упростит разводку, иначе на 64 разряда памяти вы там резисторами обрастете совсем. Правда, у него нет программируемой задержки в буферах, что оставляет возможность выравнять фазу частоты LVDS только с помощью DCM.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.