01、以太网控制及通信接口梳理
📢今天介绍以太网的相关接口
MII(介质独立接口)是连接MAC(数据处理模块)和PHY(物理传输模块)的桥梁。当需要发送数据时,MAC通过这个接口把数据包传给PHY,再由PHY转换成网络信号发送出去;接收数据时,PHY也会先把信号传给MAC处理。
SMI(串行管理接口,也叫MDIO总线)是MAC与PHY之间的"控制通道"。通过这个接口,MAC可以直接读取或修改PHY的内部设置(比如调整传输速率、检测网络状态等),就像通过控制面板管理设备一样,实现对PHY的配置和监控。
一、以太网的组成框架
MAC、PHY和它们的连接方式可以这样理解:
MAC是ARM芯片里的一个数据处理单元。当电脑要发送网络数据时,MAC会通过DMA(类似数据搬运工)把这些数据直接传输到外部接口,再交给后面的PHY处理。反过来,当外界有数据传入时,PHY会把信号传给MAC,再由DMA存入内存供系统使用。
PHY是负责信号转换的模块,可以是独立芯片或集成在ARM内部。它的主要工作就是把MAC传来的数字信号转换成能在网线上稳定传输的模拟信号,同时把接收到的网络线路上的模拟信号还原成数字信号返回给MAC。根据传输速率不同,PHY分为百兆和千兆两种类型。
连接MAC和PHY的控制线叫做MDIO接口。它有两根线:一根双向的数据线(MDIO)和一根单向的时钟线(MDC)。这根控制线的作用就像远程控制,让MAC能读写PHY内部的设置参数,调整工作状态或查看 PHY 的运行情况。
二、MAC
MAC(Media Access controller)即媒体访问控制器。MAC由硬件控制器和MAC通信协议构成。该协议位于OSI七层协议中数据链路层。MAC硬件框图如下图所示:
在发送数据的时候,MAC 协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息(组包),最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC 协议首先判断输入的信息是否发生传输错误,如果没有错误,则去掉控制信息发送至网络层。
三、PHY
PHY是以太网物理层的信号转换芯片 把数字信号转换为差分信号。
多数Soc都使用的是片外PHY(特别是高速的)。
PHY 在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则(10Based-T的NRZ编码或100based-T的曼彻斯特编码)把数据编码,再变为模拟信号把数据送出去,收数据时的流程反之。
四、MII:相关通信接口汇总
MAC 与 PHY的通信:
MII
SMI
RGMII
SGMII
4.1、MII 接口
MII 全称是 Media Independent Interface,直译过来就是介质独立接口,它是 IEEE-802.3 定义的以太网标准接口, MII 接口用于以太网 MAC 连接 PHY 芯片,连接示意图如图所示:
MII 数据接口总共需要 16 个信号,包括 TX_ER,TXD[3:0],TX_EN,TX_CLK,COLRXD[3:0],RX_ER,RX CLK,CRS,RX DV等。MII的特性如下:
支持10Mb/s和100Mb/s的数据速率
100M工作模式下,参考时钟是25MHz
10M工作模式下,信号参考时钟是2.5MHz
支持全双工、半双工两种工作模式
发送和接收数据时采用4bit方式
MII 接口一共有 16 根信号线,含义如下:
TX_CLK: 发送时钟,如果网速为 100M 的话时钟频率为 25MHz, 10M 网速的话时钟频率为 2.5MHz,此时钟由 PHY 产生并发送给 MAC。
TX_EN: 发送使能信号。
TX_ER: 发送错误信号,高电平有效,表示 TX_ER 有效期内传输的数据无效。 10Mpbs 网速下 TX_ER 不起作用。
TXD[3:0]: 发送数据信号线,一共 4 根。
RXD[3:0]: 接收数据信号线,一共 4 根。
RX_CLK: 接收时钟信号,如果网速为 100M 的话时钟频率为 25MHz, 10M 网速的话时钟频率为 2.5MHz, RX_CLK 也是由 PHY 产生的。
RX_ER: 接收错误信号,高电平有效,表示 RX_ER 有效期内传输的数据无效。 10Mpbs 网速下 RX_ER 不起作用。
RX_DV: 接收数据有效,作用类似 TX_EN。
CRS: 载波侦听信号。
COL: 冲突检测信号。
MII 接口的缺点就是所需信号线太多,这还没有算 MDIO 和 MDC 这两根管理接口的数据线,因此 MII 接口使用已经越来越少了。
4.2、RMII 接口
RMII 全称是 Reduced Media Independent Interface,翻译过来就是精简的介质独立接口,也就是 MII 接口的精简版本。 RMII 接口只需要 7 根数据线,相比 MII 直接减少了 9 根,极大的方便了板子布线, RMII 接口连接 PHY 芯片的示意图如图
TX_EN: 发送使能信号。
TXD[1:0]: 发送数据信号线,一共 2 根。
RXD[1:0]: 接收数据信号线,一共 2 根。
RS_DV: 相当于 MII 接口中的 RX_DV 和 CRS 这两个信号的混合。
REF_CLK: 参考时钟,由外部时钟源提供,频率为 50MHz。这里与 MII 不同, MII 的接收和发送时钟是独立分开的,而且都是由 PHY 芯片提供的。
4.3、GMII 接口
GMII(Gigabit Media Independant Interface),千兆 MII 接口。 GMII 采用 8 位接口数据,工作时钟 125MHz,因此传输速率可达 1000Mbps;同时兼容 MII 所规定的 10/100Mbps 工作方式。GMII 接口数据结构符合 IEEE 以太网标准,该接口定义见 IEEE 802.3-2000。信号定义如下: a
GTX_CLK: 1000M 工作模式下的发送时钟(125MHz)。
TX_EN: 发送使能信号。
TX_ER: 发送错误信号,高电平有效,表示 TX_ER 有效期内传输的数据无效。
TXD[7:0]: 发送数据信号线,一共 8 根。
RXD[7:0]: 接收数据信号线,一共 8 根。
RX_CLK: 接收时钟信号。
RX_ER: 接收错误信号,高电平有效,表示 RX_ER 有效期内传输的数据无效。
RX_DV: 接收数据有效,作用类似 TX_EN。
CRS: 载波侦听信号。
COL: 冲突检测信号。
与 MII 接口相比, GMII 的数据宽度由 4 位变为 8 位, GMII 接口中的控制信号如 TX_ER、
TX_EN、 RX_ER、 RX_DV、 CRS 和 COL 的作用同 MII 接口中的一样,发送参考时钟 GTX_CLK
和接收参考时钟 RX_CLK 的频率均为 125MHz(在 1000Mbps 工作模式下)。
在实际应用中,绝大多数 GMII 接口都是兼容 MII 接口的,所以,一般的 GMII 接口都有两个发送参考时钟: TX_CLK 和 GTX_CLK(两者的方向是不一样的,前面已经说过了),在用作MII 模式时,使用 TX_CLK 和 8 根数据线中的 4 根。
4.4、RGMII 接口
RGMII(Reduced Gigabit Media Independant Interface),精简版 GMII 接口。将接口信号线数量从 24 根减少到 14 根(COL/CRS 端口状态指示信号,这里没有画出),时钟频率仍旧为 125MHz, TX/RX 数据宽度从 8 为变为 4 位,为了保持 1000Mbps 的传输速率不变, RGMII 接口在时钟的上升沿和下降沿都采样数据,在参考时钟的上升沿发送 GMII 接口中的 TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送 GMII 接口中的 TXD[7:4]/RXD[7:4]。 RGMII 同时也兼容 100Mbps 和10Mbps 两种速率,此时参考时钟速率分别为 25MHz 和 2.5MHz。
TX_EN 信号线上传送 TX_EN 和 TX_ER 两种信息,在 TX_CLK 的上升沿发送 TX_EN,下降沿发送 TX_ER;同样的, RX_DV 信号线上也传送 RX_DV 和 RX_ER 两种信息,在 RX_CLK的上升沿发送 RX_DV,下降沿发送RX_ER。
RGMII 接口定义如下所示:
五、MCI:MDIO 接口
MDIO 全称是 Management Data Input/Output,直译过来就是管理数据输入输出接口,是一个简单的两线串行接口,一根 MDIO 数据线,一根 MDC 时钟线。
驱动程序可以通过 MDIO 和MDC 这两根线访问 PHY 芯片的任意一个寄存器。 MDIO 接口支持多达 32 个 PHY。同一时刻内只能对一个 PHY 进行操作,那么如何区分这 32 个 PHY 芯片呢?和 IIC 一样,使用器件地址即可。同一 MDIO 接口下的所有 PHY 芯片,其器件地址不能冲突,必须保证唯一,具体器件地址值要查阅相应的 PHY 数据手册。
因此, MAC 和外部 PHY 芯片进行连接的时候主要是 MII/RMII(百兆网)或 GMII/RGMII (千兆网)和 MDIO 接口,另外可能还需要复位、中断等其他引脚。
六、RJ45 接口
网络设备是通过网线连接起来的,插入网线的叫做 RJ45 座,如图
七、网络变压器
RJ45 座要与 PHY 芯片连接在一起,但是中间需要一个网络变压器,网络变压器用于隔离以及滤波等,网络变压器也是一个芯片,外形一般如图
J45 座子上一般有两个灯,一个黄色(橙色),一个绿色,一般绿色亮的话表示网络连接正常,黄色闪烁的话说明当前正在进行网络通信,当然了有时候两个灯的状态会反过来,大家以实际为准。这两个灯由 PHY 芯片控制,对于千 M 网络 PHY 芯片,一般 PHY 芯片会有 3 个 LED灯引脚,多了一个千 M 网络状态指示灯。 PHY 芯片会通过这几个 LED 灯引脚来连接 RJ45 座上的这两个灯(千 M PHY 会有 3 个 LED 灯引脚,一般硬件设计人员会自行选择将其中的哪两个连接到 RJ45 座上)。