PHY芯片的使用(一)之基本概念讲解(MII相关)2

news2024/10/6 12:24:14

今天想和大家交流一下MAC和PHY之间的接口MII。

MII(Media Independent Interface )是介质无关接口。MII接口定义了在MAC层和物理层之间传送数据和控制状态等信息的接口,它是10M和100M兼容的接口,经过扩展后还可以用于1000M的MAC层与物理层的接口(GMII接口)。

1、个人使用心得交流

抛出这个定义后,想和大家聊一下我当时认识这个接口的过程。

首先本人方向是嵌入式软件,像这种常用的PHY芯片,如88e1111、DP83848等在uboot和linux下都有相应的驱动支持,不用开发者去关心。而且都是用基本的网路通讯功能。一些复杂的PHY芯片如XL53XXX,有1588功能的,就需要厂家提供相关的驱动,驱动中包含了一些特殊寄存器的配置和相关api接口。

在软件工程师不关心的前提下是要保证硬件原理设计、pcb设计没问题的前提下。在实际做工程应用中,如果不是迭代产品,像新研制的板卡有较大概率出现问题。在这样的前提下,我也更深入的了解PHY和硬件相关的知识。

MAC与PHY之间用MII接口,在网上搜索MII,出来各种mii详解(mii-gmii-rgmii-rmii-smii-ssmii-tbi-rtbi-rtbi-xgmii-xaui-xlaui等)看了以后头都晕。后面看了一些其他的资料,了解了常用PHY接口,常用的就4种:MII、RMII、GMII、SGMII。

上文提到过:

内部的 MAC 外设会通过相应的接口来连接外部 PHY 芯片, 根据数据传输模式不同,大致可

以分为以下两类:

⚫ MII/RMII 接口: 支持 10Mbit/s 和 100Mbit/s 数据传输模式;

⚫ GMII/RGMII 接口:支持 10Mbit/s、 100Mbit/s 以及 1000Mbit/s 数据传输模式。

在PHY芯片手册中会讲到该芯片支持哪种接口。

下图为88e1111的手册的接口描述:

下图为DP83848的手册的接口描述:

88e1111为千兆PHY,DP83848为百兆PHY。在zynq ps侧MAC只支持RGMII,若使用emio则出来的是GMII接口。若再想换其他接口,可使用IP核转换GMII to XXXX。因此在选用PHY和硬件设计上需要注意。

网上对MII相关的资料比较全,笔者也摘录以下内容完善本文结构。

2、MII 接口

MII 全称是 Media Independent Interface,直译过来就是介质独立接口,它是 IEEE-802.3定义的以太网标准接口,MII 接口用于以太网 MAC 连接 PHY 芯片,连接示意图如下图所示:

MII 接口一共有 16 根信号线,含义如下:

TX_CLK: 发送时钟,如果网速为 100M 的话时钟频率为 25MHz,10M 网速的话时钟频率为2.5MHz,此时钟由 PHY 产生并发送给 MAC。

TX_EN: 发送使能信号。

TX_ER: 发送错误信号,高电平有效,表示 TX_ER 有效期内传输的数据无效。10Mpbs 网速下 TX_ER 不起作用。

TXD[3:0]:发送数据信号线,一共 4 根。

RXD[3:0]: 接收数据信号线,一共 4 根。

RX_CLK: 接收时钟信号,如果网速为 100M 的话时钟频率为 25MHz, 10M 网速的话时钟频率为 2.5MHz, RX_CLK 也是由 PHY 产生的。

RX_ER: 接收错误信号,高电平有效,表示 RX_ER 有效期内传输的数据无效。 10Mpbs 网速下 RX_ER 不起作用。

RX_DV: 接收数据有效,作用类似 TX_EN。

CRS: 载波侦听信号。

COL: 冲突检测信号。

MII 接口的缺点就是所需信号线太多,这还没有算 MDIO和 MDC这两根管理接口的数据线,因此 MII 接口使用已经越来越少了。

3、RMII 接口

RMII全称是 Reduced Media Independent Interface,翻译过来就是精简的介质独立接口,也就是 MII 接口的精简版本。RMII 接口只需要 7 根数据线,相比 MII 直接减少了 9 根,极大的方便了板子布线,RMII接口连接PHY芯片的示意图如下图所示:

TX_EN: 发送使能信号。

TXD[1:0]: 发送数据信号线,一共 2 根。

RXD[1:0]:接收数据信号线,一共 2 根。

CRS_DV: 相当于 MII 接口中的 RX_DV 和 CRS 这两个信号的混合。

REF_CLK: 参考时钟,由外部时钟源提供,频率为 50MHz。这里与 MII 不同, MII 的接收和发送时钟是独立分开的,而且都是由 PHY 芯片提供的。

4、GMII 接口

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

GTX_CLK: 1000M 工作模式下的发送时钟( 125MHz) 。

