Была подобная темя, ее закрыли http://electronix.ru/forum/index.php?showt...03&hl=sgmii.
Суть моей проблемы такова.
Есть Marvell, который железно неправильно сконфигурирован (не SGMII), необходимо настроить через SMI. Есть Kintex-7. Собираю систему с MicroBlaze и axi_ethernet. Запускаю SDK, создаю проект тестирования периферии. Тест не проходит. Повисает на функции XAxiEthernet_Reset, точнее при чтении регистра
CODE
XAxiEthernet_ReadReg(InstancePtr->Config.BaseAddress, XAE_IS_OFFSET) & XAE_INT_MGTRDY_MASK
В симуляции тоже самое, полез в код, выяснил, PCS модуль не выдает resetdone. Как я понял, нет синхронизации по SGMII линии MAC <-> PHY. Это действительно так, ведь Marvel работает в другом режиме. Т.е. получается, чтобы сконфигурировать PHY, необходимо обратиться по SMI, а пока resetdone от PCS не придет, SMI недоступен. Замкнутый круг. Что делать, непонятно.
Начал читать change log для axi_ethernet, увидел, ранее был глюк в ядре и resetdone давался ложный. Я попробовал использовать старую версию (правда не в Vivado, а в ISE 14.7). Получилось так, что функция XAxiEthernet_Reset, выполнилась успешно. Я получил доступ к SMI, настроил как мне надо. По регистрам я также узнал, что PHY поймал синхронизацию по SGMII. Также увидел на дифпаре SGMII (от PHY к FPGA) слабый сигнал ~200mV, хотя обратная дифпара (от FPGA к PHY) была ~500mV. Через регистры PHY настроил выходное напряжение, по уровню стало также ~500mV. Но все равно я так и не смог увидеть на стороне FPGA (MAC) наличие принятой синхронизации. Т.е. получается Marvell видит линию, а FPGA нет.
Вывод, мне так и не удалось поднять линк по SGMII.
- Как использовать последнюю версию ядра (т.к. она доступна только в Vivado и наоборот), когда синхронизации нет, а настроить через SMI необходимо?
- Есть идеи почему синхронизация может не заработать?