Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Marvell 88E1111 обрезает пакеты
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
VladimirB
Добрый день.

Есть самодельная плата с Kintex7 и Marvell 88E1111.
В ПЛИС стоит ядро Xilinx TEMAC из Vivado 16.4.
Принимаемые пакеты с MACa берем по интерфейсу AXIstream закольцовываем и отправляем обратно напрямую, без участия DMA и микроблейзов.

Сеть 100BASE-TX, Full Duplex - 100МБит/c. Светодиоды на Марвеле, соответствующие светятся.

Плату подключаем напрямую к ПК.
С ПК отправляем 50 пакетов по 1514 байт с максимально возможной скоростью.
Назад в ПК приходят все пакеты, но примерно 2-3 штуки из них обрезанные по длине, случайным образом. Т.е. начало пакета правильное (счётчик), потом он резко обрывается.
Косяк на приёме данных с ПК. Смотрели чипскопом обрезанные пакеты идут уже с PHY на MAC. Включили внутри 88E1111 счётчик ошибок CRC, он увеличивается каждый раз на количество битых пакетов. Ещё когда в ПК смотрим обрезанные пакеты Wireshark'oм, то CRC у них правильная, что тоже указывает, что пакет побился на приёме, закольцевался с наружи TEMACa и ушёл обратно уже с новой CRC.

Проблема наблюдается на нескольких одинаковых платах.
Плата многослойка. От PHY до разъёма с магнетиксом где-то 20 мм.
Микросхема PHY 88E1111 вызвала подозрение - перепаял на новую от другого поставщика, с другой датой изготовления - ничего не изменилось.
Пробовали менять кабель, перепаивали резисторы согласующие на плате (вместо 50 ом ставили 75, 100, 120), добавлял конденсаторов по питанию, меняли разъём с магнетиксом: вместо MagJack TRP, аккуратно привертолётили HALO HFJ11-1G01ERL. Пробовали менять ПК на ноутбук. Ничего не меняется вообще - стабильно 2-3 пакета на 50 обрезанные.
С ПК на ноутбук той же программой передается всё нормально.

Питание в норме 2.5В и 1В, цифровое и аналоговое питание 2.5В развязано фильтром. Смотрели осциллографом и питание и сигналы на разъёме Ethernet. Ничего подозрительного не увидели.

Подскажите люди добрые, в чём тут может быть проблема?
Может еррата какая-нибудь есть?

P.S. ещё заметили, что пакеты обрезаются только когда идёт одновременный приём и передача данных. Если данные только принимать и не передавать обратно, то счётчик ошибок CRC в PHY не увеличивается.
litv
Такой проблемы у нас нет и на 1Гиге.
Похоже что на одновременной передаче и приеме помеха перекрестная. Может неправильно кабель езернет зажат sm.gif
http://www.hardware.zp.ua/docs/ether10.htm
или разьем разведен не так или по питанию чтото выскакивает.
wolfman
А что уходит с MACа на PHY смотрели?
VladimirB
Цитата(litv @ Mar 29 2017, 15:19) *
Такой проблемы у нас нет и на 1Гиге.
Похоже что на одновременной передаче и приеме помеха перекрестная. Может неправильно кабель езернет зажат sm.gif
http://www.hardware.zp.ua/docs/ether10.htm
или разьем разведен не так или по питанию чтото выскакивает.


Питание смотрели осциллографом с полосой 1ГГц - всё чисто.

Кабеля разные пробовали. Короткие, длинные, заводские, самодельные. Ничего не меняется.

Также осциллографировали сигналы на выводах разъёма RJ45 со встроенным магнетиксом при вставленном кабеле - они есть только на первых двух дифф.парах MDI0, MDI1 - на остальных контактах разъёма пустота.
Если бы бы неправильно включён разъём - то сигналы были бы на других ногах разъёма. Также подпаивал на проводках другой разъём с другой цоколёвкой от HALO - соответственно цоколёвку заново смотрел.
Самое обидное - никакой реакции, было бы хоть какое-нибудь ухудшение или улучшение.

