VladimirB
Mar 29 2017, 10:06
Добрый день.
Есть самодельная плата с 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 не увеличивается.
Такой проблемы у нас нет и на 1Гиге.
Похоже что на одновременной передаче и приеме помеха перекрестная. Может неправильно кабель езернет зажат
http://www.hardware.zp.ua/docs/ether10.htm или разьем разведен не так или по питанию чтото выскакивает.
wolfman
Mar 29 2017, 12:30
А что уходит с MACа на PHY смотрели?
VladimirB
Mar 29 2017, 13:05
Цитата(litv @ Mar 29 2017, 15:19)

Такой проблемы у нас нет и на 1Гиге.
Похоже что на одновременной передаче и приеме помеха перекрестная. Может неправильно кабель езернет зажат
http://www.hardware.zp.ua/docs/ether10.htm или разьем разведен не так или по питанию чтото выскакивает.
Питание смотрели осциллографом с полосой 1ГГц - всё чисто.
Кабеля разные пробовали. Короткие, длинные, заводские, самодельные. Ничего не меняется.
Также осциллографировали сигналы на выводах разъёма RJ45 со встроенным магнетиксом при вставленном кабеле - они есть только на первых двух дифф.парах MDI0, MDI1 - на остальных контактах разъёма пустота.
Если бы бы неправильно включён разъём - то сигналы были бы на других ногах разъёма. Также подпаивал на проводках другой разъём с другой цоколёвкой от HALO - соответственно цоколёвку заново смотрел.
Самое обидное - никакой реакции, было бы хоть какое-нибудь ухудшение или улучшение.
P.S. На соседней ветке форума вчера бурно обсуждали как на двухслойке 100МБит Ethernet работает.
Вроде как преобладало мнение, что 100BASE-TX всё нипочём, и сопротивление волновое можно не согласовывать и длину дорожек по 10см делать.
P.S.2 Вот фрагмент платы с Ethernet.
Нажмите для просмотра прикрепленного файла
Все ли хорошо на клоке 88e1111? Осциллограммы на XTAL-ногах чистые? Также можно проверить сам кварц и номиналы пикофарадных конденсаторов.
VladimirB
Mar 29 2017, 13:57
Цитата(Flood @ Mar 29 2017, 16:44)

Все ли хорошо на клоке 88e1111? Осциллограммы на XTAL-ногах чистые? Также можно проверить сам кварц и номиналы пикофарадных конденсаторов.
У нас кварцевый генератор AU-25.000MBE-T.
iosifk
Mar 29 2017, 14:16
Цитата(VladimirB @ Mar 29 2017, 14:06)

P.S. ещё заметили, что пакеты обрезаются только когда идёт одновременный приём и передача данных. Если данные только принимать и не передавать обратно, то счётчик ошибок CRC в PHY не увеличивается.
А если на проводах сделать заглушку Tx-Rx, то нормально работает?
eugen_pcad_ru
Mar 29 2017, 18:10
WireShark-ом смотрите?
andrewkrot
Mar 29 2017, 19:39
Попробуйте свою прошилку на какой-нибудь плате с другим PHY чипом.
VladimirB
Mar 29 2017, 19:46
Цитата(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, то нормально работает?
Можно попробовать завтра диффпары перекрестить, чтобы ПК проверить.
А, чтобы так плату проверить, надо переписывать прошивку, делать генератор и проверятор пакетов.
Была похожая проблема. У меня резонатор стоял (не генератор, как у вас, ну и чип другой, хотя тоже марвеловский). Из-за ошибки в схеме резанатор был подключен к чипу через конденсаторы, которые на GND должны идти. Проходили все пакеты кроме самых длинных. Длинные обрезались как и в вашем случае. Предполагаю, что в моем случае имело место смещение тактовой, в результате которого буфер в PHY переполнялся на длинных пакетах. Попробуйте более точный генератор.
andrewkrot
Mar 30 2017, 15:12
Цитата(VladimirB @ Mar 29 2017, 22:46)

Да.
Promiscuous mode включён.
ОС Win 7.
Смотрели на разных ПК.
Дык там и ПЛИС другая.
Можно попробовать завтра диффпары перекрестить, чтобы ПК проверить.
А, чтобы так плату проверить, надо переписывать прошивку, делать генератор и проверятор пакетов.
А что мешает скомпилить для другой плис проект?
VladimirB
Mar 30 2017, 16:20
Цитата(andrewkrot @ Mar 30 2017, 18:12)

А что мешает скомпилить для другой плис проект?
Vivado, т.к. оно поддерживает ограниченное кол-во семейств.
andrewkrot
Mar 30 2017, 16:52
Цитата(VladimirB @ Mar 30 2017, 19:20)

Vivado, т.к. оно поддерживает ограниченное кол-во семейств.
Понимаю) Проект ведь Ваш тестовый не очень сложный, наверное. В ISE под спартан перепишите. Если на плате есть свободные пины от плис, то туда можно другого физика подцепить. Я на тестовых платах всегда вывожу на отдельный разъем неиспользованные пины плис. Если конечно, место есть. Когда все отлажено можно из платы выбросить, а можно и оставить
По ощущениям, у вас канал передачи влияет на канал приёма. Тут очень вероятна не правильная разводка платы и/или согласование с магнетикой(разъёмом)
По хорошему нужно смотреть разводку платы
VladimirB
Mar 31 2017, 12:02
Появилась новая информация.
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мм) и стоят согласующие резисторы см. схему.
Цитата(VladimirB @ Mar 31 2017, 15:02)

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

