• 以太网PHY原理介绍


    一、以太网分层模型

    基于 OSI 七层网络模型, 车载以太网的网络拓扑结构如图1-1所示。

                                             图1-1  车载以太网网络拓扑结构图

          从图中可以看到位于 Layer1 和 Layer2 的为物理层和数据链路层。 Layer3 以上各层包含了 TCP/IP、 DOIP、SomeIP 等协议, 由 EthStack 软件包实现。
          物理层由 PHY 和以太网连接线构成; 数据链路层也就是常说的 MAC, 通常作为 MCU 内嵌的功能模块。 通过MII 接口可以建立 PHY 和 MAC 间的通讯, MII 接口支持多种模式, 如 MII/RMII/SMII/GMII/RGMII 等,这里主要介绍下 MII、 RMII 和 GMII 接口。

    二、MII接口

    MII 接口示意图如图 1-2 所示,共有 16 根信号线。
     

                                                                                      图1-2  MII 接口示意图

    1. TXD/RXD 为数据发送/接收信号, 分别有四根信号线;
    2. TXER 为发送数据错误信号, 同步于 TX_CLK,高电平有效,当 TX_ER 拉高时表示传输数据无效;
    3. RXER 为接收数据错误信号, 同步于 RX_CLK,高电平有效,当 RX_ER 拉高时表示传输数据无效;
    4. TX_EN 为发送使能信号,只有在 TX_EN 有效期内传的数据才有效;
    5. RX_DV 为接收使能信号,只有在 RX_DV 有效期内传的数据才有效;
    6. TX_CLK 为发送参考时钟, 由 PHY 提供,当传输速率为 100Mbps 时, TX_CLK 频率为25MHz;当传输速率为 10Mbps 时, TX_CLK 频率为 2.5MHz;
    7. RX_CLK 为接收参考时钟, 由 PHY 提供,当传输速率为 100Mbps 时, RX_CLK 频率25MHz;当传输速率为 10Mbps 时, RX_CLK 频率为 2.5MHz;
    8. CRS (Carrier Sense) 为载波侦测信号, 只要数据传输, CRS 即有效,在发送和接收均空闲时撤销; CRS仅在以太网工作在半双工模式下生效;
    9. COL (Collision Detected) 为冲突检测信号, 由 PHY 提供,表示介质检测到了冲突状态, COL 仅在以太网工作在半双工模式下生效

         MII 发送时序图如图1-3 所示

                                                                                图1-3 MII 发送时序图

         MII 接收时序图如图1-4 所示

                                                                            图1-4 MII 接收时序图

    1. RMII 接口

        RMII 接口示意图如图 1-5所示,共有 8 根信号线。 RMII 为 MII 的简化版,信号线数量减半。

                                                                                图1-5 RMII 接口示意图

    1. TXD/RXD 为数据发送/接收信号,分别有两根信号线, 为 MII 的一半;
    2. TX_EN 同 MII 一致;
    3. RX_ER 同 MII 一致;
    4. CLK_REF 为 50MHz 参考时钟, 可以由 PHY 提供,也可以由 MAC 提供;
    5. CRS_DV 为 CRS 与 RX_DV 联合的信号。

     2. GMII 接口

          GMII 接口示意图如图 1-6 所示, 共有 24 根信号线。相比于 MII, GMII 可支持千兆速率传输, 通常 GMII 接口可以兼容 MII 接口。

                                                                                图1-6 GMII 接口示意图

     GMII 大部分信号线与 MII 一致,区别在于:

    1. TX_CLK 发送参考时钟由 MAC 提供, RX_CLK 接收参考时钟由 PHY 提供,两者均为 125MHz;
    2. TXD/RXD 发送/接收数据信号分别为 8 根信号线,为 MII 的两倍。

    3. MDIO 接口

           MII接口除了上述的发送/接收数据、 状态指示信号外,还包含了MAC与PHY间用于状态管理的接口,由MDIO和 MDC 两根信号线组成, MAC 通过 MDIO 接口可以对 PHY 的寄存器进行读写操作。 MDIO 通讯有两种规范,分为 IEEE 802.2 Clause22 和 Clause45, Clause45 向前兼容 Clause22。
    MDIO Clause22 的写时序图如图 1-7 所示

                                                                          图1-7 MDIO Clause22 的写时序图

    1. PRE 为帧前导码,由 32 个连续的 bit 1 构成;
    2. ST 为帧开始标志, Clause22 的开始标志为“01”;
    3. OP 为操作码, “01”表示写操作, “10”表示读操作;
    4. PHYAD 表示 PHY 的物理地址, 共 5 个 bit,每个 PHY 都会先将这 5 个 bit 与自己的地址进行比较,若匹配一致再进行后面的操作,若不一致,则忽略后面的数据;
    5. REGAD 表示 PHY 的寄存器地址;
    6. TA 为状态转换域, 当为读操作时, TA 第一个 bit 为高阻态, 第二个 bit 由 PHY 将其置为“0”; 当为写操作时, TA 由 MAC 控制,直接为“10”;
    7. DATA 为寄存器的数据,共 16bit, 当为读操作时, 由 PHY 提供;当为写操作时, 由 MAC 提供;
    8. IDLE 为帧空闲状态, MDIO 处于高阻态

    MDIO Clause45 的写时序图如图 1-8 所示

                                                                         图1-8 MDIO Clause45 的写时序图

    1. PRE 为帧前导码,由 32 个连续的 bit 1 构成;
    2. ST 为帧开始标志, Clause45 的开始标志为“00”;
    3. OP 为操作码,分为 4 种状态, 比特“00”表示设置当前寄存器地址,比特“01”表示写当前寄存器。比特“10”表示读当前寄存器,比特“11”表示读当前寄存器读完后把当前寄存器的值加 1,用于顺序读;
    4. PRTAD 为端口地址, 即 PHY 的物理地址;
    5. DEVAD为器件地址, 共5个bit, 为Clause45新增, 目前包含00000(Reserved)、 00001(PMD/PMA) 、00010(WIS) 、 00011(PCS) 、 00100(PHY XS) 、 00101(DTE XS) ;
    6. TA 为状态转换域;
    7. REGAD / DATA, 当 OP 为“00”时, TA 后面的 16 个 bit 表示 REGAD, 为 PHY 的寄存器地址; 当 OP 不为“00”时, TA 后面的 16个 bit 表示 DATA,为寄存器数据, 当为读操作时, 由 PHY 提供;当为写操作时, 由 MAC 提供;
    8. IDLE 为帧空闲状态, MDIO 处于高阻态。

        Clause22 与 Clause45 的主要区别在于: Clause22 一帧报文包含了 PHYAD、 REGAD 和 DATA,而 Clause45将 REGAD 和 DATA 分为 2 帧传输,从而扩展了可支持寄存器的数量。

  • 相关阅读:
    2022/6/28学习总结
    一文看分布式锁
    jmeter利用bean shell加密解密方法
    分治法、动态规划、贪心算法区别
    数字化审计智慧
    KDD‘22推荐系统论文梳理(24篇研究&36篇应用论文)
    LeetCode每日一题(2014. Longest Subsequence Repeated k Times)
    封装、继承、多态的概念和其中的区别
    Opengl ES之FBO
    【Linux操作系统】 虚拟文件系统 | 文件缓存
  • 原文地址:https://blog.csdn.net/king110108/article/details/126575631