TX_EN: 发送使能信号。

TX_ER: 发送错误信号,高电平有效,表示 TX_ER 有效期内传输的数据无效。

TXD[7:0]:发送数据信号线,一共 8 根。

RXD[7:0]: 接收数据信号线,一共 8 根。

RX_CLK: 接收时钟信号。

RX_ER: 接收错误信号,高电平有效,表示 RX_ER 有效期内传输的数据无效。

RX_DV: 接收数据有效,作用类似 TX_EN。

CRS: 载波侦听信号。

COL: 冲突检测信号。

与 MII 接口相比, GMII 的数据宽度由 4 位变为 8 位, GMII 接口中的控制信号如 TX_ER、TX_EN、 RX_ER、 RX_DV、 CRS 和 COL 的作用同 MII 接口中的一样,发送参考时钟 GTX_CLK 和接收参考时钟 RX_CLK 的频率均为 125MHz(在 1000Mbps 工作模式下)。在这里有一点需要特别说明下,那就是发送参考时钟 GTX_CLK,它和 MII 接口中的 TX_CLK是不同的, MII 接口中的 TX_CLK 是由 PHY 芯片提供给 MAC 芯片的,而 GMII 接口中的 GTX_CLK是由 MAC 芯片提供给 PHY 芯片的, 两者方向不一样。在实际应用中,绝大多数 GMII 接口都是兼容 MII 接口的,所以,一般的 GMII 接口都有两个发送参考时钟: TX_CLK 和 GTX_CLK(两者的方向是不一样的,前面已经说过了),在用作 MII模式时,使用 TX_CLK 和 8 根数据线中的 4 根。

5、RGMII 接口

RGMII(Reduced Gigabit Media Independant Interface),精简版 GMII 接口。 将接口信号线数量从 24 根减少到 14 根(COL/CRS 端口状态指示信号,这里没有画出),时钟频率仍旧为125MHz, TX/RX 数据宽度从 8 为变为 4 位,为了保持 1000Mbps 的传输速率不变, RGMII 接口在时 钟 的 上 升 沿 和 下 降 沿 都 采 样 数 据 , 在 参 考 时 钟 的 上 升 沿 发 送 GMII 接 口 中 的TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送 GMII 接口中的TXD[7:4]/RXD[7:4]。 RGMII 同时也兼容 100Mbps 和 10Mbps 两种速率,此时参考时钟速率分别为 25MHz 和 2.5MHz。TX_EN 信号线上传送 TX_EN 和 TX_ER 两种信息,在 TX_CLK 的上升沿发送 TX_EN,下降沿发送 TX_ER;同样的, RX_DV 信号线上也传送 RX_DV 和 RX_ER 两种信息,在 RX_CLK 的上升沿发送RX_DV,下降沿发送 RX_ER。RGMII 接口定义如下所示:

如有错误请指正!下次想交流一下MDIO,希望和大家共同进步!

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

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

相关文章

【libdatachannel】Transport的设计实现

