以太网驱动详解之 MAC、MII、PHY 详解

        由于芯片缺货原因,公司原先使用的ksz9031 phy芯片价格暴涨,故决定换用LAN8720 PHY芯片。KSZ9031提供的是RGMII接口,支持10/100/1000Mbps,作为千兆网使用时,硬件需要RGMII接口应用,提供125MHZ参考时钟信号,使用4个差分对;作为百兆网,使用MII接口,25MHZ参考时钟信号,只使用差分对A和B。而LAN8720A具有RMII接口的10/100Base-T/TX以太网收发器。以下我将从硬件角度对网络通信的物理层由MAC—>PHY—>变压器—>RJ45等方面进行说明。

MAC和PHY结构

从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意:

        在实际的设计中,以上三部分并不一定是独立分开的,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,将MAC集成进CPU而将PHY留在片外,这种结构是最常见的。

        下图是网络接口内部结构图,虚框表示CPU,MAC集成在CPU中,PHY芯片通过MII接口与CPU上的MAC连接:

网络传输原理

        以太网采用带冲突检测的载波帧听多路访问(CSMA/CD)机制。当以太网中要传输数据时,它将按如下步骤进行:
1、帧听信道上收否有信号在传输。如果有的话,表明信道处于忙状态,就继续帧听,直到信道空闲为止。
2、若没有帧听到任何信号,就传输数据
3、传输的时候继续帧听,如发现冲突则执行退避算法,随机等待一段时间后,重新执行步骤1(当冲突发生时,涉及冲突的计算机会发送会返回到帧听信道状态)。每台计算机一次只允许发送一个包,一个拥塞序列,以警告所有的节点。
4、若未发现冲突则发送成功,计算机所有计算机在试图再一次发送数据之前,必须在最近一次发送后等待一段时间。

一、MAC

        MAC(Media Access Control) 即媒体访问控制层协议。MAC由硬件控制器及MAC通信协议构成。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC硬件框图如下图所示:

        发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。该层协议是以太网MAC由IEEE-802. 3以太网标准定义。一般以太网MAC芯片的一端连接PCI总线,另一端连接PHY芯片上通过MII接口连接。

二、MII

        MII(Media Independent Interface)即媒体独立接口,MII 接口是 MAC 与 PHY 连接的标准接口。它是 IEEE-802.3 定义的以太网行业标准。MII 接口提供了 MAC 与 PHY 之间、PHY 与 STA(Station Management)之间的互联技术,该接口支持 10Mb/s 与 100Mb/s 的数据传输速率,数据传输的位宽为 4 位。“媒体独立” 表明在不对 MAC 硬件重新设计或替换的情况下,任何类型的 PHY 设备都可以正常工作。802.3 协议最多支持 32 个 PHY,但有一定的限制:要符合协议要求的 connector 特性。MII 接口如下图所示:

 MII 接口主要包括四个部分:

一是从 MAC 层到 PHY 层的发送数据接口;

二是从 PHY 层到 MAC 层的接收数据接口;

三是从PHY 层到 MAC 层的状态指示信号;

