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.

[参考译文] DP8.3867万IR:RGMII至MDI传输路径问题

Guru**** 2451970 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/618329/dp83867ir-rgmii-to-mdi-transmit-path-issue

部件号:DP8.3867万IR

安装DP8.3867万IR后,我们推出新设计时遇到问题。  在10BaseT链接时,传出数据包看起来一点也不像以太网帧。  我们可以看到来自RGMII接口的TXEN处于活动状态,表示MAC有要传输的内容,但传出的MDI传输似乎不是有效的以太网帧。 请参阅随附的图片。

放大到较小的区域将显示以下内容。

不知道如何像MDI界面上那样描述这一点,但它看起来像一个非常短的前导码,带有帧尾指示。  正如您在上一幅图像中所看到的,有几个RGMII TXEN处于活动状态的时间。

我们已验证RGMII时间安排是否符合预期。  我们的路由匹配,因此我们将RX和TX RGMII时钟捆绑为2.0ns以满足计时。  检查寄存器后,捆扎读数正确。  

下面是MDI接口上接收到的数据包以及预期的相应RGMII RXEN。

我意识到它有点难看,但有前导码,SFD和分组数据。

下面是一个寄存器转储,其中显示了重置值与试图发送ping的MAC之间的差异。

注册名称 地址 值@重置 值后Ping
#BMCR 0x00 0x1140 0x1140
#BMSR 0x01 0x796D 0x796D
#PHYIDR1 0x02 0x2000 0x2000
#PHYIDR1 0x03 0xA231 0xA231
#ANAR 0x04 0x10 0x10
#ANLPAR 0x05 0x450 0x450
#ANER 0x06 0x65 0x67 差速器 已收到链接代码字
#ANNPTR 0x07 0x2001 0x2001
#ANNTRR 0x08 0x0 0x0
#CFG1 0x09 0x200 0x200
#STS1 0x0A 0x0 0x0
#1KSCR 0x0F 0x3000 0x3000
#PHYCR 0x10 0x4040 0x4040
#PHYSTS 0x11 0x6C02 0x7C02 差速器 页面已接收
#MICR 0x12 0x0 0x0
#ISR 0x13 0x0 0x1C44 差速器 收到的页面内部,
自动协商完成内部,
链接状态更改内部,
MDI交叉更改内部,
局域网唤醒(内部),
#cf2. 0x14 0x29C7 0x29C7
#RECR 0x15 0x0 0x0
#BOSCH 0x16 0x0 0x0
#STS2 0x17 0x40 0x40
#LEDCR1. 0x18 0x6150 0x6150
#LEDCR2 0x19 0x4444 0x4444
#LEDCR3. 0x1A 0x2 0x2
#CF3 0x1E 0x2 0x2
#CTRL 0x1f 0x0 0x0
#TMCH_CTRL 0x25 0x400 0x400
#FLD_CFG 0x2D 0x0 0x0
#CFG4 0x31 0x10B0 0x10B0
#RGMIICTL 0x32 0x00D3 0x40D3 差速器 保留…
#RGMIICTL2 0x33 0x0 0x0
#100CR 0x43 0x07A0 0x07A0
#strap _STS1 0x6E 0x0 0x0
#strap _STS2 0x6f 0x100 0x100
#BICCSR1. 0x71 0x0 0x0
#BICCSR2. 0x72 0x0 0x0
#RGMIIDCTL 0x86 0x77 0x77
#LOOPCR 0xFE 0xE721 0xE721
#RXFCFG 0x134 0x1000 0x1000

现在,我们对下一步的工作有一个不了解的地方。  是否有指针?

谢谢,Gary

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Gary:

    感谢您提供详细信息。 你能告诉我以下信息吗?

    您使用的是64引脚封装还是48引脚封装?
    您的参考时钟频率是多少? 请使用CLK_OUT引脚(XI引脚的缓冲版本)进行测量。
    您能告诉我您的耗材的电压吗?
    RBIAS电阻器的值是多少?
    请测量RBIAS电阻器的压降。


    这里需要注意的一点是,我不太理解为什么您有一个链接。 从注册转储中,DP8.3867万设置为自动协商,并且根据BMCR,它在1000M中具有链接。 但是看一下PHY状态寄存器,它显示您有一个100M链路。

    查看您的自动协商广告注册,您将不会广告任何模式。 您能否设置寄存器0x4以指示DP8.3867万支持10M模式? 最好在寄存器0x4中设置0x0050。

    从MAC中输出TX_CLK的频率是多少? 这将指示MAC认为链路运行的速度。

    此致,
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rob,

    相信我们发现了问题。 在我们的设计中,我们使用CLK_OUT引脚将GTX125参考时钟源送回MAC。 正如您提到的,CLK_OUT是参考时钟XI (25MHz)的缓冲版本。 在我们的设计中,我们需要PHY为RGMII GTX125参考时钟输出125MHz时钟。 一旦将注册IO_MUX_CFG (0x170)设置为0x080D,我们就可以通过ping从MAC到PHY再返回。 我希望CLK_OUT引脚能够根据链路速率进行调整。 即 1000BaseT CLK_OUT = 125MHz,100BaseT CLK_OUT = 25MHz和10BaseT CLK_OUT = 10MHz。 但事实并非如此。 将寄存器IO_MUX_CFG设置为0x080D时,CLK_OUT始终为125MHz。 我在这里错过了什么?

    感谢您的迅速回复。

    -Gary
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gary,

    如您所述,TX_CLK和RX_CLK具有基于链路速度的可变频率。

    DP8.3867万中的125 MHz基于线路驱动器的传输时钟,对于10/100/1000,始终为125 MHz。

    通常,需要125 MHz参考的MAC可以处理固定为125 MHz的参考时钟。 如果您的MAC位于FPGA IP上,则在10和100时工作正常。

    然后,RGMII的GTX CLK和RX_CLK通常源自125MHz。

    此致,
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rob,

    再次感谢您的迅速回复。 我会认为这个问题已关闭!

    -Gary