P.S. На соседней ветке форума вчера бурно обсуждали как на двухслойке 100МБит Ethernet работает.
Вроде как преобладало мнение, что 100BASE-TX всё нипочём, и сопротивление волновое можно не согласовывать и длину дорожек по 10см делать.

P.S.2 Вот фрагмент платы с Ethernet.
Нажмите для просмотра прикрепленного файла
Flood
Все ли хорошо на клоке 88e1111? Осциллограммы на XTAL-ногах чистые? Также можно проверить сам кварц и номиналы пикофарадных конденсаторов.
VladimirB
Цитата(Flood @ Mar 29 2017, 16:44) *
Все ли хорошо на клоке 88e1111? Осциллограммы на XTAL-ногах чистые? Также можно проверить сам кварц и номиналы пикофарадных конденсаторов.


У нас кварцевый генератор AU-25.000MBE-T.
iosifk
Цитата(VladimirB @ Mar 29 2017, 14:06) *
P.S. ещё заметили, что пакеты обрезаются только когда идёт одновременный приём и передача данных. Если данные только принимать и не передавать обратно, то счётчик ошибок CRC в PHY не увеличивается.

А если на проводах сделать заглушку Tx-Rx, то нормально работает?
eugen_pcad_ru
WireShark-ом смотрите?
andrewkrot
Попробуйте свою прошилку на какой-нибудь плате с другим PHY чипом.
VladimirB
Цитата(eugen_pcad_ru @ Mar 29 2017, 21:10) *
WireShark-ом смотрите?


Да.
Promiscuous mode включён.
ОС Win 7.
Смотрели на разных ПК.

Цитата(andrewkrot @ Mar 29 2017, 22:39) *
Попробуйте свою прошилку на какой-нибудь плате с другим PHY чипом.


Дык там и ПЛИС другая.

Цитата(iosifk @ Mar 29 2017, 17:16) *
А если на проводах сделать заглушку Tx-Rx, то нормально работает?


Можно попробовать завтра диффпары перекрестить, чтобы ПК проверить.
А, чтобы так плату проверить, надо переписывать прошивку, делать генератор и проверятор пакетов.
Vitus
Была похожая проблема. У меня резонатор стоял (не генератор, как у вас, ну и чип другой, хотя тоже марвеловский). Из-за ошибки в схеме резанатор был подключен к чипу через конденсаторы, которые на GND должны идти. Проходили все пакеты кроме самых длинных. Длинные обрезались как и в вашем случае. Предполагаю, что в моем случае имело место смещение тактовой, в результате которого буфер в PHY переполнялся на длинных пакетах. Попробуйте более точный генератор.
andrewkrot
Цитата(VladimirB @ Mar 29 2017, 22:46) *
Да.
Promiscuous mode включён.
ОС Win 7.
Смотрели на разных ПК.



Дык там и ПЛИС другая.



Можно попробовать завтра диффпары перекрестить, чтобы ПК проверить.
А, чтобы так плату проверить, надо переписывать прошивку, делать генератор и проверятор пакетов.

А что мешает скомпилить для другой плис проект?
VladimirB
Цитата(andrewkrot @ Mar 30 2017, 18:12) *
А что мешает скомпилить для другой плис проект?


Vivado, т.к. оно поддерживает ограниченное кол-во семейств.
andrewkrot
Цитата(VladimirB @ Mar 30 2017, 19:20) *
Vivado, т.к. оно поддерживает ограниченное кол-во семейств.