四是 MAC 层和 PHY 层之间传送控制和状态信息的 MDIO 接口。

        从上图可知MII 包括一个数据接口,以及一个 MAC 和 PHY 之间的管理接口,下面对MII管脚进行相应的解释:

        数据接口

        包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII 数据接口总共需要 16 个信号,包括
        TX_ER(transmit coding error): TX_ER 同步于 TX_CLK,在数据传输过程中,如果 TX_ER 有效超过一个时钟周期,并且此时TX_EN 是有效的,则数据通道中传输的数据是无效的,没用的。注:当 TX_ER 有效并不影响工作在 10Mb/s 的 PHY 或者 TX_EN 无效时的数据传输。在 MII 接口的连线中,如果 TX_ER 信号线没有用到,必须将它下拉接地。
        TXD<3:0>(transmit data): TXD 由 RS 驱动,同步于 TX_CLK,在 TX_CLK 的时钟周期内,并且TX_EN 有效,TXD 上的数据被 PHY 接收,否则 TXD 的数据对 PHY 没有任何影响。
        TX_EN: 发送使能。TX_EN 由 Reconciliation 子层根据 TX_CLK 上升沿同步进行转换。
        TX_CLK(transmit clock): TX_CLK (Transmit Clock) 是一个连续的时钟信号(即系统启动,该信号就一直存在),它是 TX_EN、TXD、TX_ER(信号方向为从 RS 到 PHY)的参考时钟,TX_CLK 由 PHY 驱动 TX_CLK 的时钟频率是数据传输速率的 25%,偏差 ±100ppm。例如,100Mb/s 模式下,TX_CLK 时钟频率为 25MHz,占空比在 35% 至 65% 之间。
        COL(collision detected): COL 不需要同步于参考时钟。The behavior of the COL signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自动协商禁止,人工设为全双工模式), or when the Auto-Negotiation process selects a full duplex mode of operation。即半双工模式信号有效,全双工模式信号无效。
        RXD<3:0>(receive data): RXD由RS驱动,同步于 RX_CLK,在 RX_CLK 的时钟周期内,并且 RX_DV 有效,RXD 上的数据被RS 接收,否则 RXD 的数据对 RS 没有任何影响。While RX_DV is de-asserted, the PHY may provide a False Carrier indication by asserting the RX_ER signal while driving the value <1110> onto RXD<3:0>。
        RX_ER(receive error): RX_ER 同步于 RX_CLK,其在 RX 通道中的作用类似于 TX_ER 对于 TX 通道数据传输的影响。
        RX_CLK: 它与 TX_CLK 具有相同的要求,所不同的是它是 RX_DV、RXD、RX_ER(信号方向是从 PHY 到 RS)的参考时钟。RX_CLK 同样是由 PHY 驱动,PHY 可能从接收到的数据中提取时钟 RX_CLK,也有可能从一个名义上的参考时钟(e.g., the TX_CLK reference)来驱动RX_CLK。
        CRS(carrier sense): CRS 不需要同步于参考时钟,只要通道存在发送或者接收过程,CRS 就需要有效。The behavior of the CRS signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自动协商禁止,人工设为全双工模式), or when the Auto-Negotiation process selects a full duplex mode of operation,即半双工模式信号有效,全双工模式信号无效。
        RX_DV(Receive Data Valid): RXD_DV 同步于 RX_CLK,被 PHY 驱动,它的作用如同于发送通道中的 TX_EN,不同的是在时序上稍有一点差别:为了让数据能够成功被RS接收,要求RXD_DV有效的时间必须覆盖整个 FRAME 的过程,即starting no later than the Start Frame Delimiter (SFD) and excluding any End-of-Frame delimiter。
MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。


        MII 管理接口

        是个双信号接口,通过管理接口,MAC 就能监视和控制 PHY。其管理是使用 SMI(Serial Management Interface) 总线通过读写 PHY 的寄存器来完成的。一个是时钟信号(***MDC (management data clock)***)。另一个是数据信号(***MDIO (management data input/output)***)。
        MDC: 由站管理实体向 PHY 提供,作为在 MDIO 信号上传送信息的定时参考。 MDC 是一种非周期性的信号,没有最高或最低时间。 无论 TX_CLK 和 RX_CLK 的标称周期如何,MDC 的最小高低时间应为 160 ns,MDC 的最小周期为 400 ns。
        MDIO: 是 PHY 和 STA 之间的双向信号。 它用于在 PHY 和 STA 之间传输控制信息和状态。 控制信息由 STA 同步地针对 MDC 驱动并且由 PHY 同步地采样。 状态信息由 PHY 针对 MDC 同步驱动并由 STA 同步采样。

        PHY 里面的部分寄存器是 IEEE 定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC 通过 SMI 总线不断的读取PHY 的状态寄存器以得知目前 PHY 的状态。例如连接速度、双工的能力等。当然也可以通过 SMI 设置 PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。

        不论是物理连接的MII总线和 SMI 总线还是 PHY 的状态寄存器和控制寄存器都是由IEEE的规范的。因此不同公司的 MAC 和 PHY 一样可以协调工作。当然为了配合不同公司的 PHY 的自己特有的一些功能,驱动需要做相应的修改。

        MAC 通过MIIM 接口读取PHY 状态寄存器以得知目前PHY 的状态。例如连接速度、双工的能力等。也可以通过 MIIM设置PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。当时钟频率为2.5MHz时,对应速率为10Mb/s。MII接口虽然很灵活但由于信号线太多限制多接口网口的发展,后续又衍生出RMII,SMII、GMII等(这部分将在后面章节介绍)。  

三、PHY

        PHY(Physical Layer)是IEEE802.3中定义的一个标准模块,STA(Station Management Entity,管理实体,一般为MAC或CPU)通过MIIM(MII Manage Interface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。

PHY的基本结构如下图:

        PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据)然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去,收数据时的流程反之。
        PHY还有个重要的功能就是实现CSMA/CD的部分功能,它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去.如果两个碰巧同时送出了数据,那样必将造成冲突,这时候冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。

PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义,如下表所示:

