以太网PHY寄存器分析.docx

上传人:b****8 文档编号:11129153 上传时间:2023-02-25 格式:DOCX 页数:31 大小:300.04KB
下载 相关 举报
以太网PHY寄存器分析.docx_第1页
第1页 / 共31页
以太网PHY寄存器分析.docx_第2页
第2页 / 共31页
以太网PHY寄存器分析.docx_第3页
第3页 / 共31页
以太网PHY寄存器分析.docx_第4页
第4页 / 共31页
以太网PHY寄存器分析.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

以太网PHY寄存器分析.docx

《以太网PHY寄存器分析.docx》由会员分享,可在线阅读,更多相关《以太网PHY寄存器分析.docx(31页珍藏版)》请在冰豆网上搜索。

以太网PHY寄存器分析.docx

以太网PHY寄存器分析

以太网PHY寄存器分析

 

1、以太网PHY标准寄存器分析

PHY是IEEE802.3中定义的一个标准模块,STA(stationmanagemententity,管理实体,一般为MAC或CPU)通过SMI(SerialManageInterface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。

PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器,在此不作讨论),IEEE802.3定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义,如表1所示。

以下结合实际应用,对IEEE802.3定义的寄存器各项功能进行分析。

表1PHY管理寄存器集

Registeraddress

Registername

Basic/Extended

MIIGMII

0

Control

B

B

1

Status

B

B

2,3

PHYIdentifier

E

E

4

Auto-NegotiationAdvertisement

E

E

5

Auto-NegotiationLinkPartnerBasePageAbility

E

E

6

Auto-NegotiationExpansion

E

E

7

Auto-NegotiationNextPageTransmit

E

E

8

Auto-NegotiationLinkPartnerReceivedNextPage

E

E

9

MASTER-SLAVEControlRegister

E

E

10

MASTER-SLAVEStatusRegister

E

E

11through14

Reserved

E

E

15

ExtendedStatus

Reserved

B

16through31

VendorSpecific

E

E

1.1ControlRegister

寄存器0是PHY控制寄存器,通过ControlRegister可以对PHY的主要工作状态进行设置。

ControlRegister的每一位完成的功能见表2。

表2ControlRegister

Bit(s)

Name

Description

R/Wa

0.15

Reset

1=PHYreset

0=normaloperation

R/WSC

0.14

Loopback

1=enableloopbackmode

0=disableloopbackmode

R/W

0.13

SpeedSelection(LSB)

0.60.13

11=Reserved

10=1000Mb/s

01=100Mb/s

00=10Mb/s

R/W

0.12

Auto-NegotiationEnable

1=EnableAuto-NegotiationProcess

0=DisableAuto-NegotiationProcess

R/W

0.11

PowerDown

1=powerdown

0=normaloperation

R/W

0.10

Isolate

1=electricallyIsolatePHYfromMIIorGMII

0=normaloperation

R/W

0.9

RestartAuto-Negotiation

1=RestartAuto-NegotiationProcess

0=normaloperation

R/WSC

0.8

DuplexMode

1=FullDuplex

0=HalfDuplex

R/W

0.7

CollisionTest

1=enableCOLsignaltest

0=disableCOLsignaltest

R/W

0.6

SpeedSelection(MSB)

0.60.13

11=Reserved

10=1000Mb/s

01=100Mb/s

00=10Mb/s

R/W

0.5:

0

Reserved

Writeas0,ignoreonRead

R/W

Reset:

Bit15控制的是PHY复位功能,在该位置写入1实现对PHY的复位操作。

复位后该端口PHY的其他控制、状态寄存器将恢复到默认值,每次PHY复位应该在0.5s的时间内完成,复位过程中Bit15保持为1,复位完成之后该位应该自动清零。

一般要改变端口的工作模式(如速率、双工、流控或协商信息等)时,在设置完相应位置的寄存器之后,需要通过Reset位复位PHY来使配置生效。

Loopback:

Loopback是一个调试以及故障诊断中常用的功能,Bit14置1之后,PHY和外部MDI的连接在逻辑上将被断开,从MAC经过MII/GMII(也可能是其他的MAC/PHY接口)发送过来的数据将不会被发送到MDI上,而是在PHY内部(一般在PCS)回环到本端口的MII/GMII接收通道上,通过Loopback功能可以检查MII/GMII以及PHY接口部分是否工作正常,对于端口不通的情况可用于故障定位。

需要注意的是,很多时候PHY设置Loopback后端口可能就Linkdown了,MAC无法向该端口发帧,这时就需要通过设置端口ForceLinkup才能使用Loopback功能。

