什么是MAC
什么是PHY

什么是MII

什么是RMII
什么是GMII
什么是RGMII
什么是SMI
QA
网卡的MAC和PHY间的关系?
PHY和MAC之间如何进行沟通
大家好,我是皮哥。本文紧张先容以太网的 MAC 和 PHY,以及之间的 MII(Media Independent Interface ,媒体独立接口)和 MII 的各种衍生版本——GMII、SGMII、RMII、RGMII等。
简介从硬件的角度看,以太网接口电路紧张由MAC(Media Access Control)掌握器和物理层接口PHY(Physical Layer,PHY)两大部分构成。如下图所示:
DMA掌握器常日属于CPU的一部分,用虚线放在这里是为了表示DMA掌握器可能会参与到网口数据传输中。但是,在实际的设计中,以上三部分并不一定独立分开的。由于,PHY整合了大量仿照硬件,而MAC是范例的全数字器件。考虑到芯片面积及仿照/数字稠浊架构的缘故原由,常日,将MAC集成进微掌握器而将PHY留在片外。更灵巧、密度更高的芯片技能已经可以实现MAC和PHY的单芯片整合。可分为下列几种类型:
MAC及PHY事情在OSI七层模型的数据链路层和物理层。详细如下:
MAC(Media Access Control)即媒体访问掌握子层协议。
该部分有两个观点:MAC可以是一个硬件掌握器 及 MAC通信以协议。该协议位于OSI七层协议中数据链路层的下半部分,紧张卖力掌握与连接物理层的物理介质。MAC硬件大约便是下面的样子了:
在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些掌握信息,终极将数据以及掌握信息以规定的格式发送到物理层。
在吸收数据的时候,MAC协议首先判断输入的信息并是否发生传输缺点,如果没有缺点,则去掉掌握信息发送至LLC(逻辑链路掌握)层。该层协议因此太网MAC由IEEE-802. 3以太网标准定义。
以太网数据链路层实在包含MAC(介质访问掌握)子层和LLC(逻辑链路掌握)子层。一块以太网卡MAC芯片的浸染不但要实现MAC子层和LLC子层的功能,还要供应符合规范的PCI界面以实现和主机的数据交流。
MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之拆分并重新打包成最大1518Byte、最小64Byte的帧。
这个帧里面包括了目标MAC地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80表示,末了还有一个DWORD(4Byte)的CRC码。
可是目标的MAC地址是哪里来的呢?
这牵扯到一个ARP协议(介乎于网络层和数据链路层的一个协议)。第一次传送某个目的IP地址的数据的时候,先会发出一个ARP包,其MAC的目标地址是广播地址,里面说到:“谁是xxx.xxx.xxx.xxx这个IP地址的主人?”由于是广播包,所有这个局域网的主机都收到了这个ARP要求。收到要求的主机将这个IP地址和自己的比较较,如果不相同就不予理会,如果相同就发出ARP相应包。这个IP地址的主机收到这个ARP要求包后回答的ARP相应里说到:“我是这个IP地址的主人”。这个包里面就包括了他的MAC地址。往后的给这个IP地址的帧的目标MAC地址就被确定了。(其它的协议如IPX/SPX也有相应的协议完成这些操作)。
IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表。由驱动程序和操作系统完成。
以太网MAC芯片的一端接打算机PCI总线,其余一端就接到PHY芯片上,它们之间是通过MII接口链接的。一个MAC的构造图如下图所示:
PHY((Physical Layer,PHY))是IEEE802.3中定义的一个标准模块,STA(station management entity,管理实体,一样平常为MAC或CPU)通过SMI(Serial Manage Interface)对PHY的行为、状态进行管理和掌握,而详细管理和掌握动作是通过读写PHY内部的寄存器实现的。一个PHY的基本构造如下图:
PHY是物理接口收发器,它实现OSI模型的物理层。
IEEE-802.3标准定义了以太网PHY。包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质干系)子层、MDI子层。它符合IEEE-802.3k中用于10BaseT(第14条)和100BaseTX(第24条和第25条)的规范。
注:PHY寄存器在IEEE802.3标准的 22.2.4 Management functions 节有先容,但不涉及所有的寄存器,个别寄存器须要到其它章节中看,当然,文档里面也提到该在哪里找到哪个寄存器。
什么是MIIMII(Media Independent Interface)即媒体独立接口,MII 接口是 MAC 与 PHY 连接的标准接口。它是 IEEE-802.3 定义的以太网行业标准。MII 接供词给了 MAC 与 PHY 之间、PHY 与 STA(Station Management)之间的互联技能,该接口支持 10Mb/s 与 100Mb/s 的数据传输速率,数据传输的位宽为 4 位。MII 接口如下图所示:
MII接口紧张包括四个部分。一是从MAC层到PHY层的发送数据接口,二是从PHY层到MAC层的吸收数据接口,三是从PHY层到MAC层的状态指示旗子暗记,四是MAC层和PHY层之间传送掌握和状态信息的MDIO接口。
MII 包括一个数据接口,以及一个 MAC 和 PHY 之间的管理接口:
TX_CLK(transmit clock):TX_CLK (Transmit Clock) 是一个连续的时钟旗子暗记(即系统启动,该旗子暗记就一贯存在),它是 TX_EN、TXD、TX_ER(旗子暗记方向为从 RS 到 PHY)的参考时钟,TX_CLK 由 PHY 驱动 TX_CLK 的时钟频率是数据传输速率的 25%,偏差 ±100ppm。例如,100Mb/s 模式下,TX_CLK 时钟频率为 25MHz,占空比在 35% 至 65% 之间。 TXD<3:0>(transmit data):TXD 由 RS 驱动,同步于 TX_CLK,在 TX_CLK 的时钟周期内,并且TX_EN 有效,TXD 上的数据被 PHY 吸收,否则 TXD 的数据对 PHY 没有任何影响。 TX_ER(transmit coding error):TX_ER 同步于 TX_CLK,在数据传输过程中,如果 TX_ER 有效超过一个时钟周期,并且此时TX_EN 是有效的,则数据通道中传输的数据是无效的,没用的。注:当 TX_ER 有效并不影响事情在 10Mb/s 的 PHY 或者 TX_EN 无效时的数据传输。在 MII 接口的连线中,如果 TX_ER 旗子暗记线没有用到,必须将它下拉接地。 TX_EN:发送使能。TX_EN 由 Reconciliation 子层根据 TX_CLK 上升沿同步进行转换。 RX_CLK:它与 TX_CLK 具有相同的哀求,所不同的是它是 RX_DV、RXD、RX_ER(旗子暗记方向是从 PHY 到 RS)的参考时钟。RX_CLK 同样是由 PHY 驱动,PHY 可能从吸收到的数据中提取时钟 RX_CLK,也有可能从一个名义上的参考时钟(e.g., the TX_CLK reference)来驱动RX_CLK。 RXD<3:0>(receive data):RXD由RS驱动,同步于 RX_CLK,在 RX_CLK 的时钟周期内,并且 RX_DV 有效,RXD 上的数据被RS 吸收,否则 RXD 的数据对 RS 没有任何影响。 RX_ER(receive error):RX_ER 同步于 RX_CLK,其在 RX 通道中的浸染类似于 TX_ER 对付 TX 通道数据传输的影响。 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。MII以4位半字节办法传送数据双向传输,时钟速率25MHz。其事情速率可达100Mb/s。 COL(collision detected):COL 不须要同步于参考时钟。 CRS(carrier sense):CRS 不须要同步于参考时钟,只要通道存在发送或者吸收过程,CRS 就须要有效。 MDC:由站管理实体向 PHY 供应,作为在 MDIO 旗子暗记上传送信息的定时参考。MDC 是一种非周期性的旗子暗记,没有最高或最低韶光。无论 TX_CLK 和 RX_CLK 的标称周期如何,MDC 的最小高低韶光应为 160 ns,MDC 的最小周期为 400 ns。 MDIO:是 PHY 和 STA 之间的双向旗子暗记。它用于在 PHY 和 STA 之间传输掌握信息和状态。掌握信息由 STA 同步地针对 MDC 驱动并且由 PHY 同步地采样。状态信息由 PHY 针对 MDC 同步驱动并由 STA 同步采样。 PHY 里面的部分寄存器是 IEEE 定义的,这样PHY把自己的目前的状态反响到寄存器里面。
MAC 通过 SMI 总线不断的读取PHY 的状态寄存器以得知目前 PHY 的状态。例如连接速率、双工的能力等。
当然也可以通过 SMI 设置 PHY的寄存器达到掌握的目的。例如流控的打开关闭、自协商模式还是逼迫模式等。
不论是物理连接的MII总线和 SMI 总线,还是 PHY 的状态寄存器和掌握寄存器都是由IEEE的规范的。因此不同公司的 MAC 和 PHY 一样可以折衷事情。当然为了合营不同公司的 PHY 的自己特有的一些功能,驱动须要做相应的修正。
MII 支持 10Mbps 和 100Mbps 的操作,一个接口由 14 根线组成,它的支持还是比较灵巧的。但是有一个缺陷是由于它一个端口用的旗子暗记线太多,如果一个 8 端口的交流机要用到 112 根线,16 端口就要用到 224 根线,到 32 端口的话就要用到 448 根线。一样平常按照这个接口做交流机是不太现实的。以是当代的交流机的制作都会用到其它的一些从 MII 简化出来的标准,比如 RMII、SMII、GMII等。
什么是RMII简化媒体独立接口是标准的以太网接口之一,比 MII 有更少的 I/O 传输。RMII 口是用两根线来传输数据的,MII 口是用 4 根线来传输数据的,GMII 是用 8 根线来传输数据的。MII/RMII 只是一种接口,对付10Mbps 线速,MII 的时钟速率是 2.5MHz 就可以了,RMII 则须要 5MHz;对付 100Mbps 线速,MII 须要的时钟速率是 25MHz,RMII 则是 50MHz。
MII/RMII 用于传输以太网包,在 MII/RMII 接口是 4/2bit 的,在以太网的PHY里须要做串并转换,编解码等才能在双绞线和光纤上进行传输,其帧格式遵照IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。
以太网帧的格式为:前导符 + 开始位 + 目的 mac 地址 + 源 mac 地址 + 类型/长度 + 数据 + padding(optional) + 32bitCRC。如果有 vlan,则要在类型/长度后面加上 2 个字节的 vlan tag,个中 12bit 来表示vlan id,其余,4bit 表示数据的优先级!
什么是GMIIGMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。GMII 采取 8 位接口数据,事情时钟125MHz,因此传输速率可达 1000Mbps。同时兼容 MII 所规定的10/100 Mbps事情办法。GMII 接口数据构造符合IEEE以太网标准,该接口定义见 IEEE 802.3-2000。
什么是RGMII RGMII(Reduced Gigabit Media Independant Interface),精简GMII接口。相对付GMII比较,RGMII具有如下特色:
发送/吸收数据线由8条改为4条 TX_ER和TX_EN复用,通过TX_CTL传送 RX_ER与RX_DV复用,通过RX_CTL传送 1 Gbit/s速率下,时钟频率为125MHz 100 Mbit/s速率下,时钟频率为25MHz 10 Mbit/s速率下,时钟频率为2.5MHz 旗子暗记定义如下:
虽然RGMII旗子暗记线减半,但TXC/RXC时钟仍为125Mhz,为了达到1000Mbit的传输速率,TXD/RXD旗子暗记线在时钟上升沿发送吸收GMII接口中的TXD[3:0]/RXD[3:0],在时钟低落沿发送吸收TXD[7:4]/RXD[7:4],并且旗子暗记TX_CTL反应了TX_EN和TX_ER状态,即在TXC上升沿发送TX_EN,低落沿发送TX_ER,同样的道理试用于RX_CTL,下图为发送吸收的时序:
什么是SMI SMI:串行管理接口(Serial Management Interface),常日直接被称为MDIO接口(Management Data Input/Output Interface)。MDIO最早在IEEE 802.3的第22卷定义,后来在第45卷又定义了增强版本的MDIO,其紧张被运用于以太网的MAC和PHY层之间,用于MAC层器件通过读写寄存器来实现对PHY层器件的操作与管理。
MDIO主机(即产生MDC时钟的设备)常日被称为STA(Station Management Entity),而MDIO从机常日被称为MMD(MDIO Management Device)。常日STA都是MAC层器件的一部分,而MMD则是PHY层器件的一部分。
MDIO接口包括两条线,MDIO和MDC,个中MDIO是双向数据线,而MDC是由STA驱动的时钟线。MDC时钟的最高速率一样平常为2.5MHz,MDC也可以是非固定频率,乃至可以是非周期的。MDIO接口只是会在MDC时钟的上升沿进行采样,而并不在意MDC时钟的频率(类似于I2C接口)。如下图所示。
QA网卡的MAC和PHY间的关系? 网卡事情在osi的末了两层,物理层和数据链路层,物理层定义了数据传送与吸收所须要的电与光旗子暗记、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备供应标准接口.物理层的芯片称之为PHY.
数据链路层则供应寻址机构、数据帧的构建、数据差错检讨、传送掌握、向网络层供应标准的数据接口等功能.以太网卡中数据链路层的芯片称之为MAC掌握器.
很多网卡的这两个部分是做到一起的.他们之间的关系是pci总线接mac总线,mac接phy,phy接网线(当然也不是直接接上的,还有一个变压装置).
PHY和MAC之间如何进行沟通通过IEEE定义的标准的MII/GigaMII(Media Independed Interfade,介质独立界面)界面连接MAC和PHY。这个界面是IEEE定义的。MII界面通报了网络的所有数据和数据的掌握。
而MAC对PHY的事情状态的确定和对PHY的掌握则是利用SMI(Serial Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己的目前的状态反响到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速率,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到掌握的目的,例如流控的打开关闭,自协商模式还是逼迫模式等。
我们看到了,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器和掌握寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以折衷事情。当然为了合营不同公司的PHY的自己特有的一些功能,驱动须要做相应的修正。