note:

    上图B和E表示在特定接口下,寄存器是基本的还是扩展的。例如:MII接口下只有0和1寄存器是基本的,其它的是扩展的。所谓扩展是指留给IEEE以后的扩展特性用,不是给PHY厂商的扩展,PHY厂商自定义的只能是16~31号寄存器 。
    在IEEE标准文档及某些PHY手册中,某寄存器的比特(bit)用X.y表示,如0.15表示第0寄存器的第15位。

四、网络变压器

1. 网络变压器的构成

  网络变压器一般由共模电感,中心抽头,变压器这三部分构成。我们常见的网络变压器有如下两种:

        其中中心抽头的接法需要根据PHY芯片来决定,电压驱动的就要接电源,电流驱动直接接个电容到地即可,具体还要参看芯片的datasheet和参考设计了。 还需要注意的是有的变压器中间抽头是独立的;有的是收发合并在一起的,设计的时候需要注意。

2. 网络变压器的作用

1.前面介绍了两种网络变压器的内部结构,下边来说说这两种变压器有什么区别及在原理图中该如何设计:
①.电压驱动型的PHY,2线共模电感可以放在PHY侧或线缆侧(RJ45)。
②.电流驱动型的PHY,2线共模电感只能放在线缆侧(RJ45),因为电感会对电流驱动有阻碍作用,影响网络的传输。
2.网络变压器的作用:
①.滤除共模干扰:因为网络变压器有共模电感,所以能有效滤除共模干扰,增强信号质量,提高传输距离。
②.隔离:因为有变压器的作用,信号是通过磁传播的,能有效隔离PHY端和RJ45端的直流分量。在外部不同电平是,网络变压器仅耦合交流信号,使电平与PHY端保持一致,保护PHY芯片。
③抗干扰:PHY端的中心抽头可为信号提供直流偏置;或者为共模电流提供一个低阻抗路径。
④优化波形:由于有共模电感及中心抽头电容或电源的存在,能有效的滤除信号中的杂波,优化传输波形。
 

五、RJ45介绍

        RJ45由插头和插做组成,也就是我们常说的网口和网线。RJ45 网线插头又称水晶头,共有八芯做成,广泛应用于局域网和 ADSL 宽带上网用户的网络设备间网线(称作五类线或双绞线)的连接。RJ45网络传输线分为直通线、交叉线和全反线。直通线用于异种网络设备之间的互连,例如,计算机与交换机。交叉线用于同种网络设备之间的互连,例如,计算机与计算机。全反线用于超级终端与网络设备的控制物理接口之间的连接。下面将介绍一下各线的作用和区别。
1.直通线:又叫正线或标准线,两端采用568B做线标准,注意两端都是同样的线序且一一对应。直通线是应用最广泛,现在最常用的线。不同设备之间,比如路由器和交换机、PC和交换机等。
2.交叉线:又叫反线,线序按照一端568A,一端568B的标准排列好线序,并用RJ45水晶头夹好。交叉线一般用于相同设备的连接,比如路由器和路由器、电脑和电脑之间;很多也支持直通线了,但建议还是使用交叉线。
3.568B线序:① 白-橙、② 橙、③ 白-绿、④ 蓝、⑤ 白-蓝、⑥ 绿、⑦ 白-棕、⑧ 棕。
口诀1:橙蓝绿棕,浅色在前,三五互换。
口诀2:白橙橙,白绿蓝,白蓝绿,白棕棕
4.568A线序:① 白-绿、② 绿、③ 白-橙、④ 蓝、⑤ 白-蓝、⑥ 橙、⑦ 白-棕、⑧ 棕
口诀1:绿蓝橙棕,浅色在前,三五互换
口诀2:白绿绿,白橙蓝,白蓝橙,白棕棕

1.不带变压器RJ45线序

下图为RJ45内部不带变压器座子的线序,即网线的线序:

2.带变压器RJ45线序

下图为RJ45内部带变压器座子的线序:

六、以太网的PCB设计

1.RJ45和变压器之间的距离尽可能的短,器件布局的原则是通常按照信号流向放置,切不可绕来绕去;
2.靠近PHY芯片侧网络变压器中心抽头对地的滤波电容要尽量靠近变压器管脚,保证引线最短,分布电感最小。
3.靠近接口侧网络变压器中心抽头的电阻和电容靠近中心抽头放置,走线短而粗(≥15mil);
4.变压器时磁隔离元件,变压器下边禁止走线,铺铜,需要挖空处理。
5.由于网络传输的是差分模拟信号,在走线时尽量要保持差分对平行、等长、短距,避免过孔、交叉。
6.在远距离传输时需要对差分对进行阻抗控制,通常阻抗控制在100Ω±10%。
7.在RJ45尽量靠近端口侧放置保护器件。

 

  • 9
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值