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.

[参考译文] DP83869HM:本地、远程接收器不正常

Guru**** 2415970 points
Other Parts Discussed in Thread: DP83869HM

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1021092/dp83869hm-local-remote-receiver-is-not-ok

器件型号:DP83869HM
主题中讨论的其他器件:DP83869

我们在 AM335x 和1G SFP 之间使用 DP83869。  在 SFP 侧、链路正在建立。 但是、AM335x 的 SGMII 接口无法正常工作。

我注意到、DP83869中的 GEN_STATUS1寄存器为0、表示"本地接收器不正常"和"远程接收器不正常"。

第一个问题:什么会使它们"不好"?

RGMII_CTRL 为0x00d0、表示发送和接收时钟相对于数据移位。  我已经在 ANA_RGMII_DLL_CTRL 中尝试了多个值、分别是 DLL_TX_DELAY_CTRL_SL 和 DLL_RX_DELAY_CTRL_SL。

第二个问题: 延迟值 DLL_TX_DELAY_CTRL_SL 和 DLL_RX_DELAY_CTRL_SL 是什么(介于什么和什么之间)?  说明表示它们影响 CLK_90、但 CLK_90不会出现在数据表的其他位置。

如果它有影响: 1G SFP 线侧是连接到交换机的 RJ45铜质连接。  CFG_OPMODE 为1。  尽管交换机支持1G,但该链路正在协商为100/Half。  这会导致 AM335x 侧将 Tx RGMII 时钟设置为25MHz、而来自 PHY 的 RX 时钟设置为125MHz。

