本文主要分析
MII/RMII/SMII
,以及
GMII/RGMII/SGMII
接口的信号定义,及相关知识,同时本文也对
RJ-45
接口进行了总结,分析了在
10/100
模式下和
1000M
模式下的设计方法。
1. MII
接口分析
MII
接口提供了
MAC
与
PHY
之间、
PHY
与
STA(Station Management)
之间的互联技术,该接口支持
10Mb/s
与
100Mb/s
的数据传输速率,数据传输的位宽为
4
位。
提到
MII
,就有可能涉及到
RS
,
PLS
,
STA
等名词术语,下面讲一下他们之间对应的关系。
所谓
RS
即
Reconciliation sublayer
,它的主要功能主要是提供一种
MII
和
MAC/PLS
之间的信号映射机制。它们
(
RS
与
MII)
之间的关系如下图:
图1
MII
接口的
Management Interface
可同时控制多个
PHY
,
802.3
协议最多支持
32
个
PHY
,但有一定的限制:要符合协议要求的
connector
特性。所谓
Management Interface
,即
MDC
信号和
MDIO
信号。
前面已经讲过
RS
与
PLS
的关系,以及
MII
接口连接的对象。它们是通过
MII
接口进行连接的,示意图如下图。由图可知,
MII
的
Management Interface
是与
STA
(
Station Management
)相连的。
MII
接口支持
10Mb/s
以及
100Mb/s
,且在两种工作模式下所有的功能以及时序关系都是一致的,唯一不同的是时钟的频率问题。
802.3
要求
PHY
不一定一定要支持这两种速率,但一定要描述,通过
Management Interface
反馈给
MAC
。
图
2
下面将详细介绍MII
接口的信号定义,时序特性等。由于MII
接口有MAC
和PHY
模式,因此,将会根据这两种不同的模式进行分析,同时还会对RMII/SMII
进行介绍。
1.1 MII接口信号定义
MII
接口可分为
MAC
模式和
PHY
模式,一般说来
MAC
和
PHY
对接,但是
MAC
和
MAC
也是可以对接的。
以前的
10M
的
MAC
层芯片和物理层芯片之间传送数据是通过一根数据线来进行的,其时钟是
10M
,在
100M
中,如果也用一根数据线来传送的话,时钟需要
100M
,这会带来一些问题,所以定义了
MII
接口,它是用
4
根数据线来传送数据的,这样在传送
100M
数据时,时钟就会由
100M
降低为
25M
,而在传送
10M
数据时,时钟会降低到
2.5M
,这样就实现了
10M
和
100M
的兼容。
MII
接口主要包括四个部分。一是从
MAC
层到物理层的发送数据接口,二是从物理层到
MAC
层的接收数据接口,三是从物理层到
MAC
层的状态指示信号,四是
MAC
层和物理层之间传送控制和状态信息的
MDIO
接口。
MII
接口的
MAC
模式定义:
MII
接口
PHY
模式定义:
1.2 MII接口时序特性
在
MII
接口中,
TX
通道参考时钟是
TX_CLK
,
RX
通道参考时钟是
RX_CLK
,
802.3-2005
定义了它们之间的关系。
图
3 Transmit signal timing relationships at the MII
由图
3
可知,即
The clock to output delay shall be a min of 0 ns and a max of 25 ns
,参考时钟沿是上升沿。很明显,该
Spec
只对
TX
通道上
MAC
这一侧的发送特性作了定义,而对
TX
通道
PHY
那一侧的接收特性并没有定义。
IC Vendor
可在
TX
通道那一侧的
PHY
的接收特性作适当调整,只要最终的时序满足
TX
通道上
MAC
这一侧的发送特性就可以。
图
4 Receive signal timing relationships at the MII
由图
4
可知,
The input setup time shall be a minimum of 10 ns and the input hold time shall be a minimum of 10 ns
,参考时钟沿是上升沿。很明显,该
Spec
只对
RX
通道上
MAC
这一侧的接收特性作了定义,而对
RX
通道
PHY
那一侧的发送特性并没有定义。
IC Vendor
可在
RX
通道那一侧的
PHY
的发送特性作适当调整,只要最终的时序满足
RX
通道上
MAC
这一侧的接收特性就可以。
1.3 MII信号功能特性
<1>
:
TX_CLK (transmit clock)
,
TX_CLK (Transmit Clock)
是一个连续的时钟信号(即系统启动,该信号就一直存在),它是
TX_EN, TXD, and TX_ER(
信号方向为从
RS
到
PHY)
的参考时钟,
TX_CLK
由
PHY
驱动
TX_CLK
的时钟频率是数据传输速率的
25%
,偏差
+-100ppm
。例如,
100Mb/s
模式下,
TX_CLK
时钟频率为
25MHz
,占空比在
35%
至
65%
之间。
<2>
:对于同样的
RX_CLK
,
它与
TX_CLK
具有相同的要求,所不同的是它是
RX_DV, RXD, and RX_ER(
信号方向是从
PHY
到
RS)
的参考时钟。
RX_CLK
同样是由
PHY
驱动,
PHY
可能从接收到的数据中提取时钟
RX_CLK
,也有可能从一个名义上的参考时钟
(e.g., the TX_CLK reference)
来驱动
RX_CLK
<3>
:
TXD (transmit data)
,
TXD
由
RS
驱动,同步于
TX_CLK
,在
TX_CLK
的时钟周期内,并且
TX_EN
有效,
TXD
上的数据被
PHY
接收,否则
TXD
的数据对
PHY
没有任何影响。
图5
<4>
:
TX_ER (transmit coding error)
,
TX_ER
同步于
TX_CLK
,在数据传输过程中,如果
TX_ER
有效超过一个时钟周期,并且此时
TX_EN
是有效的,则数据通道中传输的数据是无效的,没用的。注:当
TX_ER
有效并不影响工作在
10Mb/s
的
PHY
或者
TX_EN
无效时的数据传输。在
MII
接口的连线中,如果
TX_ER
信号线没有用到,必须将它下拉接地。
图6
<5>
:
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
,如下图
7。
图
7
<6>
:
RXD (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>
。
图8
<7>
:
RX_ER (receive error)
,
RX_ER
同步于
RX_CLK
,其在
RX
通道中的作用类似于
TX_ER
对于
TX
通道数据传输的影响。
图9
<8>
:
CRS (carrier sense)
,
CRS
不需要同步于参考时钟,只要通道存在发送或者接收过程,
CRS
就需要有效。
The behavior of the CRS signal is unspecified when the duplex mode bit 0.8 in the control register is set to a logic one(
自动协商禁止,人工设为全双工模式
), or when the Auto-Negotiation process selects a full duplex mode of operation
,即半双工模式信号有效,全双工模式信号无效。
<9>
:
COL (collision detected)
,
COL
不需要同步于参考时钟。
The behavior of the COL signal is unspecified when the duplex mode bit 0.8 in the control register is set to a logic one
(自动协商禁止,人工设为全双工模式)
, or when the Auto-Negotiation process selects a full duplex mode of operation
。即半双工模式信号有效,全双工模式信号无效。
图10
1.4 MII的管理MDIO接口
MDIO
接口包括两根信号线:
MDC
和
MDIO
,通过它,
MAC
层芯片(或其它控制芯片)可以访问物理层芯片的寄存器(前面
100M
物理层芯片中介绍的寄存器组,但不仅限于
100M
物理层芯片,
10M
物理层芯片也可以拥有这些寄存器),并通过这些寄存器来对物理层芯片进行控制和管理。
MDIO
管理接口如下:
MDC
:管理接口的时钟,它是一个非周期信号,信号的最小周期(实际是正电平时间和负电平时间之和)为
400ns
,最小正电平时间和负电平时间为
160ns
,最大的正负电平时间无限制。它与
TX_CLK
和
RX_CLK
无任何关系。
MDIO
是一根双向的数据线。用来传送
MAC
层的控制信息和物理层的状态信息。
MDIO
数据与
MDC
时钟同步,在
MDC
上升沿有效。
MDIO
管理接口的数据帧结构如:
图
11 MDIO
管理接口的数据帧结构
帧结构各域的含义如下:
PRE
:帧前缀域,为
32
个连续“
1
”
比特,这帧前缀域不是必要的,某些物理层芯片的
MDIO
操作就没有这个域。
ST
:帧开始标志,出现“
01
”
比特表示帧设计开始。
OP
:帧操作码,比特“
10
”
表示此帧为一读操作帧,比特“
01
”
表示此帧为一写操作帧。
PHYAD
:物理层芯片的地址,
5
个比特,每个芯片都把自己的地址与这
5
个比特进行比较,若匹配则响应后面的操作,若不匹配,则忽略掉后面的操作。
REGAD
:用来选择物理层芯片的
32
个寄存器中的某个寄存器的地址。
TA
:状态转换域,若为读操作,则第一比特时
MDIO
为高阻态,第二比特时由物理层芯片使
MDIO
置“
0
”
。若为写操作,则
MDIO
仍由
MAC
层芯片控制,其连续输出“
10
”
两个比特。
DATA
:帧的寄存器的数据域,
16
比特,若为读操作,则为物理层送到
MAC
层的数据,若为写操作,则为
MAC
层送到物理层的数据。
IDLE
:帧结束后的空闲状态,此时
MDIO
无源驱动,处高阻状态,但一般用上拉电阻使其处在高电平,
即
MDIO
引脚需要上拉电阻
。
MDIO
数据帧的时序关系如下:
图
12 MDIO
数据帧的时序关系
MII
接口也有一些不足之处,主要是其接口信号线很多,发送和接收和指示接口有
14
根数据线
(
不包括
MDIO
接口的信号线,因为其被所有
MII
接口所共享
)
,当交换芯片的端口数据较多时,会造成芯片的管脚数目很多的问题,这给芯片的设计和单板的设计都带来了一定的问题。为了解决这些问题,人们设计了两种新的
MII
接口,它们是
RMII
接口
(
Reduced MII
接口
)
和
SMII
接口
(
StreamMII
接口
)
。
这两种接口都减少了
MII
接口的数据线,不过它们一般只用在以太网交换机的交
换
MAC
芯片和多口物理层芯片中,而很少用于单口的
MAC
层芯片和物理层芯片中。
RMII
接口和
SMII
接口都可以用于
10M
以太网和
100M
以太网,但不可能用于
1000M
以太网,因为此时时钟频率太高,不可能实现。
下面这张图是从DM365的datasheet上的。