案例:

在S3760-12SFP/GT开发过程中,我们曾经出现过一个故障,其中有一片PHY(88E1145)对应的端口发送的帧出现CRC错误,当时这个问题的排查过程经历和很长的时间,最后得出的结论是RGMII的接口电平配置电阻焊接混料导致故障。

我们姑且不去考虑这个案例实际的解决过程,在这里讨论一下如何通过Loopback功能对该问题进行定位。

首先介绍一下S3760交换部分的架构,MAC芯片为98EX126,通过RGMII接口连接到PHY芯片88E1145,MAC通过PCI管理总线连接到CPU。

在这个案例中,查看88E1145的资料,其Loopback操作在PCS子层完成,两个方向的Loopback,如下图所示。

第一种模式,从MAC经过RGMII发送的帧到达PCS后被Loopback到RGMII的接收通道再送回给MAC(这种模式就是上面所描述的寄存器0Loopback位控制的Loopback模式),另一种模式,从MDI接收上来的帧到达PCS后被Loopback到MDI的发送通道,这种Loopback模式在IEEE802.3中并没有要求,但是目前常见的PHY都支持该功能。

分别做这两种Loopback操作,可以发现第一种Loopback操作之后可以在MAC上检测到CRC错误,而第二种Loopback模式,用SMB从端口砸帧再Loopback回来没有检测到CRC错误,这样我们就可以判断故障应该在PCS以上的部分,并且,两种Loopback模式下PHY的PCS都有再工作,基本上也可以排除PCS的故障。

因此可以进一步定位到故障在PHY的RGMII或者MAC上。

我们就可以去检查这些部分的相关设计来解决问题了。

要进一步更精确的定位问题,我们还可以去查询MAC芯片是否有类似的端口Loopback功能,如果有则在MAC内部也做一下Loopback观察是否有CRC;如果没有,可以将MAC和PHY的RGMII接口断开,将MAC的RGMII发送和接收通道自己连接起来,将PHY的RGMII发送和接收通道自己连接起来,分别做砸帧测试观察有没有CRC,这样就可以进一步的缩小范围。

不过这个S3760的案例有其特殊性,98EX126没有端口的Loopback功能,而MAC的RGMII发送信号直接连接到PHY,中间没有电阻,而且两者都是BGA封装,这两个实验都没办法进行。

因此故障排查中需要检查的范围就比较广一点了。

但是从中我们我们可以看出,Loopback操作在故障定位中可以起到将各个功能模块隔离定位的作用,虽然这些模块在物理上是集成在一个芯片中的。

这种分割隔离的思想在故障定位中是非常重要的。

SpeedSelection:

Bit13和Bit6两位联合实现对端口的速率控制功能,具体的对应关系祥见表2。

需要注意的是SpeedSelection只有在自动协商关闭的情况下才起作用,如果自动协商设置为Enable状态,则该设置不起作用;并且,对SpeedSelection的修改设置,往往需要复位端口才能配置生效。

因此在设置该位置的时候需要检查自动协商的设置并通过Bit15复位端口。

Auto-NegotiationEnable:

自动协商(AN)开关。

设置为1表示打开AN功能,端口的工作模式通过和连接对端进行AN来确定。

如果设置为0则AN功能关系,端口的工作模式通过ControlRegister相应位置的配置决定。

必须注意的是,对于1000BASE-T接口,自动协商必须打开。

PowerDown:

端口工作开关。

设置为1将使端口进入PowerDown模式,正常情况下PHY在PowerDown模式其MII和MDI均不会对外发送数据。

PowerDown模式一般在软件shutdown端口的时候使用,需要注意的是端口从PowerDown模式恢复,需要复位端口以保证端口可靠的连接。

Isolate:

隔离状态开关。

改位置1将导致PHY和MII接口之间处于电气隔离状态,除了MDC/MDIO接口的信号外,其他MII引脚处于高阻态。

IEEE802.3没有对Isolate时MDI接口的状态进行规范,此时MDI端可能还在正常运行。

Isolate在实际应用中并没有用到。

并且,值得注意的是,由于目前很多百兆的PHY芯片其MAC接口主流的都是SMII/S3MII,8个端口的接口是相互关联的,一个端口设置Isolate可能会影响其他端口的正常使用,因此在使用中注意不要随意更改bit10的状态。

RestartAuto-Negotiation:

重新启动自动协商开关。

Bit9置1将重新启动端口的自动协商进程,当然前提是Auto-NegotiationEnable是使能的。

一般在修改端口的自动协商能力信息之后通过Bit9置1重新启动自动协商来使端口按照新的配置建立link。

