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

2023-05-16

网络设备中肯定离开不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的基本结构如下图:

                                在这里插入图片描述

PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据)然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去,收数据时的流程反之。
PHY还有个重要的功能就是实现CSMA/CD的部分功能,它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去.如果两个碰巧同时送出了数据,那样必将造成冲突,这时候冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。

PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义,如下表所示:

       

注:

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


MII

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

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


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时钟源。信号定义如下:


其中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,信号线与此时钟同步。信号定义如下:


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。信号定义如下:

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

在这里插入图片描述

在这里插入图片描述
参考

Media-independent interface From Wikipedia
Ethernet(以太网)之 详解 MAC、MII、PHY
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • MWC(2) Multiwii初学者详细准备

    1 1 软件准备 Arduino IDE 官方下载链接 xff1a https www arduino cc download handler php 或者Arduino社区资源 xff1a http www arduino cn thre
  • Linux(Ubuntu)下使用OneNote

    开始学习ROS xff0c 学习时遇到问题想要记录 xff0c 原来Office套件不支持Linux xff0c 大坑一 xff1a 搜了很久 xff0c 看到的无外乎以下几种 xff1a 作者 xff1a mst7 链接 xff1a ht
  • Ubuntu Anaconda 安装tensorflow及opencv3.2.0

    教程已更新 xff0c 请参照http blog csdn net yjy728 article details 78826447 一 安装Anaconda windows只支持python3 5 X xff0c ubuntu下直接下最新版
  • Ubuntu16.04下PX4 开发环境配置

    PX4 Ubuntu1604 开发环境配置 问题1 依赖错误及安装时404错误问题2 安装基于NuttX的硬件出错问题3 编译报错问题4 QT配置问题 PX4 Ubuntu16 04 开发环境配置 看到官网有详细介绍 xff08 官网安装说
  • [px4仿真]单独启动编译和Gazebo仿真器

    This article shows how to starting Gazebo and PX4 separately 按照官方教程并没有成功 中文教程和英文教程都有错误 xff0c 应该如下 span class hljs built
  • [px4仿真]px4的STIL仿真中添加向下的摄像头

    后面发现这样改有问题 xff0c 正确的修改方法参考这条提交记录 xff1a https github com TokyoClod sitl gazebo commit e61e6e46a665804f072474b2b1b085fb701
  • VISP库IBVS仿真

    示例程序1 tutorial ibvs 4pts cpp span class hljs comment example tutorial ibvs 4pts cpp span span class hljs preprocessor in
  • blender中UV贴图及导出dae文件

    设置单位meter 设置大小 按 N调出属性面板 设置 依次选择编辑模式 线框 面选择 xff1b 进入UV贴图模式 右击选中物体上表面 xff0c 按U 展开 xff1b 上方选择UV Editing模式 贴图 左下底部选择 图像 打开图
  • AprilTag视觉定位系统

    AprilTag是一个视觉基准库 xff0c 在AR xff0c 机器人 xff0c 相机校准领域广泛使用 通过特定的标志 xff08 与二维码相似 xff0c 但是降低了复杂度以满足实时性要求 xff09 xff0c 可以快速地检测标志
  • keras 多输入多输出网络

    keras中的多输入多输出网络 多输入多输出网络搭建的官网介绍 xff1a http keras cn readthedocs io en latest getting started functional API Demo span cl
  • lodash源码分析之compact中的遍历

    小时候 xff0c 乡愁是一枚小小的邮票 xff0c 我在这头 xff0c 母亲在那头 长大后 xff0c 乡愁是一张窄窄的船票 xff0c 我在这头 xff0c 新娘在那头 后来啊 xff0c 乡愁是一方矮矮的坟墓 xff0c 我在外头
  • A-Softmax的keras实现-《SphereFace: Deep Hypersphere Embedding for Face Recognition》

    A Softmax的keras实现 参考文档 xff1a https www cnblogs com heguanyou p 7503025 html 注 xff1a 主体完成 xff0c 调试中 xff0c 先行记录 xff0c 待续 已
  • AM-Softmax的keras实现: 《Additive Margin Softmax for Face Verification》

    原答案在对输入进行归一化时有错误 xff0c 另外m应该是一个固定的超参数不需要训练 xff0c 已改正 论文地址 xff1a Additive Margin Softmax for Face Verification 和L Softmax
  • 最小跳跃次数

    1 最小跳跃次数 1 最小跳跃次数 1 1 题目描述 xff1a 1 2 解题思路1 3 实现代码 出自华为实习机试第二题 xff1a 1 1 题目描述 xff1a 先输入一个数字代表数字总数 然后依次输入几个数字 xff0c 代表当前位置
  • moby、docker-ce与docker-ee的区别

    近期研究docker相关技术 xff0c 发现官网分为moby docker ce与docker ee不同板块 xff0c ce和ee版本好理解 xff0c 但2017年开始又多出个Moby xff0c 开始有点凌乱 xff0c Googl
  • AutoRun与NoDriveTypeAutoRun键值

    Autorun inf 与注册表NoDriveTypeAutoRun键值的一些说明 二进制位数 8 7 6 5 4 3 2 1 Type 1 RAMDISK CDROM REMOTE FIXED REMOVABLE NO ROOT DIR
  • Windows下编译qt-material

    Windows下编译qml material 公司新项目里选择用 QML 来做界面 xff0c 这段时间一直在学习 QML 的语法和基础组件 xff0c 限于 QML 目前不太成熟 xff0c 没有十分丰富的控件 xff0c 加上自己水平有
  • SpringSecurity是如何实现账号密码的验证登录的

    个人理解 xff1a 1 首先在 配置类中定表单登录的URL和账号密码 2 jsp表单中的url和账号秘密要与指定的名称一致 3 创建 SecurityAdmin类 xff0c 集成User类 xff0c 因为User类只包含usernam
  • HDFS入门(三)

    五 HDFS接口 xff08 一 xff09 HDFS命令行接口 HDFS命令行接口作为了解 xff0c 在这里不再赘述 xff08 二 xff09 JAVA API接口 使用URL访问hdfs 1 xff09 怎么访问 xff1f jav
  • 怎么去掉Chrome浏览器新标签页的缩略图

    每次都很烦那八个框框 xff0c 再漂亮的主题图片都被那八个缩略图框搞糟了 xff01 对吧 xff0c 应该有同感 解决办法 xff1a chrome拓展程序里下载拓展程序 Stylish 安装好之后就在拓展程序里找到它 xff0c 打开

