以太网及xMII总线介绍
1、以太网介绍
以太网(Ethernet)是一种计算机局域网组网技术,基于IEEE 制定的IEEE 802.3 标准,它规定了包括物理层的连线、电信号和介质访问层协议的内容。以太网是当前应用最普遍的局域网技术,它支持10Mbps/100Mbps/1000Mbps等速率模式,10Gbps以太网技术也有应用。典型的以太网结构如图 2所示。
图2 以太网结构
(1)MAC概述
MAC 是Media Access Control 的缩写,即媒体访问控制子层协议。该协议位于OSI 七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。
- 在发送数据的时候,MAC 协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;
- 在接收数据的时候,MAC协议首先判断输入的信息是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC 层。以太网MAC 由IEEE-802.3 以太网标准定义。
(2)PHY概述
PHY 是物理接口收发器,它实现物理层。包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI 子层。
- PHY 在发送数据时,收到MAC 过来的数据(对PHY 来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit 就增加1bit 的检错码,
- 然后把并行数据转化为串行流数据。
- 再按照物理层的编码规则把数据编码(10Based-T 的NRZ 编码或100based-T 的4B/5B曼彻斯特编码)。
- 再变为模拟信号把数据送出去。收数据时的流程反之。
PHY 还有个重要的功能就是实现CSMA/CD 的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。
通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为Auto Negotiation 或NWAY。隔离变压器把PHY 送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。RJ-45 中1、2 是传送数据的,3、6 是接收数据的。新的PHY 支持AUTO MDI-X功能(也需要隔离变压器支持)。它可以实现RJ-45 接口的1、2 上的传送信号线和3、6 上的接收信号线的功能自动互相交换。
MAC 与 PHY 的连接
图 3 MII接口在OSI七层模型中的位置
我们知道,PHY芯片是将MAC的数据编码之后传输出去,那MAC和PHY之间是如何进行数据传输和有效沟通的呢?在IEEE定义了标准的MII接口用于MAC和PHY的互连以及MAC对PHY的管理和控制。MII接口在OSI七层模型中的位置如图 3所示。
MII是英文Medium Independent Interface的缩写,翻译成中文是“介质无关接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等,各接口主要特性如图 4所示。这里重点介绍一下常用的MII、GMII、SGMII和RGMII接口。
图 4 各种MII接口
MII 接口:
图 5 MII连接图
MII接口一共有16根线,如图 5所示。各信号线基定义如下:
-
TXD(Transmit Data)[3:0]:数据发送信号,共4根信号线;
-
RXD(Receive Data)[3:0]:数据接收信号,共4根信号线;
-
TX_ER(Transmit Error):发送数据错误提示信号,同步于TX_CLK,高电平有效,表示TX_ER有效期内传输的数据无效。对于10Mbps速率下,TX_ER不起作用;
-
RX_ER(Receive Error):接收数据错误提示信号,同步于RX_CLK,高电平有效,表示RX_ER有效期内传输的数据无效。对于10Mbps速率下,RX_ER不起作用;
-
TX_EN(Transmit Enable):发送使能信号,只有在TX_EN有效期内传的数据才有效;
-
RX_DV(Reveive Data Valid):接收数据有效信号,作用类型于发送通道的TX_EN;
-
TX_CLK:发送参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率下,时钟频率为2.5MHz。注意,TX_CLK时钟的方向是从PHY侧指向MAC侧的,因此,此时钟是由PHY提供的。
-
RX_CLK:接收数据参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率下,时钟频率为2.5MHz。RX_CLK也是由PHY侧提供的。
-
CRS:Carrier Sense,载波侦测信号,不需要同步于参考时钟,只要有数据传输,CRS就有效,另外,CRS只有PHY在半双工模式下有效;
-
COL:Collision Detectd,冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效。
需要注意的是,在MII总线命名中,TX、RX是相对MAC芯片而言的,即TX数据线上的信号流方向为MACPHY,此时MAC为发射端,PHY为接收端,但相应管脚命名都为TXDa,同理RX数据线上的信号流方向为PHYMAC,虽然PHY芯片相应管脚命名为RXDa,但它其实是一个output接口。因此,在设计时,MAC和PHY按同名相连的方式连接即MAC TXDPHY TXD;MAC RXDPHY RXD。下面涉及到的GMII和RGMII也一样。
GMII 接口
图6 GMII连接图
与MII接口相比,GMII的数据宽度由4位变为8位,如图 6所示,GMII接口中的控制信号如TX_ER、TX_EN、RX_ER、RX_DV、CRS和COL的作用同MII接口中的一样,发送参考时钟GTX_CLK和接收参考时钟RX_CLK的频率均为125MHz(1000Mbps/8=125MHz)。
在这里有一点需要特别说明下,那就是发送参考时钟GTX_CLK,它和MII接口中的TX_CLK是不同的,MII接口中的TX_CLK是由PHY芯片提供给MAC芯片的,而GMII接口中的GTX_CLK是由MAC芯片提供给PHY芯片的。两者方向不一样。
在实际应用中,绝大多数GMII接口都是兼容MII接口的,所以,一般的GMII接口都有两个发送参考时钟:TX_CLK和GTX_CLK(两者的方向是不一样的,前面已经说过了),在用作MII模式时,使用TX_CLK和8根数据线中的4根。
RGMII 接口
图 7 RGMII连接图
RGMII即Reduced GMII,是RGMII的简化版本,将接口信号线数量从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]。RGMI同时也兼容100Mbps和10Mbps两种速率,此时参考时钟速率分别为25MHz和2.5MHz,如图 7所示。
TX_EN信号线上传送TX_EN和TX_ER两种信息,在TX_CLK的上升沿发送TX_EN,下降沿发送TX_ER;同样的,RX_DV信号线上也传送RX_DV和RX_ER两种信息,在RX_CLK的上升沿发送RX_DV,下降沿发送RX_ER。
SGMII 接口
图 8 SGMII连接图
SGMII即Serial GMII,串行GMII,收发各一对差分信号线,如图 8所示。SGMII时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用,收发都可以从数据中恢复出时钟。
在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER 两比特控制信息,所以总的数据速率为1.25Gbps=625Mbps*2。
由于SGMII可以直接从数据中恢复时钟,在layout中只需要考虑差分约束,没有时钟与数据线之间的时序约束。