Есть PHY Marvell 1112 с интерфейсом SGMII, подключен к Cyclone IV GX, трансивер сконфигурирован в GIGE. Физически линк поднялся, байты туда-сюда шлёт.
Вопрос: насколько точно нужно следовать протоколу Ethernet?
Например:
1. нужно ли отправлять "правильные" IDLE последовательности, в зависимости от running disparity (/I1/ или /I2/). Однако на деле работает если просто отправлять /I2/ (этого достаточно для синхронизации SGMII линка), может быть PHY сам распознаёт (про то, что GIGE правильно подменяет IDLE кодовые группы в зависимости от чётности написано в даташите на трансивер)?
2. нужно ли правильно формировать End_of_packet? То есть /T/R/ или /T/R/R/ в зависимости от "количества байт". На деле, опять же, работает если просто делать /S/<d>...<d>/T/, PHY сам формирует правильную терминирующую последовательность?
3. если PHY выдал мне SOP, потом данные, а тут вдруг /V/ (Error_propagation), то придёт ли EOP? То есть следует ожидать такого поведения /S/... /V/ ... /T/ или такого /S/ ... /V/?
Если взять интерфейс GMII, то генерацией "правильных" idle/sop/eop занимается PHY и помогать ему не надо (да и нечем). SGMII работает так же? Или он ближе по идеологии к простому "преобразователю уровней" и надо полностью следовать протоколу, а то, что "и так работает" — счастливая случайность?
Нигде не могу найти подробное описание взаимодействия по протоколу SGMII. Бумага от Cisco не содержит ровным счётом никаких деталей на этот счёт(единственно оттуда почерпнул про autonegotiation PHY-MAC/config_reg). Да, можно написать машинку, которая будет полностью соответствовать стандарту 802.3, чтобы быть спокойным исходя из предположения, что PHY простой преобразователь уровней, но надо ли и не будет ли это проблемой?
UPD: Почитал внимательно бумагу Cisco — требуется полнценная реализация. Просто при беглом чтении не заметил, что там ссылки на диаграммы состояний из 802.3. Будем знать, извиняюсь за asking before googling.
Сообщение отредактировал ilynxy - Aug 21 2012, 14:33
|