Возможно вы начинаете свои манипуляции по передаче до завершения процесса автоопределения. Попробуйте немного подождать по сбросу или вкл. питания.
Передача начинается с ПК по нажатию кнопки в программе - естественно жмём когда хотим. Можем и несколько раз нажать последовательно с паузами - результат не меняется.
Alex_AZ
Apr 3 2017, 04:54
Цитата(VladimirB @ Mar 31 2017, 17:02)

Появилась новая информация.
1) Если на ПК в свойствах сетевой карты убрать Автопределение скорости и жёстко поставить 100BASE-TX FullDuplex
то пакеты между ПК и платой начинают передаваться без ошибок и обрезанных пакетов нет.
При этом в 88E1111, при инициализации в регистрах жестко устанавливаем 100BASE-TX FullDuplex и в случае автоопределения сетевой картой скорости, связь идёт в том же режиме.
Возможно, при работе в Half-Duplex режиме не отслеживаются коллизии. В ядре MAC-контроллера из ISE были сигналы tx_collision и tx_retransmit для отслеживания подобных ситуаций. При возникновении коллизии нужно было повторно отправить поврежденный пакет.
VladimirB
Apr 3 2017, 07:59
Цитата(Alex_AZ @ Apr 3 2017, 07:54)

Возможно, при работе в Half-Duplex режиме не отслеживаются коллизии. В ядре MAC-контроллера из ISE были сигналы tx_collision и tx_retransmit для отслеживания подобных ситуаций. При возникновении коллизии нужно было повторно отправить поврежденный пакет.
Мы только в FullDuplex работаем - проверяли по осциллографу - две пары задействованы - соответственно коллизий быть не может, а обрезанные пакеты есть.
Half Duplex пробовали один раз включать - там всё хорошо было.
Jury093
Apr 3 2017, 10:03
Цитата(VladimirB @ Mar 29 2017, 16:57)

У нас кварцевый генератор AU-25.000MBE-T.
вам на три сообщения ниже посоветовали поменять генератор..
ваш AU-25.000MBE-T в доке имеет 50ppm, в доке на 88e1111 есть требование те же 50ppm
поставьте не хуже 25ppm, хотя бы для пробы..
кстати, если есть высокоточный частотомер, то измерьте частоту своего генератора, всякое бывает..
VladimirB
Apr 3 2017, 20:30
Дал другому разработчику FPGA в руки свой старый проект ISE 10.3 с менторовским MAC'ом и попросил переделать под эту плату и поднять гигабит.
Гигабит поднялся. 1000BASE-T. Передавали и принимали с loopback через фифо внутри ПЛИС по 5000 пакетов максимальной длины 1500 -
ни одной ошибки или потери пакета. Программное обеспечение на ПК и плата теже самые.
Завтра попрошу менторовский MAC на 100BASE-TX переделать.
Похоже чего-то не так либо с инициализацией 88E1111 или Xilinx TEMAC .
Последний вызывает подозрения. Раньше TEMAC был аппаратный, бесплатный, с драйвером и примером в SDK.
А теперь софтварный, без драйвера и примера для SDK и ёще и $520 хотят.
Может он чего-то с PHY делает не по ГОСТу или в MDIO пишет неправильно?
Golikov A.
Apr 4 2017, 06:33
Маков всегда было несколько. Бесплатный был до 100 Мбит и считал контрольную сумму программно. А гигабитные, да с железной контрольной суммой и прочими аппаратными плюшками всегда были платные.
При этом замечу что стандарт не говорит о том какие в phy должны быть регистры, как они должны лежать и как с ними работать (фиксированы только положение 2 или 3 регистров). Де факто у многих производителей основные регистры совпали, но не 100% у того же марвела 100 МБитная и 1 ГБитная физики имеют разные адреса регистров для настройки и процедуру настройки. Настройка от одной физики к другой не подходит.
Поэтому естественно все что делает драйвер с физикой надо как минимум проверять. Просто по ГОСТу она не настраивается, эта часть в стандарте не фиксирована.
Kluwert
Apr 12 2017, 08:41
Уважаемый, 88E1111 уже давно изьюзанная и абсолютно беспроблемная. Кстати, её с пр-ва снимают. Марвелл уже рекомендует на более современные переходить.
Так что ищите ошибку в проекте однозначно мой вам совет. А вообще MAC'и и настройки по MDIO надо руками писать - тогда всё будет прозрачно и под контролем.
VladimirB
Apr 16 2017, 22:24
Цитата(Kluwert @ Apr 12 2017, 11:41)

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

Кстати, её с пр-ва снимают.
А можно пруф? Как то не нашлось об этом ничего.
С испугу позвонили в avnet - они говорят 88е1111 будет до 2026 года выпускаться.
Проще кстати техасовские физруровни dp83867 - они с документами, стоят на демоплатах xilinx и видны в дереве устройств в linux.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.