Jump to content

    
Sign in to follow this  
iiv

Помогите, пожалуйста, с 1ГБит етернетом в ДЕ2 терасиковской борде

Recommended Posts

Всем привет,

 

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

 

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

 

На плиске непрерывно получаются данные (около 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 мбит у меня все работало.

 

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

 

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

 

Спасибо

 

ИИВ

Share this post


Link to post
Share on other sites
Посоветуйте, пожалуйста, самый простой и короткий путь для освоения такого гигибитного етернета!

какой вариант проще - решать вам. вариант с ниосом тут уже многие сделали, вливайтесь

Share this post


Link to post
Share on other sites
вариант с ниосом тут уже многие сделали, вливайтесь

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

 

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

 

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

2. можно ли как-то организовать все так, что кроме стоимости борды я не заплачу ничего за ИП корки, то есть если такой ниос, который бы и бесплатный был бы, и 1ГБит етернет бы поддерживал, или это сказки? Если сказки, то сколько надо еще вбить в бюджет денег?

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

 

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

 

Спасибо

 

ИИВ

Share this post


Link to post
Share on other sites
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, там много примеров.

Share this post


Link to post
Share on other sites

Я считаю, что для вашей задачи самый простой способ - прямая генерация и пересылка 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.

Edited by AndrewS6

Share this post


Link to post
Share on other sites

Добрый день, Андрей!

 

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

 

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

 

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

 

Рулить процессом может простейший автомат, который:

-считывает из РОМ заранее созданный заголовок с посчитанной CRC;

-загоняет ваши данные;

-вставляет четыре байта CRC-32, которое считалось параллельно с этапами 1 и 2;

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

 

Кроме того, необходимо грамотно сопрячь ваш блок с микросхемой 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.

 

В доках про RGMII слова есть :)

 

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

 

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

 

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

 

Спасибо!

Share this post


Link to post
Share on other sites

Если будете использовать готовые корки MAC контроллера, то GMII там будут уже реализованы.

Вам лишь останется правильно к ногам всё подцепить и проконтроллировать что правильно формируются клоки.

 

о GMII можно вкраце прочитать в вики.

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

 

Есть карка TSE от альтеры реализующая гигабитный МАС. она подлицензионная, но таблетки есть.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this