Понимаю) Проект ведь Ваш тестовый не очень сложный, наверное. В ISE под спартан перепишите. Если на плате есть свободные пины от плис, то туда можно другого физика подцепить. Я на тестовых платах всегда вывожу на отдельный разъем неиспользованные пины плис. Если конечно, место есть. Когда все отлажено можно из платы выбросить, а можно и оставить
Wic
По ощущениям, у вас канал передачи влияет на канал приёма. Тут очень вероятна не правильная разводка платы и/или согласование с магнетикой(разъёмом)
По хорошему нужно смотреть разводку платы
VladimirB
Появилась новая информация.
1) Если на ПК в свойствах сетевой карты убрать Автопределение скорости и жёстко поставить 100BASE-TX FullDuplex
то пакеты между ПК и платой начинают передаваться без ошибок и обрезанных пакетов нет.
При этом в 88E1111, при инициализации в регистрах жестко устанавливаем 100BASE-TX FullDuplex и в случае автоопределения сетевой картой скорости, связь идёт в том же режиме.

2)Сетевую карту ПК замыкали кроссовой перемычкой саму на себя - ошибок нет, пакеты все передаются.



Цитата(Wic @ Mar 31 2017, 07:58) *
По ощущениям, у вас канал передачи влияет на канал приёма. Тут очень вероятна не правильная разводка платы и/или согласование с магнетикой(разъёмом)
По хорошему нужно смотреть разводку платы

Вот тут пишут, что Ethernet 100 пролезет везде, и можно ничего не согласовывать и использовать двухслойные и однослойные платы:
https://electronix.ru/forum/index.php?showt...p;#entry1488846

Но несмотря на это, у нас всё разведено с расчётом на 1Гбит/c короткими диффпарами 100 Ом (длина 20мм) и стоят согласующие резисторы см. схему.
Leka
Цитата(VladimirB @ Mar 31 2017, 15:02) *
Вот тут пишут, что Ethernet 100 пролезет везде, и можно ничего не согласовывать и использовать двухслойные и однослойные платы

К списку можно еще добавить навесной монтаж на BLD разъеме - резистивная обвязка к DE0-nano - без внешнего PHY, и даже без магнетики (кабель прямо к резисторам припаян).
Каких-либо проблем/потерь пакетов не заметил, кабель длиной ~1м (до компа).
andrewkrot
Возможно вы начинаете свои манипуляции по передаче до завершения процесса автоопределения. Попробуйте немного подождать по сбросу или вкл. питания.
VladimirB
Цитата(andrewkrot @ Apr 2 2017, 16:37) *
Возможно вы начинаете свои манипуляции по передаче до завершения процесса автоопределения. Попробуйте немного подождать по сбросу или вкл. питания.

Передача начинается с ПК по нажатию кнопки в программе - естественно жмём когда хотим. Можем и несколько раз нажать последовательно с паузами - результат не меняется.
Alex_AZ
Цитата(VladimirB @ Mar 31 2017, 17:02) *
Появилась новая информация.
1) Если на ПК в свойствах сетевой карты убрать Автопределение скорости и жёстко поставить 100BASE-TX FullDuplex
то пакеты между ПК и платой начинают передаваться без ошибок и обрезанных пакетов нет.
При этом в 88E1111, при инициализации в регистрах жестко устанавливаем 100BASE-TX FullDuplex и в случае автоопределения сетевой картой скорости, связь идёт в том же режиме.


Возможно, при работе в Half-Duplex режиме не отслеживаются коллизии. В ядре MAC-контроллера из ISE были сигналы tx_collision и tx_retransmit для отслеживания подобных ситуаций. При возникновении коллизии нужно было повторно отправить поврежденный пакет.
VladimirB
Цитата(Alex_AZ @ Apr 3 2017, 07:54) *
Возможно, при работе в Half-Duplex режиме не отслеживаются коллизии. В ядре MAC-контроллера из ISE были сигналы tx_collision и tx_retransmit для отслеживания подобных ситуаций. При возникновении коллизии нужно было повторно отправить поврежденный пакет.

