Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Потеря пакетов по Ethernet'у
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
egorman44
Всем здравствуйте ! sm.gif

На устройстве используем 100 Мб Ethernet. На плате №1 имеется микросхема PHY которая принимает пакеты, далее передает их по MII к FPGA. FPGA осуществляет простой проброс MII интерфейса и через PLD коннекторы все это дело передается на плату №2. На плате №2 MII далее идет на switch к которому подключен процессор. В таком подключении сеть на процессоре присутствует. Но при проверке, допустим генерируя 2 Мб/с трафика, теряется 2% пакетов, приходящих к процессору.

По поводу длины линий, на плате №1, RX_CLK длиннее остальных на 50мм (полная длина линии от FPGA до PLD коннекторов 152 мм), между остальными линиями (RXD<0..3>, RX_DV, ... ) разбег не превышает 2.5 мм. На плате № 2 длины проводников согласованны.

Я занялся расчетами и получил что RX_CLK опаздывает (очень) примерно на 0,35 нс, период MII = 40 нс. Я так полагаю это не критично ?!

Пробовал пропускать сигналы RX линии MII через D триггеры тактируемые на частоте 150 МГц, пробовал задерживать сигнал RX_CLK на величину кратную 1/6 периода ничего не помогло . sad.gif

Господа прошу помощи в разрешении вопроса. Куда примерно посмотреть, что попробовать, чтобы исчезли потери пакетов. ?! sm.gif
des00
я бы начал с выяснения где именно и в каком направлении валятся пакеты. а уже потом бы думал как лечить.
egorman44
Цитата(des00 @ Jun 25 2015, 17:26) *
я бы начал с выяснения где именно и в каком направлении валятся пакеты. а уже потом бы думал как лечить.


Цитата(egorman44 @ Jun 25 2015, 12:58) *
Но при проверке, допустим генерируя 2 Мб/с трафика, теряется 2% пакетов, приходящих к процессору .


Генерирую трафик UDP, утилитой iperf. Во время теста мониторю вход RX_ERR на наличие ошибок, но событие не наступает .
des00
Цитата(egorman44 @ Jun 25 2015, 22:33) *
Генерирую трафик UDP, утилитой iperf. Во время теста мониторю вход RX_ERR на наличие ошибок, но событие не наступает .

RX_ERR это ЕМНИП ошибка: нечетное количество ниблов. надо принять пакет в плисе и на уровне мака посчитать CRC
Aleks17
Ну так то вам правильно сказали. Для начала стоить определить где теряются пакеты. Как я понял есть два линка (сеть - PHY - FPGA - switch) и (switch - CPU). Switch управляемый ? Содержит счётчики принятых/отправленных/ошибок? Flow control присутствует где-нибудь? Нет ли потери пакетов в софте процессора?
egorman44
Цитата(Aleks17 @ Jun 26 2015, 12:01) *
Ну так то вам правильно сказали. Для начала стоить определить где теряются пакеты. Как я понял есть два линка (сеть - PHY - FPGA - switch) и (switch - CPU). Switch управляемый ? Содержит счётчики принятых/отправленных/ошибок? Flow control присутствует где-нибудь? Нет ли потери пакетов в софте процессора?


Управляемый и даже подключен к процессору, но софт для процессора не написан sm.gif Так что switch просто устанавливается при включении по дефолту и вперед. Про flow control ответить затрудняюсь. На отладке проц с тем же софтом, но подключенный напрямую к PHY не теряет пакетов .

Есть предположение, что MII через PLD разъемы и общей трассой протяженностью примерно 20 см, может много чего поймать. Интересно, есть какая-нибудь бумажка, по поводу этого дела ? Например , длина проводников не должна превышать столько-то столько-то для MII. Или это ересь ?! sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.