Полная версия этой страницы:
tcp/ip и udp/ip
RamZoom
May 17 2014, 09:09
Уважаемые форумчане если не сложно помогите разобраться с формированием посылок протоколов tcp/ip и udp/ip. Есть плата Altera + marwell 88e1111 в режиме RGMII 1G/s. В прилагаемой альтеровской документации описано только формирование udp посылки (Преамбула, Адрес назначения, Адрес Источника, Тип, Данные, Контрольная сумма), но на сколько я понял для связи с компьютером этого недостаточно, так как необходимо добавить в эту посылку канала, шлюза или может изменяются последовательность данных. Если кто занимался помогите пожалуйста с описанием или конкретным примером посылок tcp/ip, udp/ip реализованном на железе.
Alex11
May 17 2014, 10:57
Что там у Альтеры - не читал. То, что Вы описали - это еще не UDP, это произвольный Ethernet кадр, в него вкладывается хоть UDP, хоть что еще. Для общения с компьютером UDP достаточно, но в случае, если устройство в одном сегменте Ethernet с компьютером. В общем случае Вам придется еще поднимать ARP, для того, чтобы устройство было найдено по IP-адресу. Если Вам нужен TCP/IP, то там все еще сильно сложнее и лучше это делать с примменением процессора, а не на голой FPGA.
RamZoom
May 17 2014, 11:53
На сколько я понял протоколы ARP и RARP используются для прямого и обратного преобразований адресов, т.е. получения mac адреса после отправки широковещательной посылки и далее отправлять данные по полученному mac, а далее обмен посылками производится по IP. Вот вы сказали на счет произвольного кадра Ethernet , что в него вкладывать UDP..., а вкладывать нужно в поле ДАННЫЕ???
sorok-odin
May 17 2014, 12:40
Цитата(RamZoom @ May 17 2014, 15:53)

Вот вы сказали на счет произвольного кадра Ethernet , что в него вкладывать UDP..., а вкладывать нужно в поле ДАННЫЕ???
В данные пакета Ethernet вкладывать пакет IP, в данные пакета IP вкладывать пакет UDP, в данные пакета UDP вкладывать собственно полезную информацию. Почитайте про них хотя бы в википедии.
RamZoom
May 17 2014, 13:18
Прочитал немало инфы в инете, документации произодителей altera, xilinx, несколько книг, но общей картины структуры до вашего ответа не было. спасибо. попробую сформировать пакет.
Alex11
May 19 2014, 03:31
Есть такая программка Capsa от Colasoft. Она умееет, помимо всего прочего, формировать Ethernet-пакет со всем нужным содержимым для стандартных протоколов, в т.ч. UDP. И показывает все с разбивкой по полям.
iosifk
May 19 2014, 03:53
Цитата(RamZoom @ May 17 2014, 17:19)

Уважаемые форумчане если не сложно помогите разобраться с формированием посылок протоколов tcp/ip и udp/ip. Есть плата Altera + marwell 88e1111 в режиме RGMII 1G/s.
Вы почему-то начали с другого конца.
Дело не в самом " tcp/ip и udp/ip", а в том, кто эти пакеты формирует. Обычно этим занимается микроконтроллер. А если точнее - то ОС под управлением которой он работает. И для большинства ОС задача давно решена.
Тогда встает вопрос: "Почему ПЛИС?"... Вам придется в ПЛИС сделать командоаппарат или микроконтроллер с ОС и его отлаживать.
А что касается самих протоколов, то они все расписаны подробно в книгах. Только к Альтере это никакого отношения не имеет... Мало того, МАС в ПЛИС получается дорогой и урезанный...
RamZoom
May 21 2014, 14:40
На самом деле проблема заключается в том, что в моем циклоне 4 конечно нет встроенного контроллера. Ставить микроконтроллер смысла нет, только ARM и то который поддержит 125 Мгц. Область под приемо-передатчик заняла достаточно мало места в альтере. Осталась единственная проблема marwell пакеты передает, а комп ничего не видит.
doom13
May 21 2014, 16:17
Цитата(RamZoom @ May 21 2014, 21:50)

На самом деле проблема заключается в том, что в моем циклоне 4 конечно нет встроенного контроллера. Ставить микроконтроллер смысла нет, только ARM и то который поддержит 125 Мгц. Область под приемо-передатчик заняла достаточно мало места в альтере. Осталась единственная проблема marwell пакеты передает, а комп ничего не видит.
NIOS II можно встроить в любую FPGA. Почитайте эту
тему.
RamZoom
May 22 2014, 02:58
Спасибо за совет на счет NIOS II, но для успешной реализации собственных проектов необходимо полное понимание всех процессов. Я поэтому и задаю те вопросы здесь на форуме на которые сам не могу найти ответы или что-то понять. Можно взять NIOS II, ethernet мегафункцию, SDRAM мегафункцию и т.д... и ничего не понимая запустить проект. Может я в чем-то и не прав, но если нет понятия как и что собирается, формируется и передается любая даже незначительная ошибка приведет в тупик.
doom13
May 22 2014, 16:21
Цитата(RamZoom @ May 22 2014, 10:08)

