以太网PHY,MAC接口

news2025/1/12 12:06:18

本文主要介绍以太网的 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的单芯片整合。

可分为下列几种类型:

  • CPU集成MAC与PHY。目前来说并不多见

图片

  • CPU集成MAC,PHY采用独立芯片。比较常见

图片

  • CPU不集成MAC与PHY,MAC与PHY采用集成芯片。比较常见

图片

MAC及PHY工作在OSI七层模型的数据链路层和物理层。具体如下:

图片

什么是MAC

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

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 节有介绍,但不涉及所有的寄存器,个别寄存器需要到其它章节中看,当然,文档里面也提到该在哪里找到哪个寄存器。

什么是MII

MII(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(Reduced Media Independant Interface)

简化媒体独立接口是标准的以太网接口之一,比 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 表示数据的优先级!

什么是GMII(Gigabit Media Independant Interface)

GMII是千兆网的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的自己特有的一些功能,驱动需要做相应的修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1274675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GAN:WGAN-GP-带有梯度惩罚的WGAN

论文&#xff1a;https://arxiv.org/pdf/1704.00028.pdf 代码&#xff1a;GitHub - igul222/improved_wgan_training: Code for reproducing experiments in "Improved Training of Wasserstein GANs" 发表&#xff1a;2017 WGAN三部曲的终章-WGAN-GP 摘要 WGAN在…

YOLOv5全网独家首发改进:SENetv2,Squeeze-Excitation模块融合Dense Layer,效果秒杀SENet

💡💡💡本文自研创新改进:SENet v2,针对SENet主要优化点,提出新颖的多分支Dense Layer,并与Squeeze-Excitation网络模块高效融合,融合增强了网络捕获通道模式和全局知识的能力 推荐指数:五星 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/catego…

GPT市场将取代插件商店 openAI已经关闭plugins申请,全部集成到GPTs(Actions)来连接现实世界,可以与物理世界互动了。

Actions使用了plugins的许多核心思想&#xff0c;也增加了新的特性。 ChatGPT的"Actions"与"Plugins"是OpenAI在GPT模型中引入的两种不同的功能扩展机制。这两种机制的目的是增强模型的功能&#xff0c;使其能够处理更多样化的任务和请求。下面是对两者的比…

应用于智慧工厂的AI边缘计算盒子+AI算法软硬一体化方案

智慧工厂解决方案&#xff0c;传统工厂/生产管理&#xff0c;普遍存在运营粗放、效率低、应变能力差、安全隐患突出、资源不平衡等“行业症状”&#xff1b; 以英码产品为核心的智能化场景解决方案&#xff0c;可以从本质上根治这些“症状”&#xff0c;如企业可利用智能预测系…

RocketMQ Copilot 一款面向 Apache RocketMQ 的智能辅助运维系统

一、RocketMQ简介 ocketMQ是阿里巴巴研发的一款分布式消息中间件&#xff0c;后开源给Apache基金会&#xff0c;成为apache的顶级开源项目。它具有高性能、高可靠、高实时和分布式的特点。RocketMQ主要应用于解决应用耦合&#xff0c;消息分发&#xff0c;流量削锋等问题。 R…

七年 4 个阶段:滴滴可观测架构演进与实践

一分钟精华速览 在当前阶段&#xff0c;可观测性的建设并没有统一的执行路径。每家公司会根据自身的业务需求、运营模式和规模&#xff0c;形成一套独特的实践方案。为了应对业务规模的扩大和需求的变化&#xff0c;可观测团队必须持续优化和升级其架构&#xff0c;并始终保证…

2023年中国金融科技研究报告

第一章 行业概况 1.1 定义 金融科技&#xff08;FinTech, Financial Technology&#xff09;代表了金融和技术的交汇。这一领域虽然处于发展的初期阶段&#xff0c;但已经展现出深远的影响力。金融科技的业务模式多样&#xff0c;涵盖了从传统金融服务的数字化转型到新兴技术…

亚马逊云与生成式 AI 的融合——生成式AI的应用领域

文章目录 前言亚马逊云科技增强客户体验聊天机器人和虚拟助手亚马逊云科技 鸿翼&#xff1a;提供精准检索和问答&#xff0c;显著提升全球化售后服务体验AI 赋能的联络中心智能导购&个性化推荐智慧数字人 提升员工生成力和创造力对话式搜索亚马逊云科技 西门子&#xff1…

mongoDB非关系型数据库学习记录

一、简介 1.1Mongodb是什么 MongoDB是一个基于分布式文件存储的数据库,官方地址https://www.mongodb.com/ 1.2数据库是什么 数据库(DataBase)是按照数据结构来组织、存储和管理数据的应用程序 1.3数据库的作用 数据库的主要作用就是管理数据,对数据进行增©、删(d)、…

Node-red

Node-Red 什么是Node-redNode-red的特点 Node-red的Windows安装安装Node.js安装包下载安装包安装安装检查 安装Node-red安装Note-red运行Note-red 什么是Node-red Node-RED 是一种编程工具&#xff0c;用于以新颖有趣的方式将硬件设备、API 和在线服务连接在一起。 Node-RED 是…

【【Micro Blaze按键中断实验】】

Micro Blaze按键中断实验 中断是一种当满足要求的突发事件发生时通知处理器进行处理的信号。中断可以由硬件处理单元和外 部设备产生&#xff0c;也可以由软件本身产生。对硬件来说&#xff0c;中断信号是一个由某个处理单元产生的异步信号&#xff0c;用 来引起处理器的注意。…

如何利用 Snapchat 制定数字营销战略

近年来&#xff0c;Snapchat已成为数字营销领域的重要参与者。Snapchat 已经发展成为一种复杂的营销工具&#xff0c;被各种公司用来与年轻受众互动&#xff0c;此前它最初被认为是一个专门供青少年发布快速、转瞬即逝内容的平台。Snapchat 上的日活跃用户数量超过 2.8 亿&…

CMD命令切换至D盘

1.使用快捷键winr进入如下所示界面&#xff1a; 2.在框内输入CMD 后点击确定&#xff0c;即可进入如下界面&#xff1b; 3.输入d: 后按下enter即可转换成功&#xff1b; 补充一些CMD命令&#xff1a; 1. appwiz.cpl&#xff1a;程序和功能 2. calc&#xff1a;启动计算器 3.…

分布式仿真SNN的思考(二)

经过漫长的思考&#xff0c;我依然无法为昨天的第二个问题找到合适的解决方法。然后今天依然对整体的放着进行思考&#xff0c;找出规律再去写代码。考虑SNN网络&#xff1a; 那么他的邻接表gabal_adj: 0 1 2 1 3 2 1 3 3 4 5 4 6 5 2 6 5 3 假设有两…

SSL证书为什么要收费?

SSL证书之所以需要收费&#xff0c;主要涉及以下几个方面的原因&#xff1a; 验证过程成本 SSL证书颁发机构&#xff08;CA&#xff0c;Certificate Authority&#xff09;必须执行验证过程&#xff0c;以确保证书请求者的身份和域名所有权。这些验证程序需要时间和资源&…

PyQt6 QCommandLinkButton命令链接按钮控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计32条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

IO延迟引起的虚拟机故障排查

vmware 虚拟机连上之后总感觉非常卡&#xff0c;查看CPU 内存资源使用率是正常的。 message 日志有cpu卡住的报错 NMI watchdog: BUG: soft lockup - CPU#8 stuck for 23s! [container-31451:45878]下面分析是什么导致的服务器cpu卡住。 1、打开prometheus&#xff0c;观察服务…

IP地理定位技术的服务内容详解

IP地理定位技术是一种通过IP地址确定设备或用户地理位置的技术&#xff0c;广泛应用于广告定向、网络安全、位置服务等领域。本文将深入探讨IP地理定位技术的服务内容&#xff0c;解析其在不同场景中提供的多种服务。 1. 准确的地理位置信息提供&#xff1a; IP地理定位技术的…

从自动化、数字化到智能化,鸿蒙与制造业的双向奔赴

终端万物互联&#xff0c;商业竞争瞬息万变&#xff0c;制造企业面临着数字化转型与产品智能化升级的双重考验。鸿蒙操作系统以统一操作系统方案&#xff0c;可以为制造企业解决设备生态碎片化以及跨终端对接问题&#xff0c;提供安全性、流畅度、多屏协同等功能&#xff0c;实…

2023年【安全员-B证】最新解析及安全员-B证免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-B证最新解析是安全生产模拟考试一点通生成的&#xff0c;安全员-B证证模拟考试题库是根据安全员-B证最新版教材汇编出安全员-B证仿真模拟考试。2023年【安全员-B证】最新解析及安全员-B证免费试题 1、【多选题…