DuplexMode:

双工模式设置。

Bit8置1端口设置为全双工,置0则端设置为半双工,和SpeedSelection的设置一样,DuplexMode的设置只有在自动协商关闭的情况下才起作用,如果自动协商设置为Enable状态,则该设置不起作用,端口的双工模式根据AN结果来定。

对DuplexMode的修改配置也需要复位端口才能生效。

CollisionTest:

冲突信号(COL)测试开关。

在需要对COL信号进行测试时,可以通过Bit7置1,这时PHY将输出一个COL脉冲以供测试。

实际测试操作中也可以将端口配置为半双工状态,通过发帧冲突来测试COL信号,因此该配置实用价值不大。

1.2Statusregister

寄存器1是PHY状态寄存器,主要包含PHY的状态信息,大多数bit的值都是由芯片厂家确定的,每一个bit的功能在表3种已有详细说明。

其中指示PHY所具有的工作模式能力的寄存器不再多讲,值得注意的有以下几位。

表3Statusregister

Bit(s)

Name

Description

R/Wa

1.15

100BASE-T4

1=PHYabletoperform100BASE-T4

0=PHYnotabletoperform100BASE-T4

RO

1.14

100BASE-XFullDuplex

1=PHYabletoperformfullduplex100BASE-X

0=PHYnotabletoperformfullduplex100BASE-X

RO

1.13

100BASE-XHalfDuplex

1=PHYabletoperformhalfduplex100BASE-X

0=PHYnotabletoperformhalfduplex100BASE-X

RO

1.12

10Mb/sFullDuplex

1=PHYabletooperateat10Mb/sinfullduplexmode

0=PHYnotabletooperateat10Mb/sinfullduplexmode

RO

1.11

10Mb/sHalfDuplex

1=PHYabletooperateat10Mb/sinhalfduplexmode

0=PHYnotabletooperateat10Mb/sinhalfduplexmode

RO

1.1

100BASE-T2FullDuplex

1=PHYabletoperformfullduplex100BASE-T2

0=PHYnotabletoperformfullduplex100BASE-T2

RO

1.9

100BASE-T2HalfDuplex

1=PHYabletoperformhalfduplex100BASE-T2

0=PHYnotabletoperformhalfduplex100BASE-T2

RO

1.8

ExtendedStatus

1=ExtendedstatusinformationinRegister15

0=NoextendedstatusinformationinRegister15

RO

1.7

Reserved

ignorewhenread

RO

1.6

MFPreambleSuppression

1=PHYwillacceptmanagementframeswithpreamblesuppressed.

0=PHYwillnotacceptmanagementframeswithpreamblesuppressed.

RO

1.5

Auto-NegotiationComplete

1=Auto-Negotiationprocesscompleted

0=Auto-Negotiationprocessnotcompleted

RO

1.4

RemoteFault

1=remotefaultconditiondetected

0=noremotefaultconditiondetected

RO/LH

1.3

Auto-NegotiationAbility

1=PHYisabletoperformAuto-Negotiation

0=PHYisnotabletoperformAuto-Negotiation

RO

1.2

LinkStatus

1=linkisup

0=linkisdown

RO/LL

1.1

JabberDetect

1=jabberconditiondetected

0=nojabberconditiondetected

RO/LH

1

ExtendedCapability

1=extendedregistercapabilities

0=basicregistersetcapabilitiesonly

RO

Auto-NegotiationComplete:

AN完成状态指示位。

Bit5指示的是端口AN进程是否完成的状态位。

在ANEnable的情况下,Bit5=1表示自动协商进程已经成功结束,此时PHY的其他和Link状态相关的寄存器才是正确可靠的。

如果AN进程没有完成,则这些状态信息可能是错误的。

在调试以及异常故障处理时,可以通过该位寄存器的状态判断AN是否成功,从而进一步的检查AN相关的设置是否正确,或者芯片的AN功能是否正常等。

RemoteFault:

远端错误指示位。

Bit4=1代表连接对端(LinkPartner)出错,至于出错的具体类型以及错误检测机制在规范中并没有定义,由PHY的制造商自由发挥,一般的厂商都会在其他的寄存器(Register16-31由厂商自行定义)指示比较详细的错误类型。

在与端口相关的故障查证中,RemoteFault是一个重要的指示信息,通过互联双方的RemoteFault信息(可能要加上其他的具体错误指示),可以帮助定位故障原因。

LinkStatus:

Link状态指示位。

Bit2=1代表端口Linkup,0则代表端口Linkdown。

实际应用中一般都是通过Bit2来判断端口的状态。

