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.

[参考译文] DP83867IS:查询在 SGMII 下无 PHY 复位时 GMAC 复位时的 PHY 行为和所需的处理

Guru**** 2952510 points

Other Parts Discussed in Thread: DP83867IS, DP83TG720S-Q1

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1650639/dp83867is-inquiry-on-phy-behavior-and-required-handling-when-gmac-is-reset-without-phy-reset-under-sgmii

器件型号: DP83867IS
主题中讨论的其他器件: DP83TG720S-Q1


【情况】
请考虑以下情况:由于外部因素、GMAC 块复位/重新启动、而 PHY 保持持续通电并保持链路建立状态。

在这种情况下:

  • 不会在 PHY 上执行下电上电
  • 未拔下/重新插入电缆
  • 在初始链路建立后、不会请求重新触发自动协商

在这些条件下、我们希望在 GMAC 复位前后无缝使用 PHY、而不更改 PHY 状态。

您能否告知是否有任何具体要求、限制或推荐的处理程序、以确保在此用例中正确操作?


[背景/观察到的行为]
目前、我们在原型设计中观察到以下行为:

  • 当 GMAC 块在不复位 PHY 的情况下重新启动时、PHY 似乎保持与链路伙伴的链路建立状态。
  • 但是、GMAC 和上层之间的数据通信似乎不再起作用(即 TX/RX 数据似乎没有正确地通过 GMAC 接口流动)。

【问题】

  1. 此行为是否应该作为 PHY 规范的一部分(尤其是在 SGMII 运行下)?
  2. GMAC 复位是否需要在 PHY 端执行任何重新初始化或重新同步序列(例如 SGMII 重新协商,重新配置或寄存器重新编程)?
  3. 是否有任何建议的权变措施或最佳实践来在不复位 PHY 的情况下保持正常数据通信?

