在TCP/IP的模型中将物理层和数据链路层合在一起称为网络接口层。网络接口层一般分为一层和二层,一层又称为物理层,二层又称为数据链路层,在以太网中又称为MAC层。由于一层与二层之间的设计往往由不同的厂家实现,为了方便一层与二层交换数据和控制,因此又出现了媒介独立层或媒介无关层MII(Media Independent Interface),媒介无关层与一层和二层之间的关系如图1所示。由于在嵌入式系统或FPGA的编程中媒介无关层是经常要处理的一层,因此在讨论其它层之前先讨论该层。

图1 MII 连接二层与一层示意图
随着网络技术的发展,MII接口又出现各种不同的接口及传输速度定义以适应不同的网络器件及接口。主要接口有MII,GMII,RMII,RGMII等不同的形式,下面将逐一介绍接口信号的定义及数据传输格式。
1. MII:
媒介无关层(Media Independent Interface),MII接口主要用在10M/100M 二层MAC 到一层Phy的接口,如图2所示。

图2 MII接口信号
-
MII接口信号
- TX_ER(Transmit Error): 发送数据错误提示信号,同步于TX_CLK,高电平有效,表示TX_ER有效期内传输的数据无效。对于10Mbps速率下,TX_ER不起作用;
- RX_ER(Receive Error): 接收数据错误提示信号,同步于RX_CLK,高电平有效,表示RX_ER有效期内传输的数据无效。对于10Mbps速率下,RX_ER不起作用;
- CRS:Carrier Sense,载波侦测信号,不需要同步于参考时钟,只要有数据传输,CRS就有效,另外,CRS只有物理层(PHY)在半双工模式下有效;
- COL:Collision Detected,冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效。
- TX_CLK: 发送时钟,用Phy芯片产生,10M以太网时为2.5MHz,100M 以太网为25MHz. 该时钟由Phy(Physical)芯片产生,方向由Phy(Physical)指向Host(主机)的MAC。
- TXD [3:0]: 发送的数据,与TX_CLK 同步,表示mac 层发送数据到phy层。
- RX_CLK: MAC 层的接收时钟,一般由phy产生, mac 层使用这个时钟。
- RXD[3:0] :接收数据,与RX_CLK同步,表示由phy层发送数据到mac层。
注:在某些物理层芯片中,可能需要MAC提供时钟。此时时钟由MAC指向PHY。
-
- 对于MAC层的8位数据,TXD遵循先发低4位再发高4位的原则。

图3 MII时序示意图
2. RMII接口
RMII是 Reduced MII的缩写,RMII 主要用在10M/100M的系统中,是MII的简化板,连线数量由MII的16根减少为8根。RMII接口信号如图4所示。

图4 RMII信号接口
-
RMII接口信号
- CLK_REF:
是由外部时钟源提供的50MHz参考时钟,与MII接口不同,MII接口中的接收时钟和发送时钟是分开的,而且都是由PHY芯片提供给MAC芯片的(有的芯片的TX-CLK是由MAC到Phy的)。这里需要注意的是,由于数据接收时钟是由外部晶振提供而不是由载波信号提取的,所以在PHY层芯片内的数据接收部分需要设计一个FIFO,用来协调两个不同的时钟,在发送/接收的数据时提供缓冲。PHY层芯片的发送部分则不需要FIFO,它直接将接收到的数据发送到MAC就可以了。在FPGA实现的MAC中,CLK_REF,可以由FPGA生成。
-
- TXD[1:0]
发送数据,在RMII接口中发送数据每次只要两位,对于8位数据,发送顺序是从低到高的原则,如数据a[7:0], TXD 按照a[1:0]–>a[3:2]–>a[5:4]–>a[7:6]的顺序发送。数据发送与TX_EN配合,只有TX_EN为高电平时,数据才是有效的。
-
- TX_EN
发送数据使能,高电平有效,在接口信号中中只有TX_EN 为高电平时发送的数据才是有效的。在数据发送期间TX_EN 可以为低电平,此时为等待期。TXD,TX_EN 的时序见图5。
-
- RXD[1:0]
接收数据与发送类似,每次只接收两位,也是遵循从低位到高位的原则,与CRS_DV配合完成数据接收。
-
- CRS_DV: 载波/数据有效, 载波检测在半双工中有效。在全双工在表示数据有效。

图5 RMII的时序图
3. GMII接口
Gigabit MII是千兆网的MII接口,与MII接口类似只是数据接口由MII接口的4位变成为8位。

图6 GMII信号接口
-
GMII接口信号
- GTX_CLK: 由发送方提供与发送数据同步,一般上升沿与发送数据相位偏移180度。时钟频率为125MHz。
- RX_CLK:由PHY提供,上升沿对齐。有的PHY提供2ns延时。时钟 频率为125M。
- TX_EN:发送数据使能
- TXD[7:0]:8位发送数据
- RX_DV:接收数据有效
- RXD[7:0]:8位接收数据
- TX_ER: 发送数据错误,一般指该发送的数据包无效,一般在传送中会复制RX_ER。
- RX_ER:接收数据错误,接收数据包无效。在数据交换或转发中可以将RX_ER与对应的接收数据复制到发送端。
- CRS:载波检测,总线网中有效。
- COL:总线冲突,在全双工的通信中无效。
GMII由于接口是8位,因此传输效率较高,时序控制简单,在早期的千兆网的设计中应用较多。但由于连线较多在硬件电路的设计中变得较为复杂,因此目前已使用不多,逐渐被GMII的简化版RGMII所替代。
4. RGMII
RGMII是Reduced GMII缩写,是GMII为简化连线的复杂从而降低引脚的版本,时钟仍然是125M,不过这里采用的是双边沿的方式读取和发送数据。即上升沿4bit,下降沿4bit。目前RGMII是千兆网络通信中应用最为广泛的一种接口。信号接口如图7所示。

图7 RGMII信号接口
-
RGMII信号描述
- TX_CLK: 由发送方(MAC)提供与发送数据同步,时钟频率为125MHz。
- RX_CLK: 由PHY提供,上升沿对齐。有的PHY提供2ns延时。时钟 频率为125M。
- TX_EN:发送数据使能
- TXD[3:0]: 4位发送数据;对于8位数据先发送低四位,后发送高四位。
- RX_DV:接收数据有效
- RXD[3:0]:4位接收数据,接收顺序为先接收低四位数据,后接收高四位数据。
RGMII的信号时序如图8所示。
图8 RGMII 时序图
在MII的接口中,还有其它的接口如SGMII,XGMII,SFP SGMII等类型,这些接口的特点和使用将会安排在光纤通信等章节讲解。