PHY芯片快速深度理解

news2024/11/12 15:22:01

摘要:

  • 什么是phy

  • 为什么要熟悉RJ45网口

  • 网络七层协议

  • 两个模块进行通信

  • 什么是MDIO协议

  • MDIO的作用 

  • MDIO没那么重要

  • MDIO读写时序

  • 为什么说读取的phy最多32个

什么是phy

物理层芯片称为PHY、数据链路层芯片称为MAC。

    可以看到PHY的数据是RJ45网络接口(网线口)穿过了的差分信号,而PHY作用就是将差分信号转为数字信号,这块内容不用深究,制造商都设计好了。那我们干什么呢?(主要是对phy芯片进行模式选择,比如工作速率,工作模式)

为什么要熟悉RJ45网口

    上面说到针对phy芯片我们只要进行模式选择(下文海翎光电的小编会介绍使用mdio接口,通过寄存器控制)那模式选择后,如何查看是否有效呢?最简单直接的就是通过RJ45网口的指示灯查看。

   RJ45 座子上一般有两个灯,一个黄色(橙色),一个绿色,绿色亮的话表示网络连接正常,黄色闪烁的话说明当前正在进行网络通信,黄灯闪动频率快表示网速好,这两个灯由 PHY 芯片控制。

    如果不懂物理层和数据链路层可以和海翎光电的小编一起看一下网络七层协议

网络七层协议

两个模块进行通信

    下图是两个主控直接的通信,比如我们的电脑和路由器 ,但是如果没有中间的介质还能连接网络吗?答案是可以的

    如果phy芯片没有,那么可以直接通过两个mac连接进行通信,之所以需要mac 、phy、变压器的目的是为了转换数据类型适配所以的网线,但是在一些电路上,没必要加这么多东西

    比如搭载 Linux系统的arm芯片想要网络,可以直接通过mac和网卡芯片连接获取,这时候就需要通过RGMII接口或者MII接口 和 MDIO 连接网卡芯片。

(网卡芯片内置也是mac+phy,有的只有mac 层这个要看具体的手册)

什么是MDIO协议

    mido协议即SMI协议,SMI协议也是一种通信协议类似与I2C协议但是通信方式不一样。SMI包含两根信号线,一个MDC时钟线,一个MDIO双向传输的数据线,

    如图为SMI应用框图。STA设备通过MDIO接口与PHY通信。STA(StaTIon Management)为主控设备,比如MCU、MAC、ONU等。PHY为从设备。一个STA最多管理32个PHY。MDC信号由STA控制,MDIO信号根据通信方式的不同可以由STA或者PHY接管控制。如图通常MDIO会接一个电阻上拉至接口电源。

MDIO的作用 

    从上面的连接图可以看到MDIO是用来连接主设备和多个PHY设备,并且通过MDIO来传输数据。那么传输的是数据是哪些呢?主要是传输链接状态、传输速度与选择、断电、低功率休眠状态、TX/RX模式选择、自动协商控制、环回模式控制等。

MDIO没那么重要

    MDIO在上面说到的两个模块通信,我提到了 arm芯片和网卡芯片直接需要,那么这个真的有必要吗?其实没必要连接!!!

    换个话说 不连接也可以使得网络畅通,因为网络的数据传输时靠RGMII不是靠MDIO,MDIO的作用仅仅只是用来查看一些状态和功能,还有简单的控制,而这些简单的控制是完全可以有网卡芯片内置去写死,arm层只要和网卡的写的一直就可以通讯。

    但是为什么很多时候需要通过mdio来进行读写控制,这个只是在网络通讯正常后的升级优化,用来方便查看状态,就像写了个前端网页来看后台数据。

    如果mido没有读通,或者读取的数据是0xfffff,那么不一定是mdio的问题,很多时候是网卡本身没有启动!

MDIO读写时序

Preamble:32bits的前导码

Start:2bit的开始位。

OP Code:2bits的操作码,10表示读,01表示写。

PHYAD:5bits的PHY地址。

