GMAC 系统框架

GMAC 通常由 MAC 控制器和 PHY 构成。
CPU,MAC,PHY 并不是集成在同一个芯片内,由于 PHY 包含大量模拟器件,而 MAC 是典型的数字电路,考虑到芯片面积及模拟 / 数字混合架构的原因,将 MAC 集成进 CPU 而将 PHY 留在片外,这种结构是最常见的。
MAC 控制器主要完成数据链路层的 IP 数据报打包成网络帧并将数据发送给 PHY。
PHY 主要完成速度协商,数字信号到模拟信号的转换最后吧信号输出到网线上。

MAC

MAC(Media Access Control),即媒体访问控制子层协议。
该协议位于 OSI 七层协议中数据链路层的下半部分, 主要负责控制与连接物理层的物理介质。
在发送数据的时候, MAC 协议可以事先判断是否可以发送数据, 如果可以发送将给数据加上一些控制信息, 最终将数据以及控制信息以规定的格式发送到物理层;
在接收数据的时候, MAC 协议首先判断输入的信息并是否发生传输错误, 如果没有错误, 则去掉控制信息发送至 LLC 层. 该层协议是以太网 MAC 由 IEEE-802.3 以太网标准定义. 最新的 MAC 同时支持 10Mbps 和 100Mbps 两种速率。

PHY

PHY 是物理接口收发器, 它实现物理层. IEEE-802.3 标准定义了以太网 PHY. 包括 MII/GMII(介质独立接口) 子层, PCS(物理编码子层),PMA(物理介质附加) 子层, PMD(物理介质相关) 子层, MDI 子层. 它符合 IEEE-802.3k 中用于 10BaseT(第 14 条) 和 100BaseTX(第 24 条和第 25 条) 的规范

PHY 在发送数据的时候, 收到 MAC 过来的数据 (对 PHY 来说, 没有帧的概念, 对它来说, 都是数据而不管什么地址, 数据还是 CRC. 对于 100BaseTX 因为使用 4B/5B 编码, 每 4bit 就增加 1bit 的检错码), 然后把并行数据转化为串行流数据, 再按照物理层的编码规则把数据编码, 再变为模拟信号把数据送出去. 收数据时的流程反之. PHY 还有个重要的功能就是实现 CSMA/CD 的部分功能. 它可以检测到网络上是否有数据在传送, 如果有数据在传送中就等待, 一旦检测到网络空闲, 再等待一个随机时间后将送数据出去. 如果两个碰巧同时送出了数据, 那样必将造成冲突, 这时候, 冲突检测机构可以检测到冲突, 然后各等待一个随机的时间重新发送数据. 这个随机时间很有讲究的, 并不是一个常数, 在不同的时刻计算出来的随机时间都是不同的, 而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突.

PHY 还提供了和对端设备连接的重要功能并通过 LED 灯显示出自己目前的连接的状态和工作状态让我们知道. 当我们给网卡接入网线的时候, PHY 不断发出的脉冲信号检测到对端有设备, 它们通过标准的” 语言” 交流, 互相协商并却定连接速度、双工模式、是否采用流控等. 通常情况下, 协商的结果是两个设备中能同时支持的最大速度和最好的双工模式. 这个技术被称为 AutoNegotiation 或者 NWAY, 它们是一个意思–自动协商.

具体传输过程为, 发送数据时, 网卡首先侦听介质上是否有载波 (载波由电压指示), 如果有, 则认为其他站点正在传送信息, 继续侦听介质. 一旦通信介质在一定时间段内(称为帧间缝隙 IFG=9.6 微秒) 是安静的, 即没有被其他站点占用, 则开始进行帧数据发送, 同时继续侦听通信介质, 以检测冲突. 在发送数据期间, 如果检测到冲突, 则立即停止该次发送, 并向介质发送一个 “阻塞” 信号, 告知其他站点已经发生冲突, 从而丢弃那些可能一直在接收的受到损坏的帧数据, 并等待一段随机时间 (CSMA/CD 确定等待时间的算法是二进制指数退避算法). 在等待一段随机时间后, 再进行新的发送. 如果重传多次后(大于 16 次) 仍发生冲突, 就放弃发送. 接收时, 网卡浏览介质上传输的每个帧, 如果其长度小于 64 字节, 则认为是冲突碎片. 如果接收到的帧不是冲突碎片且目的地址是本地地址, 则对帧进行完整性校验, 如果帧长度大于 1518 字节 (称为超长帧, 可能由错误的 LAN 驱动程序或干扰造成) 或未能通过 CRC 校验, 则认为该帧发生了畸变. 通过校验的帧被认为是有效的, 网卡将它接收下来进行本地处理.