作为ice传输实现的基类 具有实际的作用。 D:\XTRANS\thunderbolt\ayame\ZHB_LIB_DATACHANNEL\src\impl\transport.cpp 最重要的是封装了对impl的调用 Transport 比较牛,抽象了传输的基础能力 发送(调用ice接口发送) send(message_ptr message);接收(通过ice收到后使用回调方…

msvcp140.dll下载,无法启动此程序,因为计算机中丢失msvcp140.dll的解决方法

msvcp140.dll是动态链接库文件,是一种不可执行的二进制程序文件,允许程序共享执行特殊任务所需要的代码和其他资源。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。 很多小伙伴在使用电脑软件的时候,有一些问题会搞不明白…

layui框架学习(27:弹出层模块_其它用法)

除了前几篇文章介绍的弹出框类型外,layui的layer弹出层模块还支持相册框和tab框,所谓相册框即点击图片或按钮后会出现一个类似相册的页面单独浏览、切换图片,而tab框是指弹出框的显示形式类似于Winform中的TabControl控件,能以选项…

如何把一个 Git 仓库的分支加入另一个无关的 Git 仓库

文章目录 笔者需要将两个无关的 Git 仓库合并,也就是把一个 Git 仓库的分支加入另一个无关的 Git 仓库。笔者琢磨了一下之后就实现了。方法如下。 笔者的运行环境: git version 2.37.0.windows.1 TortoiseGit 2.11.0.0 IntelliJ IDEA 2023.1.1 (Ultima…

vue2_markdown的内容目录生成

文章目录 ⭐前言⭐引入vue-markdown💖 全局配置💖 渲染选项💖 取出markdown的标题层级 ⭐结束 ⭐前言 大家好!我是yma16,本文分享在vue2的markdown文本内容渲染和目录生成 背景: 优化个人博客功能&#xf…

Spring MVC简介附入门案例

目录 一、SpringMVC简介 1.1 MVC模型 1.2 SpringMVC 二、SpringMVC入门案例 2.1 创建项目 2.2 引入依赖和tomcat插件 2.3 修改web.xml文件 2.4 新建springmvc.xml文件 2.5 编写控制器 2.6 配置运行方式 2.7 运行测试 三、SpringMVC执行流程 3.1 SpringMVC的组件…

【FreeRTOS】FreeRTOS动态创建任务与删除

0. 实验准备 正点原子 STM32407ZG 探索者开发板 FreeRTOS 例程模板(可以在这一篇文章找到:STM32F407 移植 FreeRTOS) 1. 动态创建任务函数 API 1.1 函数简介 动态创建任务需要使用到BaseType_t xTaskCreate函数,我们可以在 Fr…

unittest教程__TestSuite测试套件(2)

在前面一章中演示了unittest如何执行一个简单的测试,但有两个问题: 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢?一个测试文件,我…

事务底层与高可用原理

一、redo日志 在事务的实现机制上,MySQL采用的是WAL(Write-ahead logging,预写式日志)机制来实现的。 就是所有的修改都先被写入到日志中,然后再被应用到系统中。通常包含redo和undo两部分信息。 redo log称为重做日…

Spring执行流程和Bean的生命周期

1、Spring执行流程2、Bean的生命周期(重点)2.1、实例化和初始化的区别2.2、为什么先设置属性再进行初始化呢? 1、Spring执行流程 Spring执行流程(Bean执行流程):1、在启动类中遇到了ApplicationContext的时…

【微服务】在window下安装nacos以及可能遇到的问题

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

【029】C++静态成员和 this 指针详解

C静态成员和 this 指针详解 引言一、静态成员1.1、静态成员变量1.2、静态成员变量的使用示例1.3、静态成员函数1.4、单例模式设计 二、C面向对象模型2.1、成员变量和函数的存储2.2、this 指针2.3、this 指针的应用2.4、const修饰成员函数 总结 引言 💡 作者简介&…

.NET6创建Windows服务

之前的文章已经写过了创建Windows服务。 C#创建Windows服务_c# 创建windows服务_故里2130的博客-CSDN博客 不过之前使用的是.NET Framework创建的Windows服务。现在已经2023年了,其中vs2022有新的方法去创建Windows服务,本次使用.NET6创建Windows服务。…

网络层:虚拟专用网VPN和网络地址转换NAT

1.网络层:虚拟专用网VPN和网络地址转换NAT 笔记来源: 湖科大教书匠:虚拟专用网VPN和网络地址转换NAT 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 1.1 虚拟专用网VPN 专用网和公用网的特点 专用网络&#xff…

远程访问VPN配置与验证实验:构建安全的远程连接

远程访问VPN配置与验证实验:构建安全的远程连接 【实验目的】 理解远程访问 VPN的含义。掌握远程访问 VPN的含义。掌握VPN Client软件的使用。验证配置。 【实验拓扑】 实验拓扑如下图所示。 实验拓扑 设备参数表如下表所示。 设备参数表 设备 接口 IP地址 …

【软件设计】模块设计耦合的七种类型

一.什么是高内聚、低耦合? 在结构化分析与模块设计方法中,模块化是一个很重要的概念,它是将一个待开发的软件分解成为若干个小的模块,每个模块可以独立地开发、测试。使得复杂问题的“分而治之”,令程序的结构清晰、易…

ubuntu 20.04 linux6.3.8 qemu arm64 平台 制作ext4根文件系统

前言 可以参考 ubuntu 20.04 qemu linux6.0.1 制作ext4根文件系统 因为需要验证 aarch64 平台下的 glib 库,所以重新搭建了 Linux qemu arm64 的 测试环境 这一篇,开始制作 rootfs 根文件系统,让qemu arm64 平台上的 Linux 系统跑起来 开…

一个springboot项目的jenkins持续集成配置

目录 1.项目基本情况 2.jenkins的下载 1) 安装jdk 2)下载、启动和配置jenkins 3. 启动Jenkins 4. 安装Jenkins插件 5. 重启jenkins 6.jenkins工具的配置 1) jdk的路径配置 7.创建springboot项目的持续集成任务 1) 新建项目 2)代…

倒闭了

前两天在群里听到有人发消息,说是「有陪」倒闭了,然后我去看了相应的消息,看到了下面的图。 一些老的读者可能知道我之前有一段创业经历,这段创业经历就是有陪,我从恒大的时候就开始给有陪做事,那时候我一个…

stm32 滑膜观测器+PLL 锁相环 FOC 无感无刷电机控制

上一期为大家介绍了滑膜观测器正反切的应用案例,收到不少小伙伴的反馈是否有PLL的案例,大概看了一下网上的资料,讲理论的很多,能转化成源码的几乎没有。前半年工作和家里的事情都比较多,一拖再拖,终于在6月…