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

今天想和大家交流一下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.hqwc.cn/news/2782.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【国产复旦微FMQL45教程】-小试牛刀之LED

本教程采用 FMQL7045 FPGA开发板来完成整个试验,板卡照片如下: 具有丰富的接口资源,系统框图如下: 本教程用于完成基于Vivado的FMQL45的LED实验,目标是能够将这款开发板PL端先跑起来。 对于纯 PL 设计,我们…

计算机网络—局域网

文章目录 ARP协议以太网以太网帧结构交换机交换机的端口划分 PPP协议 MAC地址 封装在链路帧中的地址,作为每一个接口的地址。(一般是48bit大小) MAC地址是刻画到我们物理接口上的,我们的网卡一旦出厂之后就会携带一个唯一的物理地…

SAP 后台配置之FM基金管理篇

SAP FM基金管理后台配置及应用 1 二话不说先上后台配置,能跑通为先1.1 基础设置1.1.1 维护财务管理区1.1.2 分配财务管理区1.1.3 激活全局基金管理功能1.1.4 定义全局参数1.1.5 定义编号区间编号并分配1.1.6 创建更改层次变式1.1.3 激活科目分配元素1.1.4 设置允许空…

微信小程序 rich-text富文本框 怎么设置里面节点的样式

1、在JS中我们获取数据&#xff0c;在没有类名的情况下 使用正则匹配你想要添加演示的节点 res[1].data[0].f_content为rich-text里面的节点 如图 代码&#xff1a;让获取的节点中的图片的最大宽度为100%,高度为auto this.content res[1].data[0].f_content.replace(/\<…

Java泛型详解:为什么使用泛型?如何使用泛型?

Java泛型详解&#xff1a;为什么使用泛型&#xff1f;如何使用泛型&#xff1f; &#x1f498;一、为什么使用泛型&#xff1f;&#x1f498;二、如何使用泛型&#xff1f;&#x1f496;1. 泛型类的使用&#xff1a;&#x1f496;2. 泛型方法的使用&#xff1a;&#x1f496;3.…

Python高级教程:简单爬虫实践案例

学习目标 能够知道Web开发流程 能够掌握FastAPI实现访问多个指定网页 知道通过requests模块爬取图片 知道通过requests模块爬取GDP数据 能够用pyecharts实现饼图 能够知道logging日志的使用 一、基于FastAPI之Web站点开发 FastAPI是一个高性能、易于使用、快速编写API的…

java实现布隆过滤器(手写和Guava库提供的)

目录 前言 布隆过滤器的原理 插入​编辑 查询 删除 布隆过滤器优缺点 优点&#xff1a; 缺点&#xff1a; 代码实现 方式一&#xff1a; Google Guava 提供的 BloomFilter 类来实现布隆过滤器 到底经过几次哈希计算 解决缓存穿透 方式二&#xff1a;手写 前言 在学…

Springboot 核心注解和基本配置解读

目录 1. Springboot 入门与原理 1.1 Springboot 简介 1.1.1 什么是Springboot 1.1.2 Springboot 主要优点 1.2 Springboot 相关注解 1.2.1 元注解 1.2.1.1 Target 1.2.1.2 Retention 1.2.2 Configuration 1.2.3 Import 1.2.3.1 直接注入 1.2.3.2 实现 ImportSelector…

基于Java+Vue前后端分离开放式教学评价管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

关于u(x,t)=f(x)*g(t)形式证明的思考

突然想起来&#xff0c;二维高斯函数是可以拆分成两个一维高斯函数相乘的&#xff1a; 原来在学概率论的时候&#xff0c;证明过&#xff0c;这只能说高斯函数可以&#xff0c;这是一个思路。 一维波动函数应该也是这个套路。 那么还有没有其他函数可以如此&#xff0c;有如此…

burpsuite踩坑(一)

今天在使用burpsuite的时候&#xff0c;能抓到https或者http的包。 但是repeater模块无法使用&#xff0c;而且放行包之后&#xff0c;会出现提示。 搞了半天&#xff0c;以为是证书的问题&#xff0c;或者是burp汉化版的原因&#xff0c;还把汉化版的burp给删除了。 发现都…

HOT30-两两交换链表中的节点

leetcode原题链接&#xff1a;两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&a…