phy芯片的那些事儿

article/2025/9/27 22:13:17

一、什么是phy

1、phy的基本作用

  1. 收到MAC过来的数据(PHY没有帧的概念,都是数据而不管什么地址数据还是CRC),进行处理*,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。
  2. 实现CSMA/CD(多点接入载波监听/冲突检测)的部分功能,可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。

处理方法:

  • 100BaseTX采用4B/5B编码(每4bit就增加1bit的检错码)
  • 10BaseTX采用曼彻斯特编码

2、phy和switch在信号上的区别

  •  PHY芯片,主要是将这些模拟信号进行解码,通过MII等接口,将数字信号传送出去。在解码的过程中,它只是做信号的转换,而不对数字信号进行任何的处理,即使一帧有问题的数据,它也会如实的转发出去。

  • switch芯片是对帧数据的内容做处理,更新MAC地址列表等等,是先有PHY后有switch。

二、一些需要注意的硬件连接

1、网络变压器(数据泵)

一颗CMOS制程的芯片工作的时候产生的信号电平总是大于0V的(这取决于芯片的制程和设计需求),但是这样的信号送到100米甚至更长的地方会有很大的直流分量的损失。而且如果外部网线直接和芯片相连的话,电磁感应(打雷)和静电,很容易造成芯片的损坏。再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致很大的电流从电势高的设备流向电势低的设备。

把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。

因此,数据泵主要有一下几点作用:

  1. 传输数据,它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到不同电平的连接网线的另外一端;
  2. 隔离网线连接的不同网络设备间的不同电平,以防止不同电压通过网线传输损坏设备;
  3. 数据泵还能使芯片端与外部隔离,抗干扰能力大大增强,而且对芯片增加了很大的保护作用,保护PHY免遭由于电气失误而引起的损坏(如雷击)。

2、phy的硬件配置方法

以88E1111为例,芯片上有6个管脚用于phy的硬件配置,如下图:

同时有一些用于显示当前连接状态的LED相关管脚,可在phy硬复位后以串行的方式发出一组由3个bit构成的编码,对应关系如下:

通过这种方式,可以通过硬件连接在phy硬复位后对phy进行配置,包括phy的地址、速率双工自协商功能、使用何种方式与mac连接、物理连接为光口还是电口、管理口的选择、是否使能光口电口自动切换等等的设置。具体内容可参考手册的Table31

其中,phy地址的配置仅能够通过硬件连接实现,无软件途径可修改,因此硬件设计时phy的地址一定要连对。

三、phy的配置

一般情况下,phy通过硬件配置即可正常使用,当存在一些特殊需求时可通过MIIM或I2C两种方式读写phy内置的寄存器,从而对phy进行配置管理。对phy进行软件配置时也可参考硬件配置的内容,这些内容涵盖了phy的主要功能。主要需要配置的是速率双工自适应、LED灯的显示方式、收发延时,其他配置可根据需求选择。以下内容均以88E1111为例。

1、LED灯的设置

phy芯片LED灯的设置可通过寄存器24更改。速率指示灯默认是一一对应的直接指示方式,可通过寄存器24[5:3]配置为组合指示方式,详见手册2.22

用户可根据需求通过管理口自行设置。 

2、速率双工自适应

88E1111 phy的速率双工自适应状态可通过硬件配置的ANEG一次性配置完全。也可通过软件写寄存器的方式进行修改。

  • 自适应使能和关闭可通过软件修改寄存器0.12实现,需要注意的是,对0.12的修改只有在软复位或重启自协商后才能生效。
  • 网口对外广播的自适应能力范围可通过寄存器4进行设置。
  • 若关闭了自适应的使能,可通过寄存器0.6,0.8,0.13三位共同设置网口的强制速率和双工。同样的,对这三位进行修改后,也需要软复位或网口power down后再恢复,方可修改生效。

需要特别注意的是,强制千兆最好通过关闭十兆百兆广播能力的方式实现,而不是关闭自协商。这是802.3协议中建议的,目的是提高适配性。

 千兆无法像十兆百兆一样强制的原因通过查找资料和测试猜测如下:

