以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍网络设备中肯定离开不 MAC 和 PHY 本篇文章将详细介绍下以太网中一些常见术语与接口 MAC 和 PHY 结构从硬件角度来看以太网是由 CPU MAC PHY 三部分组成的 如下图示意 上图中 DMA 集成在 CPU CPU MAC PHY 并不是集成在同一个芯片内 由于 PHY 包含大量模拟器件 而 MAC 是典型的数字电路 考虑到芯片面积及模拟 数字混合架构的原因 将 MAC 集成进 CPU 而将 PHY 留在片外 这种

网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。

MAC和PHY结构

从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意:

在这里插入图片描述
上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,将MAC集成进CPU而将PHY留在片外,这种结构是最常见的。 下图是网络接口内部结构图,虚框表示CPU,MAC集成在CPU中,PHY芯片通过MII接口与CPU上的MAC连接:

在这里插入图片描述
以上是以太网结构大框架,下面分别介绍各个部分。


MAC

MAC(Media Access Control) 即媒体访问控制层协议。MAC由硬件控制器及MAC通信协议构成。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC硬件框图如下图所示:

在这里插入图片描述

在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。该层协议是以太网MAC由IEEE-802. 3以太网标准定义。一般以太网MAC芯片的一端连接PCI总线,另一端连接PHY芯片上通过MII接口连接。


PHY

