This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DP83867IRRGZ 实现100M通信时与PC端自协商成功,但是无法ping通

Other Parts Discussed in Thread: DP83867IR

问题描述:DP83867IRRGZ 实现100M通信时,PHY与PC端自协商成功,但是PC无法ping通设备的IP地址

硬件平台是Xilinx的ZYNQ7000系列的7020,将DP83867IRRGZ(48pin)与7020的PS端连接,需要在只支持RGMII模式下实现100MHz的网络通信

原理图如下:

strap pin只有38引脚的RX_CTRL上拉5.76K电阻,下拉2.49K电阻,实现mode3 自动协商使能,其他strap pin处于上下拉都open的mode1

通过MDC和MDIO能够正常读写寄存器,寄存器设置如下:

Read Register RegisterNum[0000] PhyData[1140]
Read Register RegisterNum[0001] PhyData[796D]
Read Register RegisterNum[0002] PhyData[2000]
Read Register RegisterNum[0003] PhyData[A231]
Read Register RegisterNum[0004] PhyData[0DE1]
Read Register RegisterNum[0005] PhyData[CDE1]
Read Register RegisterNum[0006] PhyData[006F]
Read Register RegisterNum[0007] PhyData[2001]
Read Register RegisterNum[0008] PhyData[6001]
Read Register RegisterNum[0009] PhyData[0300]
Read Register RegisterNum[000A] PhyData[0800]
Read Register RegisterNum[000B] PhyData[0000]
Read Register RegisterNum[000C] PhyData[0000]
Read Register RegisterNum[000D] PhyData[401F]
Read Register RegisterNum[000E] PhyData[00D3]
Read Register RegisterNum[000F] PhyData[3000]
Read Register RegisterNum[0010] PhyData[1140]
Read Register RegisterNum[0011] PhyData[6C02]
Read Register RegisterNum[0012] PhyData[0000]
Read Register RegisterNum[0013] PhyData[9CC0]
Read Register RegisterNum[0014] PhyData[29C7]
Read Register RegisterNum[0015] PhyData[0000]
Read Register RegisterNum[0016] PhyData[0000]
Read Register RegisterNum[0017] PhyData[0040]
Read Register RegisterNum[0018] PhyData[6150]
Read Register RegisterNum[0019] PhyData[4444]
Read Register RegisterNum[001A] PhyData[0002]
Read Register RegisterNum[001B] PhyData[0000]
Read Register RegisterNum[001C] PhyData[0000]
Read Register RegisterNum[001D] PhyData[0000]
Read Register RegisterNum[001E] PhyData[0002]
Read Register RegisterNum[001F] PhyData[0000]
Read Extended Register RegisterNum[0031] PhyData[10B0]
Read Extended Register RegisterNum[0032] PhyData[00D0]
Read Extended Register RegisterNum[0033] PhyData[0000]
Read Extended Register RegisterNum[0043] PhyData[07A0]
Read Extended Register RegisterNum[0055] PhyData[0000]
Read Extended Register RegisterNum[006E] PhyData[000E]
Read Extended Register RegisterNum[006F] PhyData[0100]
Read Extended Register RegisterNum[0071] PhyData[0000]
Read Extended Register RegisterNum[0072] PhyData[0000]
Read Extended Register RegisterNum[0086] PhyData[00A8]
Read Extended Register RegisterNum[00E9] PhyData[9F22]
Read Extended Register RegisterNum[00FE] PhyData[E721]

调试结果:

1、LED0常亮,表示link建立;LED2间歇闪烁,说明有接收或发送数据

2、可以在连接的PC端通过任务管理器的“联网”看到PC能够发现与100MHz的网络设备的连接,说明PHY与link partner能够协商成功

3、RX_CLK一直输出25MHz的时钟信号,RX_CTRL会间歇产生8321ns左右的高电平,其他时间为低电平,RD0~RD3也能够测量到波形,

但是GTX_CLK一直没有信号产生,TX_CTRL和TX0~TX3也一直保持某一种电平状态,在手册里有这样一段描述,如下图下划线部分,

MAC会将TX_CLK一直保持在低电平,知道确认与PHY同速率。现在的状态GTX_CLK一直没有时钟信号,

是否说明MAC一直没有和PHY同速率?为什么没有同速率?怎样才可以同速率?

综上总结,从现象看,PHY与link partner端的协商正常,但与MAC似乎没有建立起有效的连接。因为对802.3的协议不熟悉,MAC和PHY