Мы только в FullDuplex работаем - проверяли по осциллографу - две пары задействованы - соответственно коллизий быть не может, а обрезанные пакеты есть.
Half Duplex пробовали один раз включать - там всё хорошо было.
Jury093
Цитата(VladimirB @ Mar 29 2017, 16:57) *
У нас кварцевый генератор AU-25.000MBE-T.

вам на три сообщения ниже посоветовали поменять генератор..

ваш AU-25.000MBE-T в доке имеет 50ppm, в доке на 88e1111 есть требование те же 50ppm
поставьте не хуже 25ppm, хотя бы для пробы..

кстати, если есть высокоточный частотомер, то измерьте частоту своего генератора, всякое бывает..
VladimirB
Дал другому разработчику FPGA в руки свой старый проект ISE 10.3 с менторовским MAC'ом и попросил переделать под эту плату и поднять гигабит.
Гигабит поднялся. 1000BASE-T. Передавали и принимали с loopback через фифо внутри ПЛИС по 5000 пакетов максимальной длины 1500 -
ни одной ошибки или потери пакета. Программное обеспечение на ПК и плата теже самые.

Завтра попрошу менторовский MAC на 100BASE-TX переделать.

Похоже чего-то не так либо с инициализацией 88E1111 или Xilinx TEMAC .
Последний вызывает подозрения. Раньше TEMAC был аппаратный, бесплатный, с драйвером и примером в SDK.
А теперь софтварный, без драйвера и примера для SDK и ёще и $520 хотят.
Может он чего-то с PHY делает не по ГОСТу или в MDIO пишет неправильно?
Golikov A.
Маков всегда было несколько. Бесплатный был до 100 Мбит и считал контрольную сумму программно. А гигабитные, да с железной контрольной суммой и прочими аппаратными плюшками всегда были платные.

При этом замечу что стандарт не говорит о том какие в phy должны быть регистры, как они должны лежать и как с ними работать (фиксированы только положение 2 или 3 регистров). Де факто у многих производителей основные регистры совпали, но не 100% у того же марвела 100 МБитная и 1 ГБитная физики имеют разные адреса регистров для настройки и процедуру настройки. Настройка от одной физики к другой не подходит.

Поэтому естественно все что делает драйвер с физикой надо как минимум проверять. Просто по ГОСТу она не настраивается, эта часть в стандарте не фиксирована.
Kluwert
Уважаемый, 88E1111 уже давно изьюзанная и абсолютно беспроблемная. Кстати, её с пр-ва снимают. Марвелл уже рекомендует на более современные переходить.
Так что ищите ошибку в проекте однозначно мой вам совет. А вообще MAC'и и настройки по MDIO надо руками писать - тогда всё будет прозрачно и под контролем.
VladimirB
Цитата(Kluwert @ Apr 12 2017, 11:41) *
Уважаемый, 88E1111 уже давно изьюзанная и абсолютно беспроблемная. Кстати, её с пр-ва снимают. Марвелл уже рекомендует на более современные переходить.
Так что ищите ошибку в проекте однозначно мой вам совет. А вообще MAC'и и настройки по MDIO надо руками писать - тогда всё будет прозрачно и под контролем.

Про изъюзанность и безпроблемность знаем и сами применяли её много раз. Просто ПЛИС были с железным МАКом и готовый драйвер был в SDK.
А по этой теме вроде направление куда копать понятно, будет время добьём.
На новые Марвеллы (как на ZedBoard) будем переходить обязательно, т.к. месяц назад, наконец-то, добрые люди выложили сверхсекретный даташит в закрома.
Unfog
Прошу прощения за оффтоп, но
Цитата(Kluwert @ Apr 12 2017, 11:41) *
Кстати, её с пр-ва снимают.

А можно пруф? Как то не нашлось об этом ничего.

litv
С испугу позвонили в avnet - они говорят 88е1111 будет до 2026 года выпускаться.

Проще кстати техасовские физруровни dp83867 - они с документами, стоят на демоплатах xilinx и видны в дереве устройств в linux.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.