|
Гигабит Ethernet: RGMII и PHY 88e1111. Вопросы по взаимодействию |
|
|
|
Oct 9 2017, 07:40
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Добрый день, господа! Появилась у меня задача - написать простой MAC для связи FPGA c ПК по Гигабит Ethernet. Реализовано все это будет на Cyclone 4 (плата DE2 115). Вроде задача не сложная, но возник вопрос по взаимодействию с PHY (Marvell 88e1111), который установлен на плате. Обмен данных с PHY будет организован по интерфейсу RGMII. Собственно вопросы следующие: 1. Как правильно подавать управляющий сигнал TX_EN (transmit enable)? В стандарте на Ethernet (параграф 22) есть следующее описание - Код It shall be asserted by the Reconciliation sublayer synchronously with the first nibble of the preamble and shall remain asserted while all nibbles to be transmitted are presented to the MII Т.е. этим сигналом должны выделяются все байты преамбулы, судя из описания и картинки. Но в то же время, аналогичный сигнал RX_DV (Receive Data Valid), который идет от PHY, судя по описанию, устанавливается несколько иначе - Код RX_DV must encompass the frame, starting no later than the Start Frame Delimiter (SFD) and excluding any End-of-Frame delimiter. Здесь (при приеме от PHY) преамбула не обязана быть выделена этим сигналом. Выделен обязательно должен быть только байт SFD, идущий непосредственно переда байтами данных. 2. Правильно ли я понял, что получается немного разная логика формирования управляющих сигналов при приеме и передаче? Или я где то ошибся и есть еще какие то тонкости? 3. И как быть с байтом END OF FRAME? При приеме данных от PHY в описании есть явные указания на то, что он не выделяется сигналом RX_DV. А вот при передаче данных на PHY про это ничего не написано. Этот байт также не выделяется стробом TX_EN? Или я опять что то упускаю? Заранее спасибо!
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Oct 9 2017, 12:49
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(Kluwert @ Oct 9 2017, 13:52)  TX_EN взводится вместе с первым байтом вступления (кстати, большинство современных сетевых девайсов прекрасно принимают пакеты, даже если все 0x55 отсутствуют, главное, что бы был байт 0xD5) и заканчивается в точности за последним байтом проверочной суммы Eth-пакета. Абсолютно в точности та же хрень на приёме. Учтите, что для 4ых даже топовых Циклонов 125МГц - это уже жестковато, поэтому рекомендую все сигналы (даже GTX_CLK) протаскивать через altddio, иначе потом будете долго за голову хвататься почему "акула" всё красным подсвечивает  Так они взводятся именно с первым байтом преамбулы (0x55) или байтом SFD (0xD5 - который непосредственно переда данными)? И еще, правильно ли я понял, что для 1 Gb преамбула будет такая - 55 55 55 55 55 55 55, затем D5? Например, в 10 Gb (xgmii) несколько иная она - FB 55 55 55 55 55 55, затем D5. А по поводу клока GTX_CLK - идея кстати не плохая, использовать DDR. Сейчас еще немного покопался в описании на Etherent - вот нашел такие таблички (правда они для MII, для RGMII ничего нет): И вот там, что RX_DV, что TX_EN - устанавливаются именно вместе с первым байтом преамбулы (который 0x55) И еще по поводу клока, у Альтеры есть такой апликейшн ноут - AN 477: Designing RGMII Interfaceswith FPGAs and HardCopy ASICs Так там написано, что необходимо дополнительно настраивать внешний PHY на прием клока. Если не настраивать - то необходимо самому сдвигать фазу выходного клока на 90 градусов. Кто как делает: настраиваете PHY или двигаете клок? Цитата(XVR @ Oct 9 2017, 13:24)  Все правильно. Заметьте - TX_EN является входом PHY, а RX_DV - выходом PHY. Так что не удивительно, что логика разная. TX_EN должен сопровождать все данные, передаваемые в PHY. Он от себя в выходной поток ничего не добавляет. Например в xgmii логика одинаковая, что на прием, что на передачу. Плюс к тому, что считать данными? Преамбула, CRC, END FRAME BYTE тоже данные или нет?
Сообщение отредактировал gin - Oct 9 2017, 12:41
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 10 2017, 08:48
|
Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639