千兆协商的过程需要确定两端phy的主从关系,在关闭自协商的情况下,要求remote的主从设置与local不冲突。

3、收发延时使能 

收发延时指在接收或发送数据时,将时钟延时2ns,使数据时钟呈现中间对齐,保证数据采样的准确性。

是否需要收发延时需根据对端具体情况设置,此项设置不可通过硬件配置实现,可通过设置寄存器20的1和7位实现。

  • 当对端发出的数据为沿对齐时,则需要phy设置接收数据延时,否则不需要。
  • 当对端接收数据没有设置接收延时时,需要phy设置发送延时,否则不需要。

4、光口、电口切换

88E1111可通过检测光、电口的能量,实现光电口的切换。

  • 当光口连接,电口断开时,将建立光口连接;
  • 当电口连接,光口断开时,将建立电口连接;
  • 当光口,电口均有连接时,哪一个先建立稳定连接,则另一个自动power down,若稳定连接失效,则会自动power up。

 光口电口的自动切换功能,可通过硬件配置中的一位:DIS_FC设置;也可通过软件配置寄存器27.15 实现。

*通过查询寄存器27.13,可知当前连接为光口还是电口。 

光口,电口的切换还可设置优先项。

例如:

设置优先光口连接后:

当电口比光口优先建立了稳定的连接,而光口上随后检测到了能量,则phy会放弃建立好的电口连接4s,让光口来建立连接。

这一过程必须由软件来设置,phy不可自动完成。当电口建立连接后,若软件查询到光口的寄存器17.4有活动,可根据需求,将寄存器26.11:10设置为光口优先,当光口建立好稳定连接后,再通过软件将寄存器26.11:10设置为00,则可实现上面的例子。

寄存器26.11:10

需要注意的是:

  1. 当设置了优先项时,另一个media的能量检测会失效,若想检测另一个media,需要将优先级设为No Preferrence
  2. 光口是否活动通过Signal Detect Pins(SD±)实现,用户需要使能外部光口能量检测,可通过将寄存器26.7置为1实现。

5、直连与交叉双绞线配置

双绞线内部由8根线组成,8根线分为4对,白橙和橙色线相互缠绕组成一对、白绿和绿色、白蓝和蓝色、白棕和棕色各组成一对。双绞线的两端各使用一个RJ45水晶头固定。

双绞线用RJ45水晶头固定之后,如下图所示:

RJ45水晶头中的8个槽位按上图所示的方式进行编号,每个槽位连接双绞线的一根线。直连线上,8根线并不是按照“白橙->橙->白绿->绿->白蓝->蓝->白棕->棕”的方式排列的,正确的排列方式如下:

RJ45

的槽位

1

2

3

4

5

6

7

8

线的

颜色

白橙

白绿

白蓝

绿

白棕

交叉线的一端和直连线的线序一样,另一端则把1-2线对和3-6线对换了位置。这样,交叉线另一端的线序如下:

RJ45

的槽位

1

2

3

4

5

6

7

8

线的

颜色

白绿

绿

白橙

白蓝

白棕

直连线的线序是TIA/EIA-568A线序;而交叉线一端是TIA/EIA-568A线序,另一端则是TIA/EIA-568B线序。

早期的以太网hub和计算机可以使用直连线建立连接,这是因为hub端口和计算机网卡的端口是不一样的。计算机网卡上,1和2线用来发送信号,3和6线用来接收信号。Hub端口上,情况恰好相反,1和2线用来接收信号,而3和6线用来发送。计算机网卡端口属于MDI端口,而hub端口则属于MDI-X端口。

早期的以太网hub上,通常有2类端口,即多个连接计算机的端口和一个uplink端口。用来连接计算机的端口是MDI-X端口,而uplink端口则是MDI端口。MDI和MDI-X端口之间,需要使用直连线;而相同类型的端口之间需要使用交叉线。