接口

GMAC 与 PHY 接口支持四种模式:MII、GMII、RMII、RGMII。
以太网的通信离不开物理层 PHY 芯片的支持,以太网 MAC 和 PHY 之间有一个接口,常用的接口有 MII、 RMII、 GMII、 RGMII 等。

MII(Medium Independent Interface, 媒体独立接口): MII 支持 10Mbps 和 100Mbps 的操作,数据位宽为 4 位
在 100Mbps 传输速率下,时钟频率为 25Mhz
在 10Mbps 传输速率下,时钟频率为 2.5Mhz

RMII(Reduced MII): RMII 是 MII 的简化版, 数据位宽为 2 位
在 100Mbps 传输速率下,时钟频率为 50Mhz
在 10Mbps 传输速率下,时钟频率为 5Mhz

GMII(Gigabit MII): GMII 接口向下兼容 MII 接口, 支持 10Mbps、 100Mbps 和 1000Mbps 的操作,数据位宽为 8 位
在 1000Mbps 传输速率下,时钟频率为 125Mhz
在 100Mbps 传输速率下,时钟频率为 25Mhz
在 10Mbps 传输速率下,时钟频率为 2.5Mhz

RGMII(Reduced GMII): RGMII 是 GMII 的简化版,数据位宽为 4 位
在 1000Mbps 传输速率下,时钟频率为 125Mhz,在时钟的上下沿同时采样数据
在 100Mbps 传输速率下,时钟频率为 25MHz,为单个时钟沿采样
在 10Mbps 传输速率下,时钟频率为 2.5MHz,为单个时钟沿采样
在千兆以太网中,常用的接口为 RGMII 和 GMII 接口。 RGMII 接口的优势是同时适用于 10M/100M/1000Mbps 通信速率,同时占用的引脚数较少。但 RGMII 接口也有其缺点,就是在 PCB 布线时需要尽可能对时钟、控制和数据线进行等长处理,且时序约束相对也更为严格。

MII

MII(Media Independent Interface),媒体独立接口。
所有的这些接口都从 MII 而来,MII 是 (Medium Independent Interface) 的意思 ,是指不用考虑媒体是铜轴、光纤、电缆等,因为这些媒体处理的相关工作都有 PHY 或者叫做 MAC 的芯片完成。
MII 支持 10 兆和 100 兆的操作,一个接口由 14 根线组成 ,它的支持还是比较灵活的,但是有一个缺点是因为它一个端口用的信号线太多,如果一个 8 端口的交换机要用到 112 根线,16 端口就要用到 224 根线,到 32 端口的话就要用到 448 根线,一般按照这个接口做交换机,是不太现实的,所以现代的交换机的制作都会用到其它的一些从 MII 简化出来的标准,比如 RMII、SMII、GMII 等。
MII,即媒体独立接口,是 IEEE-802.3 定义的以太网行业标准,用于 Fast Ethernet MAC-block 与各种类型的 PHY 连接。 它包括一个数据接口 ,以及一个 MAC 和 PHY 之间的管理接口 。数据接口包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号 。MII 数据接口总共需要 16 个信号。管理接口是个双信号接口:一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制 PHY 。
在其他速率下工作的与 MII 等效的接口有:AUI(10M 以太网)、GMII(Gigabit 以太网) 和 XAUI(10-Gigabit 以太网)。MII Management interface 只有两条信号线。
ETHERNET 的接口实质是 MAC 通过 MII 总线控制 PHY 的过程。