而且,一般的MAC芯片也是通过轮询PHY的这个寄存器值来判断端口的Link状态的(这个过程可能有不同的名称,比如BCM叫做LinkScan,而Marvell叫做PHYPolling。

)如前所述,在ANEnable的情况下,LinkStatus的信息只有在Auto-NegotiationComplete指示已经完成的情况下才是正确可靠的,否则有可能出错。

案例:

曾经有发现过一个故障,我司S3760的SFP端口和Cisco设备互联,发现端口Link指示灯已经点亮,但是软件显示的端口状态却是Linkdown,并且端口也不能转发帧。

读取S3760的PHY寄存器,发现LinkStatus=1,而读MAC的状态寄存器,发现其Link状态位为0,软件就是据此判断端口为Linkdown的。

可以看出,故障的直接原因是MAC和PHY的Link状态不一致。

但是为什么MAC和PHY状态不一致呢?

读取Auto-NegotiationComplete状态指示寄存器,发现Auto-NegotiationComplete=0,显然自动协商没有完成。

检查互联双方的端口配置,我司S3760的配置为ANEnable,而Cisco设备AN是Disable的。

这样的配置显然自动协商不可能完成,将我司S3760的端口也配置为ANDisable的强制状态,端口即可以正常LinkUp和转发帧了。

同时据此信息向芯片制造商方面咨询,对方的答复是,PHYPolling查询PHY状态时,如果端口为ANEnable,则一定要等待Auto-NegotiationComplete=1,才认为PHY的Linkstatus有效。

这就可以解释为什么MAC和PHY的Link状态不一样了。

但是,为什么PHY的在AN尚未完成的时候Linkstatus就已经置1了呢?

原来3760的PHY有一个配置,1000BASE-XANBypass功能,PHY如果在AN过程中没有收到对方的AN信息,则可以跳过AN进程,通过检测Serdes接口上的信号来建立Link。

这本来是一个很好的特色功能,可是由于PHY通过1000BASE-XANBypass功能来建立Link之后却没有将Auto-NegotiationComplete位置1,和MAC的PHYPolling进程矛盾了,导致MAC和PHY的Link状态不一致。

(大家可以实际尝试一下,电口的自动协商同时还定义了一个ParallelDetect功能,可以让一个ANEnable的端口和一个ANDisable的端口建立Link,但是PHY通过ParallelDetect建立Link其Auto-NegotiationComplete位是置1的。

)至此,解决的办法就是关闭PHY的1000BASE-XANBypass功能,故障就解决了。

JabberDetect:

Jabber检测指示位。

IEEE802.3对Jabber的解释是“Aconditionwhereinastationtransmitsforaperiodoftimelongerthanthemaximumpermissiblepacketlength,usuallyduetoafaultcondition”。

这一位指示的是LinkPartner发送的时间超过了规定的最大长度。

值得注意的是,JabberDetect只有在10BASE-T模式下才有意义,100和1000M模式是没有定义Jabber这一功能的。

1.3PHYIdentifierRegister

寄存器2和3存放PHY芯片的型号代码,由芯片制造商自行定义,实际应用中软件通过读取这两个寄存器的内容可以识别PHY的型号和版本,这些内容都是只读寄存器,对PHY的功能没有影响,也不反映PHY的工作状态,实用价值不大。

1.4Auto-NegotiationAdvertisementRegister

寄存器4是自动协商的能力通告寄存器,在ANEnable的前提下(见寄存器0),端口根据该寄存器的相关配置将自动协商信息通过FLP在MDI上进行通告。

当AN配置为Disable状态的时候,寄存器4的配置将不起作用,端口的工作模式由控制寄存器中的配置决定。

寄存器4的详细定义对电口和光口PHY上有不同的定义,其中电口PHY的具体说明如表4A。

每个bit的功能已有详细描述,无需赘述。

表4AAuto-NegotiationAdvertisementRegister(Copper)

Bit(s)

Name

Description

R/W

4.15

NextPage

0=NextPageabilityisnotsupported/NoNPtoexchange

1=NextPagetoexchange

R/W

4.14

Reserved

Writeaszero,ignoreonread

RO

4.13

RemoteFault

0=don'ttransmitRemoteFaultInformation

1=transmitRemoteFaultInformation

R/W

4.12:

5

TechnologyAbilityField

TechnologiessupportedbylocalPHYtoAdvertise

R/W

4.4:

0

SelectorField

thetypeofmessagebeingsentbyAuto-Negotiation

R/W

Bit12:

5对应自动协商广播能力域(TechnologyAbilityField),每一位分别对应为A[7

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1