在开发以太网接口的过程中经常看到 MII、RMII、GMII、RGMII 等英文缩写名称。在开发接口前,先将这些名词搞清楚。
1 MII
MII(Medium Independent Interface)的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的 MAC 层和 PHY 层之间,MII 接口的类型有很多,常用的有 MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI 等。
MII 支持 10 兆和 100 兆的操作,一个接口由 14 根线组成,它的支持还是比较灵活的,但是有一个缺点是因为它一个端口用的信号线太多
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 接口一共有 16 根线。
2 RMII
RMII 是简化的 MII 接口,在数据的收发上它比 MII 接口少了一倍的信号线,所以它一般要求是 50 兆的总线时钟,是 MII 接口时钟的两倍。
3 GMII
与 MII 接口相比,GMII 的数据宽度由 4 位变为 8 位,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 根。
GMII 是千兆网的 MII 接口。GMII 采用 8 位接口数据,工作时钟 125MHz,因此传输速率可达 1000Mbps。同时兼容 MII 所规定的 10/100 Mbps 工作方式。
4 RGMII
RGMII 接口表示简化了的 GMII 接口。RGMII 均采用 4 位数据接口,工作时钟 125MHz,并且在上升沿和下降沿同时传输数据,因此传输速率可达 1000Mbps。同时兼容 MII 所规定的 10/100 Mbps 工作方式,支持传输速率:10M/100M/1000Mb/s ,其对应 clk 信号分别为:2.5MHz/25MHz/125MHz。