MII 以 4 位半字节方式传送数据双向传输,时钟速率 25MHz。其工作速率可达 100Mb/s。MII 管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制 PHY。其管理是使用 SMI(Serial Management Interface)总线通过读写 PHY 的寄存器来完成的。PHY 里面的部分寄存器是 IEEE 定义的,这样 PHY 把自己的目前的状态反映到寄存器里面,MAC 通过 SMI 总线不断的读取 PHY 的状态寄存器以得知目前 PHY 的状态,例如连接速度,双工的能力等。当然也可以通过 SMI 设置 PHY 的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。不论是物理连接的 MII 总线和 SMI 总线还是 PHY 的状态寄存器和控制寄存器都是有 IEEE 的规范的,因此不同公司的 MAC 和 PHY 一样可以协调工作。当然为了配合不同公司的 PHY 的自己特有的一些功能,驱动需要做相应的修改。

PHY 是物理接口收发器,它实现物理层。包括 MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI 子层。

100BaseTX 采用 4B/5B 编码。

PHY 在发送数据的时候,收到 MAC 过来的数据(对 PHY 来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是 CRC),每 4bit 就增加 1bit 的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。PHY 还有个重要的功能就是实现 CSMA/CD 的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为 Auto Negotiation 或者 NWAY。隔离变压器把 PHY 送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。RJ-45 中 1、2 是传送数据的,3、6 是接收数据的。新的 PHY 支持 AUTO MDI-X 功能 (也需要隔离变压器支持)。它可以实现 RJ-45 接口的 1、2 上的传送信号线和 3、6 上的接收信号线的功能自动互相交换。

gplp架构 gpma架构是什么_信号线


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 接口一共有 16 根线。

GMII

GMII(Gigabit Media Independent Interface),千兆媒体独立接口。
GMII 接口–(数据线: 11 * 2 + 2 == 24 线)
GMII 采用 8 位接口数据,工作时钟 125MHz,因此传输速率可达 1000Mbps(每个数据收发口每秒有 125M 个周期的电平变换,收发各 8 个口)。同时兼容 MII 所规定的 10/100 Mbps 工作方式。
发送:
GTXCLK/TXCLK:
千兆模式下,MAC 提供这个时钟 (与 MII 区别),其他信号和这个信号同步
百兆模式下,PHY 提供这个时钟,其他信号和这个同步)
TXEN——发送器使能信号
TXER——发送器错误(用于破坏一个数据包)
TXD[7…0]——被发送数据

接收:
RXCLK——接收时钟信号(从收到的数据中提取,因此与 GTXCLK 无关联)
RXDV——接收数据有效指示
RXER——接收数据出错指示
RXD[7…0]——接收数据

管理配置:(用于配置 PHY)
MDC——配置接口时钟
MDIO——配置接口 I/O

RMII

RMII(Reduced Media Independent Interface),精简媒体独立接口。

RGMII

RGMII(Reduced Gigabit Media Independent Interface),精简千兆媒体独立接口。

Reduced GMII,GMII 采用 8 位数据传输,RGMII 采用 4 位数据传输,所以这个按字面意思理解就是减少的 GMII。这个是因为 RGMII 在时钟的上升沿和下降沿均采样数据,所以数据位减少一般的情况下还是可以达到千兆的速率。其工作时钟 125 兆,兼容 MII 规定的 10/100Mbps,

gplp架构 gpma架构是什么_信号线_02


RX_CTL-:接收数据控制信号。

RD:四位并行的接收数据线。

TX_CTL:发送数据控制信号。

TD:四位并行的发送数据线。

由 GMII 的 24 线简化为 14 线,TX/RX 数据宽度从 8 为变为 4 位。
为了保持 1000Mbps 的传输速率不变,RGMII 接口在时钟的上升沿和下降沿都采样数据,时钟频率仍旧为 125MHz。
(100M 和 10M 时参考时钟为 25Mhz 和 2.5MHz)
在参考时钟的上升沿发送 GMII 接口中的 TXD[3:0]/RXD[3:0];
在参考时钟的下降沿发送 GMII 接口中的 TXD[7:4]/RXD[7:4]。

使能和 error 合到一根线上:
TX_EN 信号线上传送 TX_EN 和 TX_ER 两种信息,在 TX_CLK 的上升沿发送 TX_EN,下降沿发送 TX_ER;RX 同理。