dxp 112 October 28, 2024 Posted October 28, 2024 · Report post Всем привет! 1GbE PHY KSZ9031RNX, подключен к Zynq-7000 PL посредством RGMII (там другого варианта и нет), приходит фрейм, при этом на rx_ctl во время поступления фрейма торчит лог. 1 -- такой красивый прямоугольный импульс получается. Т.к. там DDR интерфейс, то на этом сигнале попеременно должны присутствовать rxdv (по фронту) и rxer (по спаду). Т.е. если ошибок нет, то там должен быть меандр, а не импульс. При этом смотрю содержимое фрейма (захватываю ILA), всё приходит корректно, ошибок нет. Вопрос: это аномальное поведение данного PHY или так и должно быть, а я просто чего-то не понимаю? И попутно ещё вопрос: в доке на эту микросхему сказано, что по пути Tx она никаких сдвигов между данными клоком не делает, что это ответственность MAC -- добавить сдвиг порядка 2 нс или реализовать эту задержку на печатной плате. Есть ещё вариант внутри PHY подкорректировать до 1.38 нс, но я не стал этого делать, оно вполне несложно реализуется в FPGA. И вот не работает передача: тайминги вроде верные -- смотрю на пинах PHY, сдвиг клока ровно четверть периода, а на хосте не ловится. Включал loopback по линии, это работает, т.е. с кабелем и физикой всё в порядке. Возникает подозрение, нет ли тут какой-нить особенности или бага (хотя ерату просмотрел внимательно на два раза, ничего на эту тему не увидел)? Может кто-нибудь сталкивался? Quote Share this post Link to post Share on other sites More sharing options...
Alex11 8 October 28, 2024 Posted October 28, 2024 · Report post По линии RX_CTL по второму фронту передается не чистый RX_ER, а RX_DV xor RX_ER. Поэтому при отсутствии ошибок будет большой прямоугольник. К TX_ER это тоже относится. Если Вы передаете на TX_CTL меандр, то это воспринимается физикой как ошибка и она не будет ничего передавать. 1 Quote Share this post Link to post Share on other sites More sharing options...
dxp 112 October 29, 2024 Posted October 29, 2024 · Report post 10 часов назад, Alex11 сказал: По линии RX_CTL по второму фронту передается не чистый RX_ER, а RX_DV xor RX_ER. Поэтому при отсутствии ошибок будет большой прямоугольник. К TX_ER это тоже относится. Если Вы передаете на TX_CTL меандр, то это воспринимается физикой как ошибка и она не будет ничего передавать. Вот спасибо вам! Поправил, сразу взлетело. А где это описано? Это требование спеки на RGMII или это особенность данного PHY? Я внимательно читал доки и сопутствующие материалы, нигде ничего подобного не попалось, везде рисуют одинаково: безо всяких xor. И в доке на сам PHY, и в интернетах не попадается. Если гуглить целенаправленно, то можно найти об этом упоминания (https://en.wikipedia.org/wiki/Media-independent_interface), хотя ссылка сама по себе не особо релевантная для RGMII (там обо всех MII), но и только. Пытался найти саму оригинальную спеку, но ничего не попадается -- всякий левый шлак. Правда, в одном месте было txerr = txen xor txer. Возможно, поэтому на картинке так -- картинку таскают, а сопутствующий текст, видимо, нет. Quote Share this post Link to post Share on other sites More sharing options...
makc 314 October 29, 2024 Posted October 29, 2024 · Report post 5 часов назад, dxp сказал: Пытался найти саму оригинальную спеку, но ничего не попадается -- всякий левый шлак. https://web.archive.org/web/20110609013812/http://www.hp.com/rnd/pdfs/RGMIIv2_0_final_hp.pdf RGMIIv2_0_final_hp.pdf 1 Quote Share this post Link to post Share on other sites More sharing options...