Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите, пожалуйста, с 1ГБит етернетом в ДЕ2 терасиковской борде
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
iiv
Всем привет,

Пожалуйста, посоветуйте, как мне правильнее подступиться к моей незадаче.

Коротко о моей задаче:

На плиске непрерывно получаются данные (около 50МБайт в секунду), которые я хочу посредством 1ГБитного етернета посылать на компьютер. На компьютере стоит линукс, команду tcpdump уже изучил. С самого компьютера мне надо изредка посылать на плиску некоторые управляющие команды (около 1000 раз в секунду по несколько байт). По задаче хватает жирной плиски типа 4-того циклона с 200 умножителями и более. Опыт программирования альтеровских плисок - имеется, но только на уровне чистого верилога и системверилога. Сам алгоритм для плиски уже есть, на схожей борде я его уже запускал, работает, проблема в выборе борды и программировании быстрого интерфейса с компьютером.

Есть желание для этого проекта купить такую борду: http://www.terasic.com.tw/cgi-bin/page/arc...=139&No=502

так как и цена низкая, и в этот циклон все влезает, и два коннектора на гигабит имеются.

Скачал я с терасика конфигурационные файлы для борды, засунул туда свой проект, все компилится, но не знаю как мне данные качать по этому гигабитному етернету.

Во входе главного модуля етернет выглядит для меня так:

Код
//////////// Ethernet 0 //////////
output                                  ENET0_GTX_CLK;
input                                   ENET0_INT_N;
input                                   ENET0_LINK100;
output                                  ENET0_MDC;
inout                                   ENET0_MDIO;
output                                  ENET0_RST_N;
input                                   ENET0_RX_CLK;
input                                   ENET0_RX_COL;
input                                   ENET0_RX_CRS;
input                [3:0]              ENET0_RX_DATA;
input                                   ENET0_RX_DV;
input                                   ENET0_RX_ER;
input                                   ENET0_TX_CLK;
output               [3:0]              ENET0_TX_DATA;
output                                  ENET0_TX_EN;
output                                  ENET0_TX_ER;
input                                   ENETCLK_25;


и точно такое же на второй етернет коннектор. От того что я в мегавизарде сгенерил PHY и получил около сотни входов и выходов, как Вы догадываетесь, мне тоже легче не стало.

У меня сейчас получается несколько альтернатив:

1) освоить ниос (ни разу не пользовал и так до сих пор не понимаю как оно функционгирует хотя и пытался как-то разобраться), прикрутить через него и авалон то, что мне надо, возможно потом платить за всякие мегакорки дополнительные деньги,
2) разобраться с тем, что есть, и заслать UDP пакет, его устройство я немного представляю, по крайней мере я повторял то, что описано в
http://www.fpga4fun.com/10BASE-T0.html
и на 10 мбит у меня все работало.

Посоветуйте, пожалуйста, самый простой и короткий путь для освоения такого гигибитного етернета!

ЗЫ: если я в чем-то глообально прокололся, тыкните носом, я еще эту борду не заказал, еще есть время переиграть!

Спасибо

ИИВ
vadimuzzz
Цитата(iiv @ Mar 14 2011, 02:37) *
Посоветуйте, пожалуйста, самый простой и короткий путь для освоения такого гигибитного етернета!

какой вариант проще - решать вам. вариант с ниосом тут уже многие сделали, вливайтесь
iiv
Цитата(vadimuzzz @ Mar 14 2011, 05:27) *
вариант с ниосом тут уже многие сделали, вливайтесь

Добрый день, Вадим,

благодарю Вас за ответ. Я сам бы очень не против влится в стройные ряды ниосопользователей, но, пока есть только негативный опыт, поэтому, пожалуйста, тыкните пальцем что я делал не так:

1. демо примеры Терасика на ниосе на схожей борде (работа с ДДР2 памятью) отожрали почти 50тыс лютов, что, как мне кажется, очень много, мне критично, чтобы весь интерфейс (ниос+етернет) не отожрал бы больше 5К лютов и не более 10 умножителей и не более 5-10 к9м блоков памяти. Если будет больше, то, скорей всего, у меня поплывут констрейны в самом проекте (он на 200 мгц клоке, поэтому маленькое его ухудшение приводит к падению допустимой частоты).
2. можно ли как-то организовать все так, что кроме стоимости борды я не заплачу ничего за ИП корки, то есть если такой ниос, который бы и бесплатный был бы, и 1ГБит етернет бы поддерживал, или это сказки? Если сказки, то сколько надо еще вбить в бюджет денег?
2. с чего начать... Есть ли, например, пример перекачивания небольших 1-10КБайт массивов на фиксированный мак номер из плиски через ниос через гигабитный етернет, а именно для этой борды? Если да, где это для начинающих можно было бы посмотреть.

