工具与软件:
我使用的是具有 SGMII 接口的 Xilinx VCU118板。
启用6线模式(设置扩展寄存器0xd3的位14)并确保 RX_CTRL 自举(寄存器0x31位7为0)的软件权变措施正确。 所有 phy 寄存器都收到无用值、但我能够以1G/全双工方式使用以太网(对我来说很奇怪)。 现在问题是 phy 寄存器具有错误的值、因此我在其上面运行的任何应用程序、读取错误的 phy 寄存器、我们无法看到从 MAC 到 phy 的任何数据传输。
如果我执行 SW 复位(为0x1F 设置位15)、则所有寄存器都将设置回正确的值、但现在 PHY 无法工作、因为它已切换回4线制模式。 如果我将其切换回6线模式、相同的寄存器会被更新为垃圾值循环开始。
我在论坛上(https://e2e.ti.com/support/interface-group/interface/f/interface-forum/829808/dp83867is-ti-phy-sgmii-clock-output-stops-after-20-seconds)看到了一个类似的问题。 但对我来说没有20秒 启用差分时钟后、我就能看到效果。
PHY 寄存器(地址:0x3)开头的值:
ADDR = 0x0:0x1140
ADDR=0x1:0x7949
ADDR=0x2:0x2000
ADDR=0x3:0xa231
ADDR=0x4:0x1e1
ADDR=0x5:0x0
ADDR=0x6:0x66
ADDR=0x7:0x2001
ADDR=0x8:0x0
ADDR = 0x9:0x300
ADDR = 0xA:0x0
ADDR=0xb:0x0
Addr=0xc:0x0
Addr = 0xd:0x401f
ADDR=0xe:0x1030
ADDR = 0xF:0x3000
ADDR = 0x10:0x5848
ADDR = 0x11:0x1302
ADDR=0x12:0x0
ADDR=0x13:0x1440
ADDR = 0x14:0x29c7
ADDR=0x15:0x0
ADDR=0x16:0x0
ADDR=0x17:0x40
ADDR=0x18:0x6150
ADDR = 0x19:0x4444
ADDR=0x1a:0x2
ADDR=0x1b:0x0
ADDR=0x1c:0x0
ADDR = 0x1d:0x0
ADDR=0x1E:0x2
ADDR=0x1f:0x0
ADDR = 0x25:0x400
ADDR=0x2C:0x141f
ADDR = 0x2D:0x0
Addr = 0x2e:0x221
ADDR=0x31:0x1030
ADDR=0x32:0xd3
ADDR=0x33:0x0
ADDR=0x37:0x0
ADDR=0x43:0x7a0
ADDR = 0x53:0x2055
ADDR=0x55:0x0
ADDR=0x6e:0x803
ADDR = 0x6F:0x50
ADDR = 0x71:0x0
ADDR=0x72:0x0
Addr = 0x7B:0x5dc
ADDR = 0x7c:0x7d
ADDR = 0x8a:0x0
ADDR=0x86:0xd7
Addr=0xa0:0x908
Addr=0xa1:0x607
ADDR=0xa2:0x1010
ADDR=0xa3:0x1010
Addr=0xb3:0x88
Addr = 0xc0:0x0
Addr = 0xc6:0x0
Addr = 0xd3:0x0
ADDR = 0x170:0xc10
启用6线模式后 PHY 寄存器值:
ADDR = 0x0:0x1140
ADDR=0x1:0x1f8
ADDR=0x2:0x174
ADDR=0x3:0xc00
ADDR = 0x4:0x1
ADDR = 0x5:0x4001
ADDR = 0x6:0x6
ADDR=0x7:0x0
ADDR=0x8:0x0
ADDR=0x9:0x0
ADDR = 0xA:0x0
ADDR=0xb:0x0
Addr=0xc:0x0
ADDR=0xd:0x0
Addr=0xe:0x0
ADDR=0xF:0x8000
ADDR = 0x10:0x3
ADDR=0x11:0x1
ADDR = 0x12:0x3
ADDR=0x13:0x0
ADDR=0x14:0x0
ADDR=0x15:0x0
ADDR=0x16:0x0
ADDR=0x17:0x0
ADDR=0x18:0x0
ADDR=0x19:0x0
ADDR=0x1a:0x0
ADDR=0x1b:0x0
ADDR=0x1c:0x0
ADDR = 0x1d:0x0
ADDR=0x1E:0x0
ADDR=0x1f:0x0
ADDR=0x25:0x0
ADDR=0x2C:0x0
ADDR = 0x2D:0x0
Addr = 0x2e:0x0
ADDR=0x31:0x0
ADDR=0x32:0x0
ADDR=0x33:0x0
ADDR=0x37:0x0
ADDR=0x43:0x0
ADDR=0x53:0x0
ADDR=0x55:0x0
Addr=0x6e:0x0
ADDR=0x6F:0x0
ADDR = 0x71:0x0
ADDR=0x72:0x0
ADDR=0x7B:0x0
ADDR = 0x7c:0x0
ADDR = 0x8a:0x0
ADDR=0x86:0x0
Addr=0xa0:0x0
Addr=0xa1:0x0
Addr=0xa2:0x0
Addr=0xa3:0x0
Addr=0xb3:0x0
Addr = 0xc0:0x0
Addr = 0xc6:0x0
Addr = 0xd3:0x0
ADDR=0x170:0x0
非常感谢您的任何帮助。 谢谢