一.以太网电路基本构成
1.总体介绍
对于上述三部分,并不一定都是独立的芯片,主要有以下几种情况:
·CPU内部集成了MAC和PHY,难度较高;
·CPU内部集成MAC,PHY采用独立芯片(主流方案);
·CPU不集成MAC和PHY,MAC和PHY采用独立芯片或者集成芯片(高端采用)
PHY整合了大量模拟硬件,而MAC是典型的全数字器件,芯片面积及模拟/数字混合架构的原因,是将MAC集成进微控制器而将PHY留在片外的原因。更灵活、密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合;
所以常用的CPU内部集成MAC,PHY采用独立的芯片方案,虚线内表示CPU和MAC集成在一起,PHY芯片通过MII接口与CPU上的MAC互联;
2.MAC
MAC即Media Access Control,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。该层协议是以太网MAC由IEEE-802.3以太网标准定义。
3.PHY芯片
PHY是物理接口收发器,它实现物理层。IEEE-802.3标准定义了以太网PHY。包括MII/GMII(介质独立接口)子层,PCS(物理编码子层),PMA(物理介质附加)子层,PMD(物理介质相关)子层,MDI子层。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。
PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC。对于100BaseTX因为使用4B/5B编码,每4bit就增加1bit的检错码),然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。
4.MII接口
4.1简介
MII即“媒体独立接口”,也叫“独立于介质的接口”。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。RMII全称为“简化的媒体独立接口”,是IEEE-802.3u标准中除MII接口之外的另一种实现。
4.2 MII接口详解
MII支持10M和100M的操作,单向传输的数据线有4根,整个接口由14根线组成。
MII_TX_CLK:发送数据使用的时钟信号,对于10M位/s的数据传输,此时钟为2.5MHz,对于100M位/s的数据传输,此时钟为25MHz。
MII_RX_CLK:接收数据使用的时钟信号,对于10M位/s的数据传输,此时钟为2.5MHz,对于100M位/s的数据传输,此时钟为25MHz。
MII_TX_EN:传输使能信号,此信号必需与数据前导符的起始位同步出现,并在传输完毕前一直保持。
MII_TXD[3:0]:发送数据线,每次传输4位数据,数据在MII_TX_EN信号有效时有效。MII_TXD[0]是数据的最低位,MII_TXD[3]是最高位。当MII_TX_EN信号无效时,PHY忽略传输的数据。
MII_CRS:载波侦听信号,仅工作在半双工模式下,由PHY控制,当发送或接收的介质非空闲时,使能此信号。 PHY必需保证MII_CRS信号在发生冲突的整个时间段内都保持有效,不需要此信号与发送/接收的时钟同步。
MII_COL:冲突检测信号,仅工作在半双工模式下,由PHY控制,当检测到介质发生冲突时,使能此信号,并且在整个冲突的持续时间内,保持此信号有效。此信号不需要和发送/接收的时钟同步。
MII_RXD[3:0]:接收数据线,每次接收4位数据,数据在MII_RX_DV信号有效时有效。MII_RXD[0]是数据的最低位,MII_RXD[3]是最高位。当MII_RX_EN无效,而MII_RX_ER有效时,MII_RXD[3:0]数据值代表特定的信息(请参考表194)。
MII_RX_DV:接收数据使能信号,由PHY控制,当PHY准备好数据供MAC接收时,使能该信号。此信号必需和帧数据的首位同步出现,并保持有效直到数据传输完成。在传送最后4位数据后的第一个时钟之前,此信号必需变为无效状态。为了正确的接收一个帧,有效电平不能滞后于数据线上的SFD位出现。
MII_RX_ER:接收出错信号,保持一个或多个时钟周期(MII_RX_CLK)的有效状态,表明MAC在接收过程中检测到错误。具体错误原因需配合MII_RX_DV的状态及MII_RXD[3:0]的数据值。
MII 发送时序图如图所示:
MII 接收时序图如图所示:
4.3 RMII接口
RMII 接口示意图如图所示,共有 8 根信号线。 RMII 为 MII 的简化版,信号线数量减半。
TXD/RXD 为数据发送/接收信号,分别有两根信号线, 为 MII 的一半;
TX_EN 同 MII 一致;
RX_ER 同 MII 一致;
CLK_REF 为 50MHz 参考时钟, 可以由 PHY 提供,也可以由 MAC 提供;
CRS_DV 为 CRS 与 RX_DV 联合的信号。
4.4GMII 接口
GMII 接口示意图如图 1-6 所示, 共有 24 根信号线。相比于 MII, GMII 可支持千兆速率传输, 通常 GMII 接口可以兼容 MII 接口。
GMII 大部分信号线与 MII 一致,区别在于:
TX_CLK 发送参考时钟由 MAC 提供, RX_CLK 接收参考时钟由 PHY 提供,两者均为 125MHz;
TXD/RXD 发送/接收数据信号分别为 8 根信号线,为 MII 的两倍。
4.5 RMII、GMII、RGMII和MII的关联与区别
MII的一个缺点是:它的每个端口用的信号线太多,如果一个8端口的交换机要用112根线,32端口就要用到448根线,如果按个接口做交换机,不太现实,所以现代交换机会采用其它一些从MII简化而来的标准,如RMII、SMII、GMII等。
RMII是简化的MII接口,在数据的收发上它比MII接口少了一倍的信号线;和MII一样,RMII支持10M的总线接口速度。
GMII是千兆网的MII接口,RGMII表示简化了的GMII接口。
RGMII接口减少了MAC与PHY之间的走线数量,通过在参考时钟的上升/下降沿同时采样及信号复用得以实现。
下表是RTL8211的RGMII接口的引脚列表:
SMII是由思科提出的一种媒体接口,它有比RMII更少的信号线数目,S表示串行的意思。因为它只用一根信号线传送发送数据,一根信号线传输接受数据,所以在时钟上为了满足100的需求,它的时钟频率很高,达到了125兆,为什么用125兆,是因为数据线里面会传送一些控制信息。SMII一个端口仅用4根信号线完成100信号的传输,比起RMII差不多又少了一倍的信号线。SMII在工业界的支持力度是很高的。同理,所有端口的数据收发都公用同一个外部的125M时钟。
介绍了好几种MII接口,想必有点混乱了,下表简单总结了一下各种MII接口的特征:
4.6MDIO 接口
MDIO 全称是Management Data Input/Output,直译过来就是管理数据输入输出接口,是一个简单的两线串行接口,一根MDIO 数据线,一根MDC 时钟线。 驱动程序可以通过MDIO 和MDC 这两根线访问PHY 芯片的任意一个寄存器。MDIO 接口支持多达32 个PHY。同一时刻内只能对一个PHY 进行操作,那么如何区分这32 个PHY 芯片呢?和IIC 一样,使用器件地址即可。同一MDIO 接口下的所有PHY 芯片,其器件地址不能冲突,必须保证唯一,具体器件地址值要查阅相应的PHY 数据手册。
因此,MAC 和外部PHY 芯片进行连接的时候主要是MII/RMII 和MDIO 接口,另外可能还需要复位、中断等其他引脚。
4.7.linux下PHY控制器驱动
PHY控制器驱动和SPI/I2C类似,控制器功能是实现具体的读写功能。实现方法有两种(与I2C类似):
(1)直接调用CPU的MDIO控制器(直接调用CPU对应的寄存器)
(2)通过GPIO/外围soc模拟MDIO时序的方式
PHY的控制器一般被描述为mdio_bus平台
注:这是一个设备,等同于SPI/I2C中的master设备;和总线、驱动、设备中的bus不一样。既然是平台设备,那么设备树中有可以被解析为平台的设备节点,也有对应的平台设备驱动。
5.以太网变压器
5.1变压器作用
(1).耦合差分信号,抗干扰能力更强
(2).变压器隔离网线端不同设备的不同电平,隔离直流信号
5.2网络变压器一般是由差模线圈,变压器以及中心抽头组成。如下示意:
其中初级中心抽头的接法需要根据PHY芯片来决定,电压驱动的就要接电源,电流驱动直接接个电容到地即可。还需要注意的是有的变压器中间抽头是独立的有的是收发合并在一起的,设计的时候需要注意,为了防止初版硬件设计错误,可以兼容设计。
6.RJ45
以太网信号最终是通过RJ45接头接入网络的。
RJ是Registered Jack的缩写,意思是“注册的插座”。在FCC(美国联邦通信委员会标准和规章)中RJ是描述公用电信网络的接口,计算机网络的RJ45是标准8位模块化接口的俗称。
关于接头引脚定义,目前存在两种标准:T568A和T568B(最通用)。这两者的主要区别是橙色和绿色双绞线进行了交换,如下图所示:
设计这两种标准只是在线缆颜色上有所区别,目的是在线缆侧实现交叉互连。网络直通线常用于异种网络之间的互连(比如计算机交换机之间),交叉线常用于同种网络之间的互联(比如计算机与之间)。不过现在PHY芯片大部分具有自动交叉(auto MDI-X)的能力,只需要直连即可。不同网络速率及网络介质下引脚作用也不相同,如下图示意: