Добрый день, господа!
Появилась у меня задача - написать простой 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? Или я опять что то упускаю?
Заранее спасибо!
Эскизы прикрепленных изображений