一. 简介
本文来了解一下常用的一种网络硬件方案:SOC内部集成网络MAC外设+ PHY网络芯片方案。
其中涉及的 MII接口,RMII接口(MII接口与RMII接口二选一),MDIO接口,RJ45。
二. MII/RMII 接口,MDIO 接口 ,RJ45
本文简单了解一下内部带网络MAC的 SOC+外接一个PHY芯片,这种网络硬件方案涉及到的接口连接。
内部 MAC+ 外部 PHY+RJ45 座 ( 内置网络变压器 ) 就组成了一个完整的嵌入式网络接口硬件,如下图 所示:
前面我们说了,内部 MAC 通过 MII/RMII 接口来与外部的 PHY 芯片连接,完成网络数据 传输,接下来我们就来学习一下什么是 MII 和 RMII 接口,以及 MDIO 接口。
注意:主控需要配置或读取 PHY 芯片,也就是读写 PHY 的内部寄存器,所以还需要一个控制接口,叫做 MIDO。MDIO 很类似 IIC,也是两根线,一根数据线叫做 MDIO,一 根时钟线叫做MDC。
1. MII 接口
MII 全称是 Media Independent Interface ,直译过来就是介质独立接口,它是 IEEE-802.3 定义的以太网标准接口, MII 接口用于以太网 MAC 连接 PHY 芯片,连接示意图如下 所 示:
MII 接口一共有 16 根信号线,含义如下:
TX_CLK : 发送时钟,如果网速为 100M 的话时钟频率为 25MHz , 10M 网速的话时钟频率为 2.5MHz ,此时钟由 PHY 产生并发送给 MAC 。
TX_EN : 发送使能信号。
TX_ER : 发送错误信号,高电平有效,表示 TX_ER 有效期内传输的数据无效。 10Mpbs 网 速下 TX_ER 不起作用。
TXD[3:0] :发送数据信号线,一共 4 根。
RXD[3:0] : 接收数据信号线,一共 4 根。
RX_CLK : 接收时钟信号,如果网速为 100M 的话时钟频率为 25MHz , 10M 网速的话时钟频率为 2.5MHz , RX_CLK 也是由 PHY 产生的。
RX_ER : 接收错误信号,高电平有效,表示 RX_ER 有效期内传输的数据无效。 10Mpbs 网速下 RX_ER 不起作用。
RX_DV : 接收数据有效,作用类似 TX_EN 。
CRS : 载波侦听信号。
COL : 冲突检测信号。
MII 接口的缺点就是所需信号线太多,这还没有算 MDIO 和 MDC 这两根管理接口的数据线,因此 MII 接口使用已经越来越少了。
2. RMII 接口
RMII 全称是 Reduced Media Independent Interface ,翻译过来就是精简的介质独立接口,也就是 MII 接口的精简版本。 RMII 接口只需要 7 根数据线,相比 MII 直接减少了 9 根,极大的 方便了板子布线, RMII 接口连接 PHY 芯片的示意图如图 69.1.2.2 所示:
TX_EN : 发送使能信号。
TXD[1:0] : 发送数据信号线,一共 2 根。
RXD[1:0] :接收数据信号线,一共 2 根。
CRS_DV : 相当于 MII 接口中的 RX_DV 和 CRS 这两个信号的混合。
REF_CLK : 参考时钟,由外部时钟源提供, 频率为 50MHz 。这里与 MII 不同, MII 的接 收和发送时钟是独立分开的,而且都是由 PHY 芯片提供的。
除了 MII 和 RMII 以外,还有其他接口,比如 GMII、RGMII、SMII、SMII 等,关于其他接口基本都是大同小异的,这里就不做讲解了。正点原子 ALPAH 开发板上的两个网口都是采 用 RMII 接口来连接 MAC 与外部 PHY 芯片。
3. MDIO 接口
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. RJ45 接口
网络设备是通过网线连接起来的,插入网线的叫做 RJ45 座,如下图 所示:
RJ45 座要与 PHY 芯片连接在一起,但是中间需要一个网络变压器,网络变压器用于隔离以及滤波等,网络变压器也是一个芯片,外形一般下图所 示:
但是现在很多 RJ45 座子内部已经集成了网络变压器,比如,正点原子 ALPHA 开发板所使用 的 HR911105A 就是内置网络变压器的 RJ45 座。内置网络变压器的 RJ45 座和不内置的引脚一 样,但是一般不内置的 RJ45 座会短一点。
注意:
因此,大家在画板时一定要考虑你所使用的 RJ45 座是否内置网络变压器,如果不内置的话就要自行添加网络变压器部分电路!!!同理,如果你所设计的硬件是需要内置网络变压器的 RJ45 座,肯定不能随便焊接一个不内置变压器的 RJ45 座,否则网络工作不正常!
RJ45 座子上一般有两个灯,一个黄色 ( 橙色 ) ,一个绿色,绿色亮的话表示网络连接正常, 黄色闪烁的话说明当前正在进行网络通信。这两个灯由 PHY 芯片控制, PHY 芯片会有两个引 脚来连接 RJ45 座上的这两个灯。