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.

[参考译文] DP83867E:以太网交换机的 RGMII 链路问题

Guru**** 2487425 points
Other Parts Discussed in Thread: DP83867E

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/680217/dp83867e-rgmii-link-issue-with-an-ethernet-switch

器件型号:DP83867E

你(们)好

我正在我的定制 FPGA 板上使用 DP83867E PHY。 如果我  将 FPGA 板直接连接到 PC、我将获得所需的吞吐量、Wireshark 上的内容看起来不错。 只有当我在 PC 和定制 FPGA 板之间使用千兆位以太网交换机时、我才会在 Wireshark 上进行大量重传、并且接收的吞吐量非常低。 在 PC 端、我运行的 iperf 客户端在两种情况下都具有相同的选项(连续发送数据10秒)、并且 FPGA 固件完全相同。 我 在 Altera 开发板(使用 Marvell 88e1111 PHY)上运行的相同吞吐量测试在使用和不使用以太网交换机时均正常工作。 当我查看 DP83867寄存器时、我具有以下寄存器值。

注册号 以太网交换机 无以太网交换机 注释
0000 0x1140 0x1140
0001. 0x7969 0x796D 链路状态:未与交换机建立
0002. 0x2000 0x2000
0003. 0xA231 0xA231
0004. 0x01E1 0x01E1
0005. 0xCDE1 0xCDE1
0006 0x006F 0x006F
0007. 0x2001 0x2001
0008. 0x6001 0x6001
0009. 0x0300 0x0300
000a 0x38FF 0x7C00
000d 0x401F 0x401F
000e 0x0000 0x0000
000 f 0x3000 0x3000
0010. 0x5048 0x5048
0011. 0xBC02 0xBC02
0012. 0x0000 0x0000
0013. 0x1C44 0x1C00
0014. 0x29C7 0x29C7
0015. 0x0001 0x0000
0016. 0x0000 0x0000
0017. 0x0040 0x0040
0018. 0x6150 0x6150
0019. 0x4444 0x4444
001A 0x0002 0x0002
001E 0x0002 0x0002
001F 0x0000 0x0000
0025. 0x0400 0x0400
0031. 0x10B0 0x10B0
0032. 0x10D3 0x10D3
0033. 0x0000 0x0000
0043. 0x07A0 0x07A0
006E 0x0000 0x0000
006 F 0x0000 0x0100
0071. 0x0000 0x0000
0072 0x0000 0x0000
0086 0x0077 0x0077
00FE 0xE721 0xE721
0134. 0x1000 0x1000
0135. 0x0000 0x0000

LED_0 搭接引脚(模式1) --- Mirrior 已禁用且 SGMII 已禁用

LED_1搭接引脚(模式1) ---  ANEG_SEL 为0、 RGMII 时钟偏差 TX[2]为0

LED_2搭接引脚(模式1) ---  RGMII 时钟偏差 TX[1]为0、 RGMII 时钟偏差 TX[0]为0

ANEG_DIS/EE_DIS (RX_CTRL 模式3)---- 我已将其从模式1更改为模式3、因为 https://e2e.ti.com/support/interface/ethernet/f/903/p/490569/1789543 

CLK_SKEW_RX 全部打开(模式1)、以及 PHY 无地址(模式1)

现在我的问题是、我无法使用以太网 交换机获得所需的吞吐量、我尝试了3种不同的交换机、无论是否使用管理接口、都有相同的问题。 如前所述、吞吐量 测试在 具有不同 PHY 芯片的 Altera 开发板上使用和不使用以太网交换机时均可正常工作。  

谢谢、