[配置/范围]

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

    您好:

    在您所描述的场景中、我希望 PHY 继续运行。 MAC 复位对信号链的唯一影响是按照本文所述的方式重新完成 SGMII 自动协商。 我建议通过切换寄存器 0x14[7]或寄存器 0x10[11]来重新启动 PHY 上的自动协商。

    此致、
    Gerome

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

    亲爱的 Gerome Cacho San、
    非常感谢您的迅速答复。 注意、

    >>我建议通过切换寄存器 0x14[7]或寄存器 0x10[11]来重新启动 PHY 上的自动协商。
      =>让我确认你说的“或“的具体行动,对吗?
      此外、您说过“切换“意味着一旦在启用后禁用、对吧?

    此致、
        Asano

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

    尊敬的 Asano-San:

    • 是的、您的理解是正确的、这意味着“或“。 您可以尝试这两个选项。  
    • 正确。

    此致、

    GREG

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

    感谢您发送编修。我们会重新检视您的建议。

    ##这是附加问题##
    我们希望就您的建议提出一些后续问题。

    [1]
    ■我做了什么■
    我在我们的原型上尝试了“切换寄存器“。
    但是、当我切换寄存器 0x10[11]时、PHY 和另一个 PHY 之间的链路被暂时断开、从而导致重新链接序列。 这种行为不符合我们的预期要求、即 PHY 要持续保持链路建立。
    ■Request■
    您能否证实我们对这种行为的理解是否正确、因此这种方法可能不适合我们的目的?

    [2]
    ■我做了什么■
    我还尝试了切换寄存器 0x14[7]、但这种情况没有改善、通信仍然失败。
    因此、我们认为这种方法在我们的情况下无效。
    ■Request■
    您能提出任何替代方法吗?

    [3]
    ■我做了什么■
    在应用手册 <SGMII疑难解答指南>“1.3 自动协商“部分中、
    声明如下:
    “如果 PHY 先于 MAC 启动、则可能需要重新启动 SGMII、MAC 才能接收控制信息、从而成功建立链路。“
    ■Request■  
    我想确认这一声明是否适用于我们的案例、因为只有 GMAC 才会重新启动。
    如果是、则说明中提到了“SGMII REstart“。 您能否说明一下这指的具体操作? 是否与 “切换 0x10[11]“的操作相同?

    此致、
         Asano

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

    尊敬的 Asano-San:  

    我将检查这些问题、并尽快回复您。

    此致、

    GREG

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

    尊敬的 Greg:
    您好,感谢您的善意答复。

    • 您能否向我介绍一下我所提问题的进展情况?

    我们的固件调试当前已阻止、如果没有您的响应、将无法继续、因此我们需要您进行紧急更新...

    此致、
         Asano

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

    尊敬的 Asano-San:

    由于在 SGMII 模式下、PHY 在启动期间发送链路状态和速度参数、因此这 可能是 MAC 侧 在复位后与 SGMII 不同步的问题。 GMAC 正在进行什么复位、是否进行任何重新初始化?

    您能否确认我们对这种行为是否正确的理解、因此这种方法可能不适合我们的目的?

    正确、此方法看起来不适合您的应用。

    如果是、则说明中提到了“SGMII restart“。 您能否说明一下这指的具体操作? 是否与 “切换 0x10[11]“的操作相同?

    是的、这与切换 0x10[11]的操作相同。 在 GMAC 复位后、您能否读取寄存器 0x60A、0x60C 和 0x60D?

    此致、

    GREG

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

    感谢您发送编修。

    ■Greg San■的问题
    >>这可能是 MAC 侧在复位后与 SGMII 不同步的问题。 正在对 GMAC 执行什么重置...
    ■答案■
    在 PHY 保持受电而 GMAC 进行复位和重新启动的情况下、
    我在 GMAC 上执行与上电期间相同的重新初始化过程。
    作为参考、上电时、PHY 和 GMAC 之间的通信可以正常工作、而不会出现任何问题。

    ■您的提问■
    在 GMAC 复位后、您能否读取寄存器 0x60A、0x60C 和 0x60D?
    ■确认■
    我想确认目标器件 DP83867IS 中是否也存在寄存器 0x60A、0x60C 和 0x60D。
    基于对 SGMII 疑难解答指南的了解、
    寄存器 0x60A (SGMII_STATUS)、0x60C (SGMII_CTRL_2) 和 0x60D (SGMII_FIFO_STATUS) 看起来是适用于不同器件的 SGMII 专用寄存器 (DP83TG720S-Q1 汽车 PHY)。
    此外、目标器件 DP83867IS 的数据表中似乎没有这些寄存器。

    ■Re 确认 来自 Asano■
    请回答我的理解 ①–③ 是否正确、回答“是“还是“否“

    ① 如果在 PHY 保持通电状态时只有 GMAC 复位并重新启动、则需要重新启动 SGMII、这是 PHY 与 GMAC 之间的接口、以便在 GMAC 重新启动后重新建立通信。

    ② SGMII 可以通过切换 PHY 寄存器(地址 0x10、位[11])来实现重新启动。 但是、此操作会导致 PHY 与 GMAC 之间以及 PHY 与远程 PHY 之间的链路中断及随后建立的链路。

    ③① 1 μ s 和 ② μ s、当只有 GMAC 复位并重新启动时、PHY 上将出现链路断开和随后建立链路的不可避免的规范、以便在 GMAC 重新启动后重新建立通信。

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

    尊敬的 Asano-San:

    在 PHY 保持通电状态时仅重置并重新启动 GMAC 时、有必要重新启动 SGMII、即 PHY 与 GMAC 之间的接口、以便在 GMAC 重新启动后重新建立通信。

    这种情况可能不是这样、还不能给出“是“或“否“。

    [quote userid=“640709“ url=“~/support/interface-group/interface/f/interface-forum/1650639/dp83867is-inquiry-on-phy-behavior-and-required-handling-when-gmac-is-reset-without-phy-reset-under-sgmii/6377122② 可通过切换 PHY 寄存器(地址 0x10、位[11])来实现 SGMII 重新启动。 但是、此操作会导致 PHY 与 GMAC 之间以及 PHY 与远程 PHY 之间的链路断开、随后也会建立链路。

    是的、正确、这是启用/禁用 SGMII 链路的方式。 根据您的测试、写入此寄存器后链路似乎停止。  

    [quote userid=“640709“ url=“~/support/interface-group/interface/f/interface-forum/1650639/dp83867is-inquiry-on-phy-behavior-and-required-handling-when-gmac-is-reset-without-phy-reset-under-sgmii/6377122③ 基于 ① 和 ②、当仅重置并重新启动 GMAC 时、PHY 上将出现链路断开和后续链路建立这一不可避免的规范、以便在 GMAC 重新启动后重新建立通信。

    这是我们试图确定的。 我还不能给出“Yes“或“No“、因为我们正在尝试确定 GMAC 复位过程中的某些内容是否会触发 SGMII 链路丢弃。  

    此致、

    GREG

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

    > Gregory Kobyakov 说:> 要查看 DP83867 上的寄存器 0x0000、0x0001、0x0014、0x0031、0x0037。
    ■答案■
    观察指定寄存器的位值如下。
    观察条件是、仅重新启动 GMAC 之后、已经有足够的时间。 目前尚未实现数据包发送和接收。

    0x0000:0x1140
    0x0001:0x796D
    0x0014:0x29C7
    0x0031:0x10B0
    0x0037:0x0000

    > Gregory Kobyakov Said ; > GMAC 重启的软件逻辑是什么? 它是读取还是写入任何 PHY 寄存器?
    ■答案■
    FPGA 中的 GMAC 块是 Microchip 的 CoreTSE v3.2、可通过设置 GMAC 电阻器来复位该块。
    因此、没有任何 PHY 寄存器需要写入或读取来复位 GMAC 块。

    此致、
         Asano

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

    尊敬的 Asano-San:

    感谢您的澄清。 您能否在 GMAC 复位前后发送 PHY 寄存器转储? 具体来说、寄存器 0x0000 - 0x0020、0x006E、0x006F 以及我之前请求的寄存器。

    此致、

    GREG

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

    尊敬的 Gregory Kobyakov San、首先请参阅 您之前请求的 GMAC 复位前后的 PHY 寄存器转储。

    否 寄存器 指定的值
    包含的内容
    值 重新启动后的值
    1. 0x0000 (BNCR) 0x1140 0x1140 0x1140
    2. 0x0001 (BNSR) 0x796D 0x796D 0x796D
    3. 0x0014 (GEN_CFG2) 0x29C7 0x29C7 0x29C7
    4. 0x0031 (GEN_CFG3) 0x10B0 0x10B0 0x10B0
    5. 0x0037 (SGMII_AUTO_NEG_STATUS) 0x0001 0x0001 0x0000

    注意:第 5 行 (SGMII_AUTO_NEG_STATUS) 显示了从启动时到重新启动后的值变化 — 这是两种状态之间唯一不同的寄存器。 0x0001  0x0000 

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

    尊敬的 Asano-San:

    感谢您分享这篇文章,我将查看它并提供评论。

    此致、

    GREG

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

    亲爱的 Gregory Kobyakov San、
    感谢您的持续支持。 我想再问几个问题。

    ■问题 1■在 SGMII 使能信号首先设置为禁用、然后再次设置为启用的情况下:
    此操作是否会导致在实际使用中本地 PHY 和本地 GMAC 之间进行重新自动协商?
    此外、这如何影响本地 PHY 与链路伙伴 PHY 之间的自动协商?
    是否还会在铜缆链路侧执行重新自动协商?


    ■问题 2■关于从 PHY 角度重新启动 SGMII:
    切换寄存器 0x0010[11]是否是唯一可用的方法?
    是否有任何其他方法可以在不导致链路断开的情况下实现 SGMII 重新同步?
    或者、是否可以通过在 GMAC 侧进行正确处理来避免这种情况?


    ■问题 3■
    为了帮助调查 GMAC 复位过程是否可能包含导致 SGMII 链路断开的因素、
    从我们这边看、哪种信息最有用? 提供以下内容是否更有帮助?
    上电和重新启动期间的详细 GMAC 初始化序列、或
    当 GMAC 复位时执行的确切关断序列是什么?
    我们希望提供足够的信息、支持双方进行有效的分析。


    此致、

      Y Asano

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

    尊敬的 Asano-San:

    如果 SGMII Enable 信号首先设置为 Disable、然后再次设置为 Enable:
    此操作是否会导致在实际使用中本地 PHY 和本地 GMAC 之间进行重新自动协商?
    此外、这如何影响本地 PHY 与链路伙伴 PHY 之间的自动协商?
    是否也会在铜缆链路侧执行重新自动协商?

    这应导致在实际使用中 PHY 和 GMAC 之间重新启动链路协商。 但是、不一定会导致 MDI 链路断开。  

    [quote userid=“640709“ url=“~/support/interface-group/interface/f/interface-forum/1650639/dp83867is-inquiry-on-phy-behavior-and-required-handling-when-gmac-is-reset-without-phy-reset-under-sgmii/6382557■问题 2■从 PHY 的角度了解 SGMII 重新启动:
    切换寄存器 0x0010[11]是否是唯一可用的方法?
    是否有任何其他方法可以在不导致链路断开的情况下实现 SGMII 重新同步?
    或者、是否可以通过在 GMAC 侧进行正确处理来避免这种情况?

    0x0014 也会这样做、但似乎这在测试期间也没有成功

    [quote userid=“640709“ url=“~/support/interface-group/interface/f/interface-forum/1650639/dp83867is-inquiry-on-phy-behavior-and-required-handling-when-gmac-is-reset-without-phy-reset-under-sgmii/6382557■问题 3■
    为了帮助调查 GMAC 复位过程是否可能包含导致 SGMII 链路断开的因素、
    从我们这边看、哪种信息最有用? 提供以下内容是否更有帮助?
    上电和重新启动期间的详细 GMAC 初始化序列、或
    当 GMAC 复位时执行的确切关断序列是什么?
    我们希望提供足够的信息、以支持双方的有效分析。

    是的、GMAC 在上电和重启期间使用的 GMAC 初始化序列会很有用。 在启动与重启期间、SGMII 信号(可能通过探测获取)是否存在任何差异?

    此致、

    GREG

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

    亲爱的 Gregory Kobyakov San、
    大家好、这是 Asano。

    >>、我将查看并提供评论。
     关于上文提到的你、 请你向我介绍一下我提出的问题的进展情况。

    我们的固件调试当前已阻止、如果没有您的响应、将无法继续、因此我们需要您进行紧急更新...

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

    亲爱的 格雷戈里 ·科比亚科夫·桑,你说:  
    >> GMAC 在上电和重启期间使用的 GMAC 初始化序列会很有用。
    -->因此、让我 共享在开机和重新启动时应用于 GMAC 的初始化序列、如下所示。
    -->请注意、加电和重新启动都使用相同的初始化序列。
    -->有关每个寄存器的详细信息、请参阅以下 URL 提供的 GMAC 数据表。
    --> CoreTSE 用户指南

    初始化序列:

    1. 通过 向 MAC 配置#1 寄存器写入 0x00000030、释放软件复位并启用 TX/RX 流程控制。
    2. 通过将 0x15 写入 MAC 配置#2 寄存器、启用长度字段检查、焊盘/CRC 插入和全双工模式。
    3. 通过将 0x05EE 写入 最大帧长度 寄存器、将 TX/RX 的最大帧长度设置为 1518 个字节。
    4. 通过将 0x0018 写入 控制帧参数 寄存器、配置暂停帧传输请求的阈值。
    5. 通过将 0x0002 写入 MDIO MGMT :配置 寄存器、设置与当前配置等效的 GMAC MDIO MDC 频率。
    6. 通过将 0x0004 写入 GMAC 接口控制 寄存器来启用统计计数器模块。
    7. 通过将 0x1F00 写入 MAC-FIFO 配置寄存器 0、在结构和系统之间启用 TX/RX。
    8. 通过将 0x0010 FFFF 写入 MAC-FIFO 配置寄存器 1 来设置 RX FIFO 数据有效检测的阈值。
    9. 通过将 0x0010 0010 写入 MAC-FIFO 配置寄存器 3 来设置 TX FIFO 可写条件的阈值。
    10. 通过写入以下内容、配置为不丢弃除暂停帧之外的任何帧:
    • 0x1000 到 MAC-FIFO 配置寄存器 4、和
    • 0x000F EFFF 至 MAC-FIFO 配置寄存器 5。

      11、通过 在 系统寄存器中设置 0x01C0 来配置帧过滤器控制。

    您还说:“上电和重启之间的 SGMII 信号是否存在差异?“
    ■答案■
    在上述设置中、 上电时序和重启时序只有 MAC-FIFO 配置寄存器 0 的值不同:

    • 上电时: 0x001F 1F00
    • 重新启动后: 0x001D 1F00

    区别在于 第[17]位、对应于 系统接收模块启用状态 (srfenrply)。

    此致、
      Y Asano

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

    尊敬的 Yuuuuuichi-San:

    Gregory 今天不在办公室、将于下星期一返回

    此致、

    Shane

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

    Shane Hauser San,嗨,这是 Asano。
    请注意、非常感谢您的友好联系。
    我想等待答复。  

    此致、
      Asano

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

    尊敬的 Asano-San:

    感谢您提供所需信息。 我们已经使用我们的 EVM 对器件进行了测试、SGMII 启用/禁用不应影响 MDI 连接。 这就是为什么我认为这个问题是由 MAC 引起的。

    此致、

    GREG

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

    亲爱的 Gregory Kobyakov San、
    大家好、这是 Asano。

    感谢您发送编修。
    我了解您的发现。

    在与 GMAC 团队进行内部讨论后、我们决定继续对 GMAC 块进行以下设计更改

    • GMAC 块的复位/重启仅与包括 PHY 的完整模块复位/重启同步(例如,在上电期间)。
      换句话说、我们将防止在 PHY 保持活动状态时只复位/重新启动 GMAC 块的情况。

    【问题】
    应用上述设计更改后、我们认为问题将得到解决。
    您是否同意此评估、Greg San?

    此致、
     Y Asano

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

    尊敬的 Asano-San:

    是的、这似乎是一个很好的下一步。

    此致、

    GREG

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

    亲爱的 Gregory Kobyakov San、
    大家好、这是 Asano。 感谢您的确认。

    >是的,这似乎是一个很好的下一步。
     “谢谢!
     事实上, 我已经获得了 FPGA,根据下面的建议重新设计了 GMAC 块。
     -->因此我将首先使用此 FPGA 验证其操作。

    - GMAC 块的重置/重启将仅与包括 Phy 的完整模块重置/重启同步(例如,在开机期间)。
     (换句话说,我们将防止在 PHY 保持活动状态时只有 GMAC 块被复位/重新启动的情况。)

    ■建议■
    非常感谢您的长期支持。
    我将暂时关闭此项目并观察与 GMAC 内部的合作行动。

    如果其他问题再次发生、是否可以打开新主题并参考此案例以继续获得您的支持?
    如果是、考虑到已提供解决方案建议、我想关闭此事件。

    此致、
     Y Asano