REGAD:5bits的寄存器地址,即要读或写的寄存器。

Turn Around:2bits的TA,在读命令中,MDIO在此时由MAC驱动改为PHY驱动,并等待一个时钟周期准备发送数据。在写命令中,不需要MDIO方向发生变化,则只是等待两个时钟周期准备写入数据。

Data:16bits数据,在读命令中,PHY芯片将读到的对应PHYAD的REGAD寄存器的数据写到Data中,在写命令中,MAC将要写入对应PHYAD的REGAD寄存器的值写入Data中。

Idle:空闲状态,此时MDIO无源驱动,处高阻状态,但一般用上拉电阻使其处在高电平,上拉电阻一般为1.5K。为什么说读取的phy最多32个

  因为mdio中读取的phy只提供5bit的字节即最高11111 转成十进制就是31即0-31就是32个,但这是从读取的方式判断的,而mdio读取是依照phy芯片本身地址空间就5为。

为什么说reg地址最多32个

    同样mdio中读取的reg只提供5bit的字节即最高11111 转成十进制就是31即0-31就是32个

     PHY 芯片寄存器地址空间为 5 位,地址 0-31 共 32 个寄存器, IEEE 定义了 0-15 这 16 个寄存器的功能, 16~31 这 16 个寄存器由厂商自行实现。也就是说不管你用的哪个厂家的 PHY 芯片,其中 0~15 这 16 个寄存器是一模一样的。仅靠这 16 个寄存器是完全可以驱动起 PHY 芯片的,至少能保证基本的网络数据通信。

以上内容是海翎光电的小编看了大量的参考文献和一步步的实践总结的经验,通过实践,把每一层都走一遍,把变压器去掉,把phy去掉,linux系统的网卡函数看了一遍,phy芯片的手册有看了很多。写的浅显易懂因为想帮助到大家。

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

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

相关文章

linux常见指令下

接下来我们就聊聊linux的后面十条指令。 一:echo 作用是往显示器输出内容,和printf类型,但是该指令最核心的是与之相关的一些概念 概念1.输出重定向: echo不仅可以向显示打印内容,还可以向文件输出内容,本应该输出到…

在服务器上启动springboot项目