Спасибо за совет на счет NIOS II, но для успешной реализации собственных проектов необходимо полное понимание всех процессов. Я поэтому и задаю те вопросы здесь на форуме на которые сам не могу найти ответы или что-то понять. Можно взять NIOS II, ethernet мегафункцию, SDRAM мегафункцию и т.д... и ничего не понимая запустить проект. Может я в чем-то и не прав, но если нет понятия как и что собирается, формируется и передается любая даже незначительная ошибка приведет в тупик.
А никто и не говорил, что Вы не понимая должны собрать всё в кучу, что всё сразу заработает. Использование Nios II c ядром TSE MAC просто облегчает работу с PHY уровнем и даёт больше возможностей. Если выбираете этот путь, то и почитать придётся немало, и с работой ядра разобраться, и Nios II изучить.
Поднять отправку пакетов по UDP в железе у Вас конечно же получится, но вот ARP, ICMP, IGMP, TCP (для того, чтобы Ваш девайс был полноценным сетевым устройством) без Niosa точно не потяните.
urchinS
May 22 2014, 22:24
Для начала позвольте уточнить:
1. Комп вообще не видит пакеты или не видит конкретно UDP пакетов?
Немного личного опыта (реализация мака на циклоне 3 с Фи от Микрел 10/100):
Комп не видел АРП ответы (не видел наглухо буд-то девайс и не отправлял ничего вообще тишина в WireShark)
оказалось что CRC был не верным, а такие пакеты дропаются и сниффер ничего не показывает.
Т.е. если у вас вся структура (Преамбула, Адрес назначения, Адрес Источника, Тип, Данные, Контрольная сумма) цела и корректна сниффер её поймает, что бы там не было в данных, хоть все нули.
Alex11
May 23 2014, 12:13
Еще подсказка. Лампочка на Ethernet разъеме компа мигает от физики, а не MAC, поэтому, если пакет хотя бы начал передаваться, то увидите, если соедините Вашу плату напрямую к компу и больше там никого не будет. Мигать еще может на передачу от компа, но заметите, есть мигания в такт посылаемым пакетам или нет. Если мигает, а в компе нет ничего совсем (даже в Shark'е) - то лечите контрольную сумму. Замкните две Ваших платы друг на друга и смотрите на приемной через SignalTap, что пришло.
RamZoom
May 23 2014, 14:28
Связка альтера - марвелл на отладочной плате со светодиодами
Нажмите для просмотра прикрепленного файла и соответственно я по ним и сужу о получении и отправке пакетов. Сами пакеты формирую согласно диаграмме
Нажмите для просмотра прикрепленного файла. Подозрение на то, что сигнал не соответствует диаграмме
Нажмите для просмотра прикрепленного файла
Alex11
May 23 2014, 15:20
А Вы сигналы на Marvell фрмируете AltDDIO или просто так? Если просто так - точно не заработает, фазу не подгоните правильную. Там даже с AltDDIO есть проблемы с фазой. Я когда запускал RGMII делал три клока с PLL - два в противофазе для разных AltDDIO (один для данных, другой для TxCtl) и отдельно внешний клок на физику. Его фазу пришлось устанавливать ручками в оптимальное положение. Проверьте осциллографом для начала, как идут сигналы на Marvell. Преамбула там вполне хорошо видна и фазы можно посмотреть.
RamZoom
May 23 2014, 16:19
Да использую AltDDIO. за основу взял документик an477_ru.pdf там как раз это и описывается. Я правильно понимаю придется двигать клок который идет на Phy, а клок на данных не трогать?
Да использую AltDDIO. за основу взял документик an477_ru.pdf там как раз это и описывается. Я правильно понимаю придется двигать клок который идет на Phy, а клок на данных не трогать?
doom13
May 23 2014, 16:38
Цитата(RamZoom @ May 23 2014, 23:29)

Да использую AltDDIO. за основу взял документик an477_ru.pdf там как раз это и описывается. Я правильно понимаю придется двигать клок который идет на Phy, а клок на данных не трогать?
Что значит: "придется двигать клок который идет на Phy, а клок на данных не трогать"? Есть данные и есть клок по которому они защёлкиваются. В Вашем документе (бегло просмотрел) показано, как задержать клок данных на 90 град. Как понял Вы отправляете пакет, wareshark ничего не видит. Так вот, если весь пакет правильный (контрольная сумма и т.д.), то данная задержка может спасти ситуацию. Вообще PHY сам умеет делать такую задержку, но для этого надо уметь писать-читать регистры PHY по MDIO. Тут использование MAC-ядра упростило бы Вам задачу.
RamZoom
May 24 2014, 14:41
Спасибо за совет. С MDIO я разобрался попробую прописать эту задержку, хотя думал подгонять тактирующий клок, который идет на marwell за счет pll
Alex11
May 26 2014, 11:30
Смотря какой сдвиг нужен. Не знаю, как Marvell, но мой PHY не мог обеспечить 90 градусов, а только небольшую подстройку, да и то с небольшой точностью. PLL дает бОльшую точность и диапазон.
RamZoom
Jun 23 2014, 17:39
Всем большое спасибо за помощь!!! Все получилось
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.