|
Цитата(gin @ Oct 9 2017, 16:49)  Так они взводятся именно с первым байтом преамбулы (0x55) или байтом SFD (0xD5 - который непосредственно переда данными)? И еще, правильно ли я понял, что для 1 Gb преамбула будет такая - 55 55 55 55 55 55 55, затем D5? Например, в 10 Gb (xgmii) несколько иная она - FB 55 55 55 55 55 55, затем D5.
А по поводу клока GTX_CLK - идея кстати не плохая, использовать DDR.
И еще по поводу клока, у Альтеры есть такой апликейшн ноут - AN 477: Designing RGMII Interfaceswith FPGAs and HardCopy ASICs Так там написано, что необходимо дополнительно настраивать внешний PHY на прием клока. Если не настраивать - то необходимо самому сдвигать фазу выходного клока на 90 градусов. Кто как делает: настраиваете PHY или двигаете клок? Я не знаю, кто чем взводится, но я вам написал выше: всё современное сетевое оборудование прекрасно работает, если даже все 55 пропущены. По клоку: настраивать физику по MDIO (хотя у некоторых это делается по умолчанию), если она такое вообще позволяет. Сдвигать клок на 4ом Циклоне практически не реально. А вообще, прежде чем вопросы задавать, не плохо бы ознакомится с вами же найденной литературой, сделать пару проектиков, набить шишек и потом уже задавать конкретные вопросы. Если вы хотите мастер-класса, то можете договориться с вашим работодателем и я могу за определённый гонорар провести обучение. А обучать вас разработке сетевых модулей через форум за бесплатно никакого интереса нету.
|
|
|
|
|
Oct 10 2017, 09:42
|

Частый гость
 
Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682

|
Цитата(Kluwert @ Oct 10 2017, 11:48)  Я не знаю, кто чем взводится, но я вам написал выше: всё современное сетевое оборудование прекрасно работает, если даже все 55 пропущены. Я не знаю, что как и насколько хорошо работает современное оборудование при отступлении от требований стандарта. Но знаю точно, что одна из гарантий работоспособности, разрабатываемой аппаратуры - это неукоснительное его соблюдение. Все остальное - это студенческие поделки. Цитата(Kluwert @ Oct 10 2017, 11:48)  Сдвигать клок на 4ом Циклоне практически не реально. А сдвигать клок на четвертом Циклоне - элементарно. Могу вам даже пару вариантов сходу предложить, как это лучше сделать. Так что тут еще вопрос, кто кому мастер класс проводить будет
Сообщение отредактировал gin - Oct 10 2017, 09:43
|
|
|
|
Сообщений в этой теме
gin Гигабит Ethernet: RGMII и PHY 88e1111. Вопросы по взаимодействию Oct 9 2017, 07:40 XVR Все правильно. Заметьте - TX_EN является входом PH... Oct 9 2017, 10:24 AVR Цитата(Kluwert @ Oct 9 2017, 13:52) реком... Oct 9 2017, 10:58  Kluwert Цитата(AVR @ Oct 9 2017, 14:58) Извините ... Oct 9 2017, 11:04   AVR Цитата(Kluwert @ Oct 10 2017, 11:48) Если... Oct 10 2017, 09:36  XVR Цитата(gin @ Oct 9 2017, 15:49) Например ... Oct 10 2017, 10:28   gin Цитата(XVR @ Oct 10 2017, 13:28) Принимай... Oct 10 2017, 10:47 _pv Цитатавот эти altddio как спасут здесь
RGMII по об... Oct 9 2017, 11:08 Magnum Если завернуть шину данных RXD на TXD и соединить ... Oct 11 2017, 03:51 _pv 0х55 в начале преамбулы вроде бы тянется ещё с тех... Oct 11 2017, 08:53 gin Цитата(_pv @ Oct 11 2017, 11:53) 0х55 в н... Oct 11 2017, 14:58  XVR Цитата(gin @ Oct 11 2017, 17:58) Возможно... Oct 11 2017, 15:09   gin Цитата(XVR @ Oct 11 2017, 18:09) При пере... Oct 11 2017, 15:19    x736C Цитата(gin @ Oct 11 2017, 18:19) Спасибо... Oct 11 2017, 15:53     gin Цитата(x736C @ Oct 11 2017, 18:53) https:... Oct 12 2017, 07:13    XVR Цитата(gin @ Oct 11 2017, 18:19) Спасибо... Oct 11 2017, 16:09  Mikhail241 Цитата(gin @ Oct 11 2017, 21:58) Возможно... Oct 12 2017, 07:29   gin Цитата(Mikhail241 @ Oct 12 2017, 10:29) h... Oct 12 2017, 07:47 esokol Регистры микросхемы 88e1111 - Datasheet стр. 118.
... Oct 13 2017, 11:19 BSACPLD Цитата(gin @ Oct 9 2017, 11:40) Появилась... Oct 13 2017, 22:36 gin Цитата(esokol @ Oct 13 2017, 14:19) Регис... Oct 15 2017, 14:04 дед предлагаю пример реализации для Гигабайтного шлейф... Oct 19 2017, 11:44 gin В общем в прошлый раз все настроил, написал свой M... Mar 21 2018, 17:25 new123 у меня marvell чуть другой номер на конце, только ... Mar 22 2018, 18:18 Kenav Считайте регистры состояния, после записи. Меняютс... Mar 23 2018, 06:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|