IEEEStd802.3i-199010Base-T标准提出了MDI和MDI-X的概念。后来,IEEEStd802.3u-1995标准定义的100Base-T4、100Base-TX都继承了这个概念。10BASE-T和100BASE-TX以太网中,4,5,7和8线没有使用。千兆以太网之后,MDI和MDI-X的含义发生了变化,千兆以太网会用到全部8根线,每根线上都同时进行收发。

现在,绝大多数以太网设备都支持AutomaticMDI/MDI-X,但是在IEEE802.3标准的百兆以太网章节中,并没有看到关于AutomaticMDI/MDI-X的描述。IEEEStd802.3的10M和百兆以太网的章节中,对线序的交叉(crossover)进行了说明。终端设备和中继设备对接时,建议在中继设备上实现crossover。如果对接双方都实现了内部的crossover,那么就需要在双绞线上作crossover。

硬件配置时,其中一位是ENA_XC,代表了直连交叉网线的配置。

此处我们对接口配置crossover,那么“ENA_XC”这个选项就配置为“1”。这样可以实现自动协商。

软件配置,可通过寄存器16,配置成MDI、MDIX或自动模式。

6、Downshift Feature

根据协议要求,1000Mbps需要使用4个差分对进行数据传输,而10Mbps/100Mbps仅需要2个差分对即可完成。

当互相连通的两个phy均支持千兆速率,自协商后结果为千兆,若连通两者的网线是百兆网线,只有两个差分对连通,则会出现ping不通的情况。

Marvell公司推出的phy具有Downshift Feature功能,可使两个千兆phy,在千兆无法使用时协商为可用的10Mbps或100Mbps。

该功能默认处于关闭状态,需要软件配置开启,开启后可设置连接失败的尝试次数。

参考资料:

网口扫盲三-以太网芯片MAC和PHY的关系:   网口扫盲三:以太网芯片MAC和PHY的关系_愚赐的博客-CSDN博客_以太网芯片   

Marvell88E1145PHY芯片的初始化配置:        Marvell 88E1145PHY芯片的初始化配置_kunkliu的博客-CSDN博客

88E1111数据手册等


http://chatgpt.dhexx.cn/article/Okt1JnUw.shtml

相关文章

什么是PHY

什么是PHY https://www.cnblogs.com/YINBin/p/10980936.html 转载自:那些城市那些年 PHY((Physical Layer,PHY))是IEEE802.3中定义的一个标准模块,STA(station management ent…

PHY芯片快速深度理解(持续更新中……)