之间应该是怎样的数据帧?如何实现这两层的通信?请教各位,以上有哪里是存在问题的点

  • 您好,
    我已将您的问题发布在E2E英文技术论坛上了,请您关注E2E论坛的回复,谢谢
    e2e.ti.com/.../947816
  • E2E论坛工程师已给予回复:
    MAC应该提供一个与PHY提供的 RX_CLK相匹配的TX_CLK。zynq7000 MAC是FPGA实现的还是专用MAC接口?
    您能否确认连接到PHY-MAC接口的所有FPGA管脚是否具有内部上拉/下拉状态?根据SOR寄存器0x006E,设备的PHY ID似乎是0xE,对吗?这是通过外部strap 电阻设置的吗?
    (The MAC should provide a TX_CLK matching the RX_CLK provided by the PHY. Is the zynq7000 MAC an FPGA implementation or dedicated MAC interface?
    Can you also confirm if all FPGA pins connected to the PHY MAC interface have internal pull-up/pull-down states? Based on the SOR register 0x006E it appears the PHY ID of the device is 0xE, is that correct? Is this set through external strap resistors? )
  • 感谢工程师的回复,针对您的问题做一下说明:

    1、zynq7000 内部集成了FPGA和ARM,MAC是ARM端的专用MAC接口,连接到PHY-MAC接口的管脚是三态形式的,如下图

    2、PHY_ID这里是有点跟理论有点差异,我问题里描述的这个地方遗漏了一点,实际硬件是RXD0(33pin)跟RX_CTRL一样都是上拉5.76k,下拉2.49K,处于mode3,而RXD2是没有上下拉的open状态,理论上应该是PHYID3 = 0,PHYID2=0,PHYID1 = 1,PHYID0=0,实际上,RXD2在open状态下测量出的电压是0.6V,PHY芯片会将其判断为mode4,所以实际读取为PHYID3 = 1,PHYID2=1,PHYID1 = 1,PHYID0=0,在寄存器里读取的0x0E。这里RXD0~RXD3在不加上下拉的open状态下测量的电压都是在0.6V左右,不知道是否是个问题点?

    3、还有一点不太理解的是GTX_CLK和TX_CLK的区别,我选择的DP83867IRRGZ是48pin,只有GTX_CLK引脚,而64pin的IRPAP是有GTX_CLK和TX_CLK,是否GTX_CLK是在千兆时的时钟,而TX_CLK是10/100M的时钟?主控芯片这边是只支持RGMII的MAC接口,MAC专用接口只有一个TX_CLK的接口,是否表示我的主控只能跟48pin IRRGZ连接而不能连接64pin的IRPAP,因为64pin的IRPAP需要两种TX_CLK?我现在是在RGMII接口下的100MHz的通信,GTX_CLK是可以兼容10/100/1000MHz速率吗?

  • 2、 strap pins 在open状态下的电压为0.6V是有问题的。这表明MAC提供了一些上拉阻力,使设备进入中间模式。你能确认只有RXD[0:3]受此影响吗?

    3、GTX_CLK是在RGMII模式下从MAC提供给PHY的RGMII时钟。这应与RGMII模式下的RX_CLK频率相匹配。64pin设备中的TX_CLK是MII时钟,它是MII模式下PHY的输出。
  • 2、我在rst脚为低电平的状态测量了TXD0~3、TXCLK、TXCTL、RXD0~3、RXCLK、RXCTL,所有信号都是0.6V,理论上这些信号应该是0V左右吗?
    3、是不是可以理解为:48pin设备在10M/100M/1000MHz通信速率下,GTX_CLK分别为2.5M/25M/125M,该时钟信号是MAC端提供的;64Pin设备在10M/100M在时钟由TX_CLK提供,在1000MHz下时钟由GTX_CLK提供?

    我仔细阅读了datasheet “DP83867IR/CR Robust, High Immunity 10/100/1000 Ethernet Physical Layer Transceiver”,还有一些官网下载的调试文档,感觉大部分都是描述PHY层跟link partner之间的状态,能否描述一下48pin设备在100MHz通信速率下PHY和MAC之间的信号TXD0~3、TXCLK、TXCTL、RXD0~3、RXCLK、RXCTL在正常状态下应该是什么样的幅度?什么样的波形?
  • 2、TXD0~3、TXCLK、TXCTL、RXD0~3、RXCLK和RXCTL都有内部下拉电阻器,因此,如果要使用默认的strap settings,则这些引脚上的电压应接近0V,如数据表中的Strap Resistor ratio 表中所述。如果strap引脚上的电压为0.6V,当VDDIO为1.8V时,设备将strap至模式3或4。
    3、是的,您对48pin和64pin设备的TX_-CLK理解是正确的。

    在100 Mbps的速度下,RX_CLK和TX_CLK在25MHz下工作,振幅接近VDDIO设置。
  • Vivado里面 将上拉配置“disable"即可。
  • hi 您好,

    请问这个问题您解决了吗,我用其他的SOC控制DP83867的时候也遇到了一样的问题,TX_CLK一直没有信号,接收是有的。

  • 我的问题解决了,我是因为用FPGA控制网络芯片,bank电压用的1.8V,但是有一个配置电阻上下拉状态没有匹配1.8V,导致FPGA一直把网络芯片接口按照3.3V去判断逻辑高低,也就是接收到的数据全部判为0了,所以不会认为有接收到数据,你看看你的处理器的IO是什么电气特性,是否跟网络芯片能匹配

  • 非常感谢您这么快的回复,我用的是NXP的LS1028呢,根据您的提示我再研究一下这个IO口,再次感谢。