Пожалуйста, посоветуйте!

Спасибо

ИИВ
vadimuzzz
Цитата(iiv @ Mar 14 2011, 13:36) *
1. демо примеры Терасика на ниосе на схожей борде (работа с ДДР2 памятью) отожрали почти 50тыс лютов, что, как мне кажется, очень много, мне критично, чтобы весь интерфейс (ниос+етернет) не отожрал бы больше 5К лютов и не более 10 умножителей и не более 5-10 к9м блоков памяти. Если будет больше, то, скорей всего, у меня поплывут констрейны в самом проекте (он на 200 мгц клоке, поэтому маленькое его ухудшение приводит к падению допустимой частоты).

вы можете "заморозить" не относящуюся к ниосу часть проекта при помощи LogicLock. 50-60 MHz для ниоса хватит. памяти лучше побольше, если хотите весь софт в on-chip запихать, если есть внешняя память - отлично.
Цитата
2. можно ли как-то организовать все так, что кроме стоимости борды я не заплачу ничего за ИП корки, то есть если такой ниос, который бы и бесплатный был бы, и 1ГБит етернет бы поддерживал, или это сказки? Если сказки, то сколько надо еще вбить в бюджет денег?

бесплатный ниос есть, но он медленный. полный стоит около 500 енотов, у Stewart Little уточните. корка для эзернета есть бесплатная. я, правда, только со 100 Мбитной работал, но есть и гигабитная. в принципе, процы бесплатные есть, но тут сэкономленные деньги приведут к потраченному времени.
Цитата
2. с чего начать... Есть ли, например, пример перекачивания небольших 1-10КБайт массивов на фиксированный мак номер из плиски через ниос через гигабитный етернет, а именно для этой борды? Если да, где это для начинающих можно было бы посмотреть.

посмотрите на alterawiki.com, там много примеров.
AndrewS6
Я считаю, что для вашей задачи самый простой способ - прямая генерация и пересылка UDP-пакетов.

Рулить процессом может простейший автомат, который:
-считывает из РОМ заранее созданный заголовок с посчитанной CRC;
-загоняет ваши данные;
-вставляет четыре байта CRC-32, которое считалось параллельно с этапами 1 и 2;

Кроме того, необходимо грамотно сопрячь ваш блок с микросхемой PHY Ethernet, которая находится на плате.
Посмотрите, какой используется интерфейс (GMII, RGMII, SGMII) и реализуйте его.

update: судя по этому:
Код
input                                   ENET0_TX_CLK;
output               [3:0]              ENET0_TX_DATA;
output                                  ENET0_TX_EN;
output                                  ENET0_TX_ER;

там таки RGMII.
iiv
Добрый день, Андрей!

очень Вам благодарен за ответ!

Цитата(AndrewS6 @ Mar 14 2011, 11:02) *
Я считаю, что для вашей задачи самый простой способ - прямая генерация и пересылка UDP-пакетов.


Мне этот путь как-то более понятен!

Цитата(AndrewS6 @ Mar 14 2011, 11:02) *
Рулить процессом может простейший автомат, который:
-считывает из РОМ заранее созданный заголовок с посчитанной CRC;
-загоняет ваши данные;
-вставляет четыре байта CRC-32, которое считалось параллельно с этапами 1 и 2;

Именно это у меня уже есть для 10МБитного интерфейса, и, тьфу-тьфу, функционирует!

Цитата(AndrewS6 @ Mar 14 2011, 11:02) *
Кроме того, необходимо грамотно сопрячь ваш блок с микросхемой PHY Ethernet, которая находится на плате.

повидимому мне это и надо было справивать в первом моем топике!

Цитата(AndrewS6 @ Mar 14 2011, 11:02) *
Посмотрите, какой используется интерфейс (GMII, RGMII, SGMII) и реализуйте его.

update: судя по этому:
Код
input                                   ENET0_TX_CLK;
output               [3:0]              ENET0_TX_DATA;
output                                  ENET0_TX_EN;
output                                  ENET0_TX_ER;

там таки RGMII.


В доках про RGMII слова есть sm.gif

Я правильно понимаю, что вот например такой документ

http://www.hp.com/rnd/pdfs/RGMIIv2_0_final_hp.pdf

должен решить мою задачу?

Спасибо!
bark
Если будете использовать готовые корки MAC контроллера, то GMII там будут уже реализованы.
Вам лишь останется правильно к ногам всё подцепить и проконтроллировать что правильно формируются клоки.

о GMII можно вкраце прочитать в вики.
RGMII (Reduce Gigabit Media Independent Interface) это уменьшенный по количеству ног GMII (Gigabit Media Independent Interface).

Есть карка TSE от альтеры реализующая гигабитный МАС. она подлицензионная, но таблетки есть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.