PHY(Physical Layer)是IEEE802.3中定义的一个标准模块,STA(Station Management Entity,管理实体,一般为MAC或CPU)通过MIIM(MII Manage Interface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。PHY的基本结构如下图:

在这里插入图片描述

  1. 上图B和E表示在特定接口下,寄存器是基本的还是扩展的。例如:MII接口下只有0和1寄存器是基本的,其它的是扩展的。所为扩展是指留给IEEE以后的扩展特性用,不是给PHY厂商的扩展,PHY厂商自定义的只能是16~31号寄存器 。
  2. 在IEEE标准文档及某些PHY手册中,某寄存器的比特(bit)用X.y表示,如0.15表示第0寄存器的第15位。

MII

MII(Media Independent interface)即介质无关接口,它是IEEE-802.3定义的行业标准,是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号,如下图所示:

在这里插入图片描述
信号定义如下:

信号名称 描述 方向
TX_CLK 发送时钟 PHY → MAC
TX_ER 发送数据错误 MAC → PHY
TX_EN 发送使能 MAC → PHY
TXD0 发送数据位0(最先传输) MAC → PHY
TXD1 发送数据位1 MAC → PHY
TXD2 发送数据位2 MAC → PHY
TXD3 发送数据位3 MAC → PHY
RX_CLK 接收时钟 PHY → MAC
RX_DV 接收数据有效 PHY → MAC
RX_ER 接收数据错误 PHY → MAC
RXD0 接收数据位0(最先传输) PHY → MAC
RXD1 接收数据位1 PHY → MAC
RXD2 接收数据位2 PHY → MAC
RXD3 接收数据位3 PHY → MAC
CRS 载波监测 PHY → MAC
COL 冲突碰撞监测 PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

MAC 通过MIIM 接口读取PHY 状态寄存器以得知目前PHY 的状态。例如连接速度、双工的能力等。也可以通过 MIIM设置PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。当时钟频率为2.5MHz时,对应速率为10Mb/s。MII接口虽然很灵活但由于信号线太多限制多接口网口的发展,后续又衍生出RMII,SMII等。


RMII

RMII(Reduced Media Independant Interface),精简MII接口,节省了一半的数据线。RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。信号定义如下:

信号名称 描述 方向
REF_CLK 参考时钟 MAC→PHY或由外部时钟源提供
TX_EN 发送数据使能 MAC → PHY
TXD0 发送数据位0(最先传输) MAC → PHY
TXD1 发送数据位1 MAC → PHY
RX_ER 接收错误 PHY → MAC
RXD0 接收数据位0(最先传输) PHY → MAC
RXD1 接收数据1 PHY → MAC
CRS_DV 载波和接收数据有效 PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

其中CRS_DV是MII中RX_DV和CRS两个信号的合并,当物理层接收到载波信号后CRS_DV变得有效,将数据发送给RXD。当载波信号消失后,CRS_DV会变为无效。在100M以太网速率中,MAC层每个时钟采样一次RXD[1:0]上的数据,在10M以太网速率中,MAC层每10个时钟采样一次RXD[1:0]上的数据,此时物理层接收的每个数据会在RXD[1:0]保留10个时钟。


SMII

SMII(Serial Media Independant Interface),串行MII接口。它包括TXD,RXD,SYNC三个信号线,共用一个时钟信号,此时钟信号是125MHz,信号线与此时钟同步。信号定义如下:

信号名称 描述 方向
REF_CLK 参考时钟 外部时钟源提供125MHz
TXD 发送数据 MAC → PHY
RXD 接收数据 PHY → MAC
SYNC 同步信号
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

SYNC是数据收发的同步信号,每10个时钟同步置高一次电平,表示同步。TXD和RXD上的数据和控制信息,以10bit为一组。发送部分波形如下:

在这里插入图片描述

从波形可以看出,SYNC变高后的10个时钟周期内,TXD依次输出一组10bit的数据即TX_ER,TX_EN,TXD[0:7],这些控制信息和MII接口含义相同。在100M速率中,每一组的内容都是变换的,在10M速率中,每一组数据需要重复10次,采样任一一组都可以。


GMII

GMII(Gigabit Media Independant Interface),千兆MII接口。GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。信号定义如下:

信号名称 描述 方向
GTX_CLK 1000M发送时钟 MAC → PHY
TX_CLK 100/10M发送时钟 MAC → PHY
TX_ER 发送数据错误 MAC → PHY
TX_EN 发送使能 MAC → PHY
TX_[7:0] 发送数据8bit MAC → PHY
RX_CLK 接收时钟 PHY → MAC
RX_DV 接收数据有效 PHY → MAC
RX_ER 接收数据错误 PHY → MAC
RX_[7:0] 接收数据8bit PHY → MAC
CRS 载波监测 PHY → MAC
COL 冲突碰撞监测 PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

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

信号定义如下:

信号名称 描述 方向
TXC 发送时钟 MAC→PHY
TX_CTL 发送数据控制 MAC → PHY
TXD[3:0] 发送数据4bit MAC → PHY
RXC 接收时钟 PHY → MAC
RX_CTL 接收数据控制 PHY → MAC
RXD[3:0] 接收数据4bit PHY → MAC
MDIO 管理数据 双向
MDC 管理数据时钟 MAC → PHY

虽然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,下图为发送接收的时序:

在这里插入图片描述
在这里插入图片描述


参考

  1. Media-independent interface From Wikipedia
  2. Ethernet(以太网)之 详解 MAC、MII、PHY
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208017.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午12:33
下一篇 2026年3月19日 下午12:33


相关推荐

  • 浅谈软件性能提升相关的概念

    浅谈软件性能提升相关的概念浅谈软件性能提升相关的概念原文链接为<Makingyourprogramrunfaster:thekeyconceptsofsoftwareperformance-Jo

    2022年7月3日
    23
  • 同源策略与跨域

    同源策略与跨域前言 最近业务上前端同学多次联系说访问腾讯云 cos 资源的时候因为跨域的问题访问不到 大致看了下腾讯云关于设置跨域访问的教程 按照前端同学给的域名等选项就给配了 而且测试下来也是好的 但是呢一直不知道什么是跨域这里就做一个简单的学习记录 一 同源策略同源策略 SameOriginPo 是一种约定 它是浏览器最核心也是最基本的安全功能 同源策略会阻止一个域的 javascrip 脚本和另一个域的内容进行交互 是用于隔离潜在恶意文件的关键安全机制 关于这一点我们后面会举例说明

    2026年3月19日
    2
  • Internet Download Manager6.32(IDM)安装及激活成功教程方法[亲测有效]

    Internet Download Manager6.32(IDM)安装及激活成功教程方法[亲测有效]InternetDown 简称 IDM 是国外的一款优秀下载工具 该软件同时是一款共享软件 凭借着下载计算的速度优势在外媒网站中均受好评 能提升你的下载速度最多达 5 倍 支持断点续传功能 软件及激活成功教程工具下载地址 http sina lt fXVe 城通网盘下载地址 https u ctfile com fs

    2026年3月18日
    2
  • java 104规约_电网104规约解包(java)「建议收藏」

    java 104规约_电网104规约解包(java)「建议收藏」【实例简介】电网104规约解包java代码项目是围绕电网规约101规约(DL/T634.5101-2002)和104规约(DL/T634.5104-2009),项目基于Java语言。可以完成规约的内容解析工作和组装工作。可用于实际场景的把发送报文的生成等工作。【文件目录】101_104规约解析├──LICENSE├──README.md├──docs│├──附件1:广东电网配网自动…

    2022年6月20日
    41
  • Python实现softmax函数「建议收藏」

    Python实现softmax函数:PS:为了避免求exp(x)出现溢出的情况,一般需要减去最大值。#-*-coding:utf-8-*-importtensorflowastfimportnumpyasnpdefsoftmax(x,axis=1):#计算每行的最大值row_max=x.max(axis=axis)…

    2022年4月14日
    497
  • 如何安装 IntelliJ IDEA 最新版本——详细教程「建议收藏」

    如何安装 IntelliJ IDEA 最新版本——详细教程「建议收藏」IntelliJIDEA简称IDEA,被业界公认为最好的Java集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA分为社区版和付费版两个版本。我呢,一直是Eclipse的忠实粉丝,差不多十年的老用户了。很早就接触到了IDEA…

    2022年10月1日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号