环境搭建:要在服务器上运行SpringBoot Web项目,需要先在服务器上安装JDK(CentOS系统安装JDK参考:http://t.csdn.cn/0zYml) 第一步:创建项目 创建一个简单的springboot项目,并通过测试&#xf…

Java Web Servlet (2)23.7.8

1.7 urlPattern配置 Servlet类编写好后,要想被访问到,就需要配置其访问路径(urlPattern) 一个Servlet,可以配置多个urlPattern package com.itheima.web;import javax.servlet.ServletRequest; import javax.servlet.ServletRes…

嵌入式基础知识-流水线

提到流水线,最先想到的可能是流水线车间中的产品制造过程。 工业上的流水线,又称装配线,指每一个生产单位只专注处理某一个片段的工作,以提高工作效率及产量。 在计算机领域中,也有流水线的概念,其核心原理…

互联网医院系统定制|互联网医院在线诊疗平台

互联网医院系统对医院有以下几个方面的帮助:   提升医疗服务效率:互联网医院系统可以为医院提供在线挂号、在线问诊、远程会诊等功能,减少患者排队等待时间,提高医疗服务效率。   扩大服务范围:互联网医院系统可以…

【数据结构二叉树OJ系列】6、平衡二叉树

目录 题述: 思路: 正确代码如下: 时间复杂度分析: 现让你把代码优化时间复杂度为O(N) 思路: 题述: 给定一个二叉树,判断他是否是高度平衡的二叉树。 本题中&#xf…

HttpRunner自动化之接口关联和常用断言

接口关联 第一个test接口获取token,并提取出存储到变量中,在第二个test接口中直接调用该变量,如下图 # 接口关联 - config:name: 微信接口base_url: https://api.weixin.qq.com - test:name: 获取tokenrequest:url: /cgi-bin/tokenmethod: GETparams:g…

在vue3项目中加载Cesium立体地形信息并调整初始化角度

在vue3项目中加载Cesium立体地形信息并调整初始化角度 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 (1)在项目的vite.config.js文件中添加: impo…

Java模拟cookie登陆操作

Java模拟cookie登陆操作 在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆。那么,如何解决这个问题呢? 方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发…

【算法集训之线性表篇】Day 07

文章目录 题目基本设计思想代码实现效果 题目 一个长度为L(L>1)的升序序列S,处在第[L/2]个位置的数称为S的中位数。例如,若序列S1{11,13,15,17,19},则S1的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数,例如…

使用ida pro反编译并修改so库

快速搜索 图表视图 找到需要修改的行 Edit -> Patch program -> change byte… 复制指令 到这个网站Online ARM to HEX 点击可以切换为HEX to ARM 构造待修改的指令 修改好后复制HEX字符串 Edit -> Patch program -> Apply patches to input file

测试工程师的个人年终总结报告模板

目录 正文之前的思考: 年终总结报告 开篇语 1.  项目概述 1.1  项目情况 1.2  工作流程 1.3  个人角色 1.4  完成情况 2.  工作业绩 3.  亮点和不足 4.  未来展望 总结: 正文之前的思考: 开始编排文档之前来做一个…

FAM NHS ester,5-FAM azide,两者用于标记核苷酸的荧光试剂

一、FAM NHS ester,6-isomer,92557-81-8 理论分析: 中文名:羧基荧光素-活性酯,6-异构体,6-羧基荧光素琥珀酰亚胺酯,6-羧基荧光素-活性酯 英文名:FAM NHS ester,6-isomer,6-FAM-NHS,…

D. Survey in Class

D. Survey in Class Problem - D - Codeforces 思路:题目要求的是最大值与最小值的差值最大,那么我们能够想到,一定是两个人比较得到的最大的差值,假设a与b比较得到的最大的差值,因为如果提问了这两个区间都不包含的&…

单个电源模块带电感的直流压降仿真(二)

单个电源模块带电感的直流压降仿真(二) 接 单个电源模块带电感的直流压降仿真(一) 在右侧net manager disable all nets鼠标移动到需要仿真的电感前后两端的铜皮上,select net and enable net并且把GND也select和enable上

ceph用户认证

Cephx认证机制 ceph使用cephx协议对客户端进行身份认证 cephx用于对ceph保存的数据进行认证访问和授权,用于对访问ceph的请求进行认证和授权检测,于mon通信的请求都要经过ceph认证通过,但是也可以在mon节点关闭cephx认证,但是关…

微信小程序的目录结构及页面结构的说明

微信小程序的目录结构及页面结构的说明 1. 项目结构2.小程序的页面组成部分3.项目结构和页面结构文件的一些说明3.1. json文件3.2. wxml和wxss3.2.1. wxml3.2.2. wxss 3.2.3. 小程序中的.js文件 4. 微信小程序的宿主环境及运行机制4.1. 宿主环境4.2. 运行机制4.2.1. 小程序启动…

运营规模突破5万台,绿色慧联启动「望岳计划」!

狙击冲锋问鼎!7月7日,绿色慧联“望岳计划”在杭州正式启动。远程新能源商用车集团副总裁兼绿色慧联总经理杨东及运营平台各职能部门、区域运营中心负责人共同参加了会议。 今年绿色慧联正面临更加多变的内外部市场环境,电池原材料价格下滑和整…

华为OD机试真题 Java 实现【宜居星球改造计划】【2023 Q2 200分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 大家好,我是哪吒。 做技术,我是认真的,立志于打造最权威的华为OD机试真题专栏,帮助那些与我有同样需求的人&#xff0…

eclipse安装

下载 https://www.eclipse.org/ 安装 选择web开发 启动项目,让选择工作地址 创建java web项目 选择一下运行时 选择好tomcat服务器finish即可 创建maven项目