谢谢、
   Steve

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

    您好 Steve、

    键入时可能出错、但您能否确认 AM335X 是通过 RGMII 而非 SGMII 连接的。

    此外、当您出现 SFP 侧链路时、如何检查它? Gen_status1用于1000BaseTX (铜缆连接)、如果我理解正确、您将使用1000Base-FX 端口。

    您需要根据 AM335X 的 RGMII 模式选择 RGMII_Ctrl 值。 您能告诉我 AM335X 是以 RGMII 移位模式还是 RGMII 对齐模式运行吗? 我将建议相应地在 PHY 中编程所需的值。

    --

    此致、

    Vikram

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

    你(们)好、Vikram。

    是的、接口是 RGMII。

    我正在使用 BMSR 寄存器判断链路。  它是0x616d。  在我向 Linux 驱动程序(drivers/net/phy/dp83869.c)添加了对10 base T half 和100 base T full 的支持之前、在 Linux 执行重新协商后、该寄存器中的 LINK_STS1位未设置。

    整个 GEN_STATUS1寄存器是否仅适用于铜缆连接?  这是为什么在我的情况下未设置 REM_RCVR_STATUS 和 LOC_RCVR_STATUS_1位、也不是问题的指示?

    如注释所示、RGMII_CTRL 为0x00d0、因此时钟被移位。  这是因为我指示在 Linux 器件树中 phy-mode 是 RGMII-id。  这是我第二个关于 DLL_TX_DELAY_CTRL_SL 和 DLL_RX_DELAY_CTRL_SL 是什么测量值(介于什么和什么之间)的问题。  我已经为那些没有成功的人尝试了许多设置、并希望确切了解他们所指定的内容。

       Steve

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

    您好 Steve、

    很抱歉、我无法在周末之前查看您的消息。 是的、REM_RCVR_STATUS 和 LOC_RCVR_STATUS 位仅用于铜缆连接、您不会看到它们变为1用于光纤连接。

    当您对 PHY 的 RX 引脚使用 RGMII 移位模式时、RX_CLK (在 PHY 的引脚上)将相对于 RX_D*和 RX_CTRL 引脚及时移位。 延迟将由 DLL_RX_DELAY_CTRL_SL 控制。 当您对 PHY 的 TX 引脚使用 RGMII 移位模式时、在引脚处接收到的 TX_CLK 将相对于在 PHY 引脚上接收到的 TX_D*和 TX_CTRL 在内部移位。 此 TX 延迟将由 DLL_TX_DELAY_CTRL_SL 控制。 这些位集的默认值为'H7、值为'H7时钟和数据之间的延迟(如上所述)为~2ns (即8ns 时钟周期的~90度移位、因此称为 clk_90)。 如数据表中所述、它们可能会因~250ps 的步进可编程性而进一步偏斜。

    此外、如果您没有在 RGMII 移位模式下启动 PHY、而是在稍后通过对寄存器 x86进行编程来编程该模式、请确保您还将该寄存器的位9和8设置为1。

    我希望这澄清了用法。

    --

    此致、

    Vikram

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

    你(们)好、Vikram。

    我理解时钟移位的想法、但我正在寻找有关移位的详细信息、以了解要移入的移位量。

    在我的示例中、每个连接-数据和时钟-在 AM335x 和 PHY 之间具有大致相同的延迟。

    如 DP83869HM 数据表的图9所示、发送器正在更改时钟两个沿的数据。  该图中的 Tskrr 是否是要放入 DLL_TX_DELAY_CTRL_SL 中的值?  也就是说、使发送时钟偏斜的量、以便边沿位于数据位的中间、而不是位发生变化的时间?

    同样、看看图10、DLL_RX_DELAY_CTRL_SL 中的值是否为值 TsetupT、即延迟传出 RX 时钟的量、以便它最终在数据位的中间?

    当我询问"介于什么和什么之间"是测量延迟值时、我会得到这种结果。

    我是否正确理解了这两个延迟的含义?  如果没有、 测量的 ANA_RGMII_DLL_CTRL 中的延迟是多少。  正如我注意到的、他们的描述表明它会影响 CLK_90输出、但数据表的其他地方没有提到 CLK_90。

    如果我的上述解释正确、则存在传输问题。  当链路协商为1G 时、AM335x 使用125MHz 时钟。  但是、当链路协商为10MHz 或100MHz 时、RGMII 发送时钟设置为仅25MHz。  正如我注意到的、我电路板上的所有线路具有大致相同的延迟。  因此、为了使时钟边沿进入数据位的中间、我需要一半(1/25MHz)或  20、000ps 的延迟。  但是、DLL_TX_DELAY_CTRL_SL 最高只能为15 x 250ps 或4000ps。  因此、不可能为连接设置适当的延迟。

      Steve

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

    您好 Steve、

    延迟介于 Rx_clk 和 Rx_D*/Rx_Ctrl (由 DLL_RX_DELAY_CTRL_SL 控制)和 TX_clk 和 TX_D*/TX_Ctrl (由 DLL_RX_DELAY_CTRL_SL 控制)之间。 按照前面所述的编程值'H7,它会以2ns 的固定值偏移(与时钟频率:125MHz 和25MHz 无关)。 因此、您对 clk_"90"的困惑是真实的、您可以将其视为*_Clk 和相应的*_data 之间的延迟来忽略它。 是的、我们的想法是尽可能扩大设置和保持时间裕度(尽可能多)

    --

    此致、

    Vikram

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

    你好,Vikran。

    我们似乎在循环。  您告诉我如何指定延迟。  但 我想问的是如何确定我需要的延迟、而不是如何指定延迟。

    我认为,确定我需要多少延迟的部分是了解为什么您希望在"rx_clk 和 rx_D*/rx_ctrl"之间有任何延迟。  是否要像我所料的那样获得数据位中间的时钟边沿?  还是其他东西?  我认为、在我知道延迟要达到的值之前、我不能弄清楚需要什么延迟。

    我的上述延迟计算是否正确?  如果是、我需要20ns 的延迟、这大于您在寄存器中设置的延迟。

      Steve

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

    您好、Steve、

    很抱歉、如果我上次没有清除、RGMII 延迟设置可能会有点混乱。 但是、如果您参考 RGMII 标准、您将看到已为无延迟模式和无延迟引入模式定义了延迟和所需的设置/保持裕度。 但为了简化工作并提供直接答案:

    对于4ns 的时钟高宽度(125MHz 频率)、理想情况下、我们希望将时钟设置为从数据转换开始的2ns、以最大限度地提高设置裕度和保持裕度。

    2.对于20ns  的时钟高宽度(25MHz 频率)、理想情况下、我们希望将时钟设置为从数据转换到20ns 的时间、以最大程度地提高设置裕度和保持裕度。

    我们的 PHY 可以提供2ns 的延迟、在某个范围内、这可以通过250ps 的步长进一步增大或减小。 因此、20ns 是无法实现的、但 RGMII 标准要求的设置时间裕度为1ns、因此2ns 的漂移满足该要求的裕度。

    4.从数据方面转换 clk 获得的裕度也将被发送器端数据 clk 之间的板偏斜和偏斜所压。

    我希望以上几点将帮助您进一步了解延迟要求/概念。 如果需要、我还鼓励您详细了解 RGMII 标准。

    --

    此致、

    Vikram

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

    感谢维克拉姆提供的信息。   结果出现了许多问题。

    首先、DP83869的 Linux 驱动程序中存在一个错误。  自协商结果 由通用 PHY 例程 genphy_read_lpA ()确定、但该例程使用 MII_STAT1000 a.k.a. Gen_Status1。  但是、如上所述、GEN_Status1对光纤连接无效。  我们必须更新驱动程序以改用自定义 FX_STS 和 FX_LPABL 寄存器。  这样 CPsw 驱动程序就可以看到1G 的链路、因此可以为1G (125MHz)设置 RGMII 连接。

    其次、100M 连接的问题似乎是 SFP 中的问题。  看起来我们只支持1G 连接、而不支持10M/100M。  由于链路速度较低、使用正确的链路和使用25MHz 进行 RGMII 传输的 cpsw 驱动器时、我不确定 RGMII 总线上是否仍有问题。  我们将看到。

    最后、通过实验、确定 RGMII 总线上延迟的最小值在我们的情况下最有效。

    感谢你的帮助。

      Steve

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

    您好 Steve、

    首先、感谢您的更新、并对由于怀疑驾驶员存在缺陷而引起的问题深表歉意。 我已向团队报告、以验证观察结果。

    --

    此致、

    Vikram