大家好、
问题描述:
当 dp83867irrgz 实现100m 通信时、phy 和 PC end 自协商成功、但 PC 无法 ping 设备的 IP 地址
硬件平台是 Xilinx 的 zynq7000系列的7020。 dp83867irrgz (48引脚)与7020的 PS 终端连接。要求仅在 RGMII 模式下实现100MHz 网络通信。
原理图如下:
自举引脚仅引脚38 (Rx_ CTRL)上拉5.76k 电阻器并下拉2.49k 电阻器、以实现 mode3的自动协商使能、其他自举引脚在 mode1中处于开路状态
通过 MDC 和 MDIO、寄存器可以正常读写。 寄存器设置如下:
读取寄存器 Num[0000] PhyData[1140]
读取寄存器 Num[0001] PhyData[796D]
读取寄存器 Num[0002] PhyData[2000]
读取寄存器 Num[0003] PhyData[A231]
读取寄存器 Num[0004] PhyData[0DE1]
读取寄存器 Num[0005] PhyData[CDE1]
读取寄存器 Num[0006] PhyData[006F]
读取寄存器 Num[0007] PhyData[2001]
读取寄存器 Num[0008] PhyData[6001]
读取寄存器 Num[0009] PhyData[0300]
读取寄存器 Num[000A] PhyData[0800]
读取寄存器 Num[000b] PhyData[0000]
读取寄存器 Num[000c] PhyData[0000]
读取寄存器 Num[000d] PhyData[401F]
读取寄存器 Num[000E]物理数据[00D3]
读取寄存器 Num[000f] PhyData[3000]
读取寄存器 Num[0010] PhyData[1140]
读取寄存器 Num[0011] PhyData[6C02]
读取寄存器 Num[0012] PhyData[0000]
读取寄存器 Num[0013] PhyData[9CC0]
读取寄存器 Num[0014] PhyData[29C7]
读取寄存器 Num[0015] PhyData[0000]
读取寄存器 Num[0016] PhyData[0000]
读取寄存器 Num[0017] PhyData[0040]
读取寄存器 Num[0018] PhyData[6150]
读取寄存器 Num[0019] PhyData[444]
读取寄存器 Num[001A] PhyData[0002]
读取寄存器 Num[001B] PhyData[0000]
读取寄存器 Num[001C]物理数据[0000]
读取寄存器 Num[001D] PhyData[0000]
读取寄存器 Num[001E]物理数据[0002]
读取寄存器 Num[001F] PhyData[0000]
读取扩展寄存器 Num[0031] PhyData[10B0]
读取扩展寄存器 Num[0032] PhyData[00D0]
读取扩展寄存器 Num[0033] PhyData[0000]
读取扩展寄存器 Num[0043] PhyData[07A0]
读取扩展寄存器 Num[0055] PhyData[0000]
读取扩展寄存器 Num[006E]物理数据[000E]
读取扩展寄存器 Num[006F] PhyData[0100]
读取扩展寄存器 Num[0071] PhyData[0000]
读取扩展寄存器 Num[0072] PhyData[0000]
读取扩展寄存器 Num[0086] PhyData[00A8]
读取扩展寄存器 Num[00E9] PhyData[9F22]
读取扩展寄存器 Num[00FE] PhyData[E721]
调试结果:
1:LED0亮起、表示链路已建立;LED2间歇性闪烁、表示已接收或发送数据
2.从已连接 PC 上的任务管理器的"网络"中可以看出、PC 可以发现与100MHz 网络设备的连接、这表示 phy 和链接伙伴可以成功协商
3、RX_CLK 输出25MHz 时钟信号、RX_CTRL 将间歇性产生8321ns 高电平、而其他时间为低电平、RD0 ~ RD3也可测量波形
但是 GTX_CLK 没有信号生成、TX_CTRL 和 TX0 ~ TX3也保持特定的电平状态。 手册中有此类说明、如下面带下划线的部分所示。 但现在 GTX_CLK 没有时钟信号。
这是否意味着 MAC 与 PHY 的速率不同? 为什么没有相同的速率? 我们如何实现相同的速率?
总之、phy 和 link partner 之间的协商是正常的、但 phy 和 MAC 之间似乎没有有效的连接。 由于我不熟悉802.3协议、MAC 和 PHY 之间应该有哪种数据帧? 如何实现两层之间的通信?