随机推荐

  • 上班一个月,我的几点体会

    这篇博文其实在去年就已经在CSDN发过的 后来 xff0c 某次误操作不小心删除了 xff0c 今天找出来重新发一下 我是从3月1号开始上班的 xff0c 今天3月31号 xff0c 刚好一个月结束 xff0c 在这一个月里 xff0c 我
  • NVMe CLI 命令使用

    1 下载地址 https github com linux nvme nvme cli 2 安装 unzip nvme cli master zip cd nvme cli master zip make amp amp make inst
  • 我这一年写的博文

    总结2013 xff0c 展望2014 xff0c gt gt 我的2013年终总结 在苦与乐中成长 下面是我这一年所写的博客 xff0c 主要涉及C xff0c Net Framework xff0c SQL Server xff0c S
  • 我的2013年终总结——在苦与乐中成长

    写在前面 最近正好在三亚旅游 xff0c 空闲下来时 xff0c 便开始进行年终总结 由于去年年末较忙 xff0c 便错过了2012 年的年终总结 xff0c 所以本文将会对 2012 与 2013 两年一起进行总结 说说工作 学生 到 码
  • 走过2014,2015我将继续前行

    写在前面 一转眼 xff0c 一年时光就这么溜走了 在这辞旧迎新之际 xff08 这说法是不是很官方啊 xff0c 呵呵 xff01 xff09 xff0c 我将对即将过去的2014 年进行一番总结 xff0c 并对即将来临的 2015 年
  • csr867x入门之串口AT指令协议(三)

    目录 功能简介 功能实现 功能调试 功能简介 通过封装串口AT指令 xff0c 我们可以把8670作为一个蓝牙外设 xff0c 通过串口的AT指令协议与外部mcu通讯 比如当csr8670连接到pc端 xff0c 再pc端通过串口工具发送指
  • 今天了解Linux体系结构

    上一章我们了解了Linux的一些发展历史 xff0c 那么这一章我们来深入了解一下 xff0c Linux的体系及构成 Linux采用分层设计 xff0c 分层结构 xff0c 它包括 4 个层次 每层只能与相邻的层通信 xff0c 层次间
  • Ubuntu操作系统下Python多版本的安装与切换

    安装替代Python版本 打开终端 xff0c 看下系统中默认安装了按个版本的python 运行以下命令 xff1a python version 如果使用的是Ubuntu 20 04 xff0c 则默认情况下拥有的python版本3 8
  • 51单片机LCD1602液晶屏显示字符,字符串,(有)无符号整数,十六进制数,二进制数等

    1 前言 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块 液晶显示模块具有体积小 功耗低 显示内容丰富 超薄轻巧等优点 xff0c 在嵌入式应用系统中得到越来越广泛的应用 xff0c 这讲中向大家介绍的LCD1602 液晶显示模
  • 51单片机——DS1302时钟

    目录 1 前言 1 1 实验现象 2 DS1302的介绍 2 1 DS1302的引脚定义以及应用电路 2 2 DS1302内部结构 2 21 DS1302内部特殊寄存器 2 22 时序 2 3 BCD码 3 源码 3 1 main c 3
  • 编译安装GCC12.2.0

    编译安装GCC 记录一下 xff0c 免得每次到处找 安装GCC12 2 0 xff0c 其他版本一样 源码下载地址 xff1a https ftp gnu org gnu gcc 备注 xff1a 配置若有不明白的 xff0c 多用 co
  • 安装vim

    sudo apt get install vim 确认后按y就行了 vim的三种模式 1 普通模式 当vim打开的时候就直接进入普通模式 在普通模式下可以进入命令 插入模式 2 插入模式 可以通过普通模式进入插入模式 插入模式可以编辑文本
  • jetson tx2 刷机,安装 cuda、opencv 详细教程

    jetson tx2 刷机 xff0c 安装 cuda opencv 详细教程 jetson tx2 的详细介绍和用途可见官网 xff1a Nvidia jetson tx2 接下来主要说明jetson tx2 详细刷机过程以及在过程中踩过
  • PX4 编译报错问题解决方法、PX4切换固定版本编译

    PX4 Autopilot 编译报错问题解决方法 1 make 2 没有规则可制作目标 dirlinks 停止 1 1159 Generating platforms nuttx NuttX nuttx config FAILED plat
  • ubuntu 系统狠慢 或者很卡的原因

    1 涉及内存小或者虚拟SWAP分区调整问题 可以通过 系统监视器 进行查看 在UBUNTU系统里面 xff0c 并不是你的物理内存全部耗尽之后 xff0c 系统才使用swap分区 xff01 系统的swappiness设定值 xff0c 对
  • 技巧1——怎样查看linux发行版本名称和版本号?

    假如我们加入了一家新公司 xff0c 需要为开发团队安装所需要的软件并且重启服务 首先要弄清楚它们运行在什么发行版本上以及在哪个版本的系统上 xff0c 才能正确的完成后续的工作 作为一名系统管理员 xff0c 充分了解系统信息是首要的任务
  • 种群共生模型

    种群共生模型 种群共生模型 1 1 背景 1 2 参数假设 1 3 分析 1 4 模型构建 1 5 模型求解 1 6 讨论平衡点稳定性 种群共生模型 1 1 背景 在自然界中 种族的共生现象是比较普遍的 如鳄鱼与千鸟 千鸟不但在鳄鱼身上寻找
  • opendaylight学习笔记——Flows

    Flow java中 private static final String WEB NAME 61 34 Flows 34 定义了在网页中显示时的名称 private static final String WEB ID 61 34 fl
  • NB-IoT 物理层相关

    写在前面 本文作为简单说明 xff0c 详细需具体查阅文档 1 关于 PRB 的理解 RB xff08 Resource Block xff09 xff0c 用于描述某些物理信道到资源元素的映射 xff0c 它有两个概念 xff1a VRB
  • 以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

    网络设备中肯定离开不MAC和PHY xff0c 本篇文章将详细介绍下以太网中一些常见术语与接口 MAC和PHY结构 从硬件角度来看以太网是由CPU xff0c MAC xff0c PHY三部分组成的 xff0c 如下图示意 xff1a 上图