目录 什么是phy 为什么要熟悉RJ45网口 网络七层协议 两个模块进行通信 什么是MDIO协议 MDIO的作用 MDIO没那么重要 MDIO读写时序 为什么说读取的phy最多32个 个人感谢: 看完后建议再看一下,会有更深入的理解 深度理解 RGMII (包…

【PHY】关于学习以太网PHY的这件事情

概述: 由于近期要使用以太网PHY芯片,于是在网上查找各种资料,学习这部分的知识,这篇文章是对当前的学习做一个汇总。因为这部分的知识很多,所以只是做一个整体的概要总结,具体的知识点无法详细展开&#x…

NAL Unit解析

NAL Unit结构解析 NAL Unit包含NAL Header 和 NAL Body NAL Header: 一个字节,包括: forbidden_zero_bit: 0禁止位,1bit;nal_ref_idc:参考索引,代表当前NAL Unit重要性,2bit;nal_unit_type: N…

模组使用之常见认证,CCC认证,SRRC认证,ROHS认证,NAL认证

部分内容来自《http://onemo10086.com/#/knowledge》 CCC认证 3C认证的全称为“中国强制性产品认证”,英文名称China Compulsory Certification,目的是国家为保护消费者人身安全和国家安全、加强产品质量管理、依照法律法规实施的一种产品合格评定制度。…

h264编码笔记(nal_ref_idc)

一、nal_ref_idc定义 X264关于nal_ref_idc的枚举定义: nal_ref_idc不等于0时,规定NAL单元的内容包含一个序列参数集,或一个图像参数集,或一个参考图像条带,或一个参考图像的条带数据分割。 如果一个包含一个条带或条带…

H264裸码流 I/P/B帧对应NAL类型

1.NAL类型检测 nal类型检测非常容易,对照下表即可容易判断类型。 较常用nal类型包括:SPS(7)、PPS(8)、IDR(5)、SLICE(1)。 而nal_type嵌在码流数据的nal_header(size1Byte)中,占据据该字节的后五位bits。 nal_header…

H.264/H265的NAL解析

1、H.264的NAL解析 在有序字节流格式的H.264码流中,我们可以根据前缀起始码0x 00 00 01或0x 00 00 01获取到一个完整的NAL Unit所包含的的字节数据。H.264码流中的每一个NAL Unit的作用并不是相同的,而是根据不同的类型起不同的作用。因此将H.264的码流解…

查看264NAL信息工具

用easyice只可以查看TS包的帧类型。 google了一下,发现了这个工具HEVCBSAnalyzer https://github.com/latelee/HEVCBSAnalyzer 从git上下载下来,直接使用release文件夹下的工具,查看MP4 NAL信息,正常。

JDK1.9-final关键字

1.1 概述 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,J…

H264 NAL 单元解析

1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据…

NAL分析

1.NAL头 2.NAL类型 5 IDR图像的片 7 序列参数集 ----- 8 图像参数集 NAL类型介绍 单一NALU的RTP包类型 组合的NALU的RTP包 分片NALU的RTP包 (1) (2)FU Header ---通过FU Header将分片的数据组合

H264 NAL单元简介

目录 一、H264 NAL头部 二、H264参数集 2.1 H264 SPS 2.2 H264 PPS 三、H264 Slice 五、H264参考帧管理方法 Elecard StreamEye​​​​​​​工具​​​​​​​ 编码时,一帧图片分为若干slice,编码以slice为单位进行,即slice之间编码…

H264(NAL简介与I帧判断) 扩展H265

原帖地址 1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表…

H.264——NAL Unit结构分析

目录 NAL Unit格式NAL Headernal_unit_type NAL BodyExtended Byte String Payload RBSP和SODB**问:RBSP是不是等同于原始语法元素值本身?**SODB:String Of Data Bits 结构关系 NAL Unit格式 这一部分在h.264标准文档的7.3节。 解释部分在h264标准文档的…

h264码流及h265码流结构分析,NAL头类型分析

视频编码标准规定了编码后码流的语法语义,也就阐明了从比特流提取语法元素并进行解释的方法,也就是视频的解码过程。 1.h264码流结构解析: H.264/AVC(Advanced Video Coding) 的功能分为两层:视频编码…

H264/AVC NAL单元和解码

在264中,NAL是以NALU(NAL unit)为单元来支持编码数据在基于包交换技术网络中的传输的;它定义了符合传输层或存储介质需求的数据格式,同时提供头信息,从而提供了视频编码与外部世界的接口。网络层和传输层的…

获取NAL_UNIT的RBSP数据

从NAL UNIT中对rbsp获取的原理如图所示&#xff0c;此为NAL UNIT解析的架构图 头文件 #ifndef __NAL_UNIT_H__ #define __NAL_UNIT_H__#include <stdio.h>typedef struct Nal_Unit_Fops {int (*find_nal_unit_data)(FILE *file);int (*find_nal_unit_head)(char (*Q…

H.264——解析NAL Unit数据

目录 原理分析代码实现.c.h 效果 原理 视频编解码——NAL Unit结构分析 分析 1、首先去掉起始码得到NALU实际数据2、分离出NALU中一个字节的header 1bit禁止位、2bitNRI、5bitTYPE 3、解析剩余NALU的body部分 EBSP去除03->RBSP 代码实现 .c #include "LUX_TEST_…

H265/HEVC编码NAL的单元的介绍

一、引言 与H.264/AVC 类似&#xff0c;H265/HEVC也采用视频编码层&#xff08;Video Coding Layer&#xff0c;VCL&#xff09;和网络适配层&#xff08;Network Abstract Layer, NAL&#xff09;的双层结构&#xff0c;以适应不同网络环境和视频应用。网络适配层的主要任务是…