掸 Z

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

    与 Swtich 共享的寄存器转储没有链接。 但是、我相信您能够通过观察重传获得链路并进行数据包传输。

    您是否可以提供寄存器转储“带交换机”,其中链接是它们,并且您已经完成了一些数据包传输?


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

    感谢您的支持。 PHY 配置为自动协商、只要我用开关将其连接到 PC、链路就始终处于关闭状态。 我尝试通过重新启动自动协商来启动链路(在寄存器0x0000写入位9)、但仍然无法启动链路。 但是、如果我在没有开关的情况下连接它、链路始终处于启动状态。 请告诉我如何能够以数字方式建立链路、以便我可以观察 TCP 数据传输并为您提供寄存器转储。

    请注意位于0x000A 的状态寄存器
    在自动协商过程中、PHY 被配置为无交换机的主设备、但作为从设备、并在通过以太网交换机连接时接收空闲错误。

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

    我认为在您的案例中、您在执行数据时似乎失去了链接。 您能否尝试强制 DP83867进入从模式和主模式并查看稳定性?

    您可以使用寄存器0x0093:位11、位10来执行此操作。



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

    Geet、您好!

    因此、强制 DP83867E 进入主模式可与我们拥有的其中一个以太网交换机(NETGEAR GS105E)配合使用。 在强制 PHY 进入主模式之前、链路不稳定。 (根据 SNLA065A 文档、"当空闲错误计数为高电平时、接近0xFF 时、链路可能会
    丢弃、GPHY 将尝试与链路伙伴重新调整。") 强制 PHY 进入主控模式后、链路启动且稳定、我能够执行吞吐量测试(对于正常数据包、为~400Mbit/s)

    我还尝试了几台 HP ProCurve 1810G-8交换机(它支持 Auto-MDIX),但在强制 PHY 进入主模式后,链路始终处于关闭状态。  

    如果在连接到 HP ProCurve 交换机时不强制它进入主模式,则链路状态不稳定(链路状态在向上和向下之间切换,并且寄存器0x000a 的计数器将持续递增和重置)。 如果 在链路不稳定的情况下尝试将数据包从 PC 发送到 FPGA、则0x0015处的 RX_ER 计数器将增加。

    因此、PHY 在连接到不同的千兆位交换机时的行为似乎并不相同。 如何使 PHY 与不同的开关保持一致?  

    我在 DP83867E 数据表中找不到寄存器0x0093、我通过修改寄存器0x0009上的位11和12强制 PHY 进入主模式。

    谢谢、
    Shan

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

    掸邦,

    我还指的是寄存器0x0009。 错误地添加了"3"。

     在 HP ProCurve 1810G-8交换机上,您能否尝试两个实验:

    在 Dp83867上、禁用 Auto-MDIX 并使器件保持在从模式。

    2.在 Dp83867上、禁用 Auto-MDIX 并使器件保持在主控模式。

    此致、

    GET

    此致、
    GET

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

    我确实在 HP ProCurve 1810G-8交换机上运行了您建议的以下2项测试,我发现了以下两项测试。

    在 Dp83867上、禁用 Auto-MDIX 并使器件保持在从模式。

    为了禁用自动 MDIX、我按照 DP83867E 数据表的指示写入了寄存器0x0010的位6。
    链路状态不稳定、0x000A 处的计数器向上计数、然后复位。
    --------------------------
    寄存器 值
    0x0008 | 0x6801
    0x0009 | 0x0300
    0x000A | 0x38XX (计数器值不断变化)
    0x0010 | 0x5008
    0x0011 | 0xBC02
    --------------------------

    2.在 Dp83867上、禁用 Auto-MDIX 并使器件保持在主控模式。

    链路状态始终处于关闭状态。
    ------------------------
    寄存器 值
    0x0008 | 0x6801
    0x0009 | 0x1B00
    0x000A | 0x78FF
    0x0010 | 0x5008
    0x0011 | 0xBC02
    --------------------------


    此外、我还比较了 NETGEAR 交换机和 HP ProCurve 交换机在主模式下寄存器0x0010处的 MDI 交叉设置。
    ----------------------------------------------------
    寄存器 NETGEAR 价值 HP ProCurve 价值
    0x0010 0x5048 0x5048
    0x0011 0xBC02 0xBF02



    谢谢、
    Shan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将电路板上 PHY 芯片的25MHz 时钟振荡器(50ppm)替换为新的 MEMS 时钟 IC (10ppm)、现在一切正常。