以太网PHY寄存器分析
1、以太网PHY标准寄存器分析
PHY是中定义的一个标准模块,STAstation management entity,管理实体,一般为MAC或CPU通过SMISerial Manage Interface对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的;PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器,在此不作讨论,定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义,如表1所示;以下结合实际应用,对定义的寄存器各项功能进行分析;
表1 PHY 管理寄存器集
Register address Register name
Basic/Extended MII GMII
0 Control    B    B
1 Status    B    B 2,3 PHY Identifier    E    E
4 Auto-Negotiation
Advertisement
E    E
5 Auto-Negotiation Link Partner
Base Page Ability
E    E
6 Auto-Negotiation Expansion    E    E
7 Auto-Negotiation Next Page
Transmit
E    E
8 Auto-Negotiation Link Partner
Received Next Page
negotiation autoE    E
9 MASTER-SLAVE Control
Register
E    E
10 MASTER-SLAVE Status
Register
E    E
11 through 14 Reserved    E    E
15 Extended Status Reserved    B
16 through 31 Vendor Specific    E    E Control Register
寄存器0是PHY控制寄存器,通过Control Register可以对PHY的主要工作状态进行设置;Control Register的每一位完成的功能见表2;
表2 Control Register
Bits Name Description R/Wa
Reset 1 = PHY reset
0 = normal operation
R/W
SC
Loopback 1 = enable loopback mode
0 = disable loopback mode
R/W
Speed Selection LSB 1 1 = Reserved
1 0 = 1000 Mb/s
0 1 = 100 Mb/s
0 0 = 10 Mb/s
R/W
Auto-Negotiation Enable 1 = Enable Auto-Negotiation Process
0 = Disable Auto-Negotiation Process
R/W
Power Down 1 = power down
0 = normal operation
R/W
Isolate 1 = electrically Isolate PHY from MII or
GMII
0 = normal operation
R/W
Restart Auto-Negotiation 1 = Restart Auto-Negotiation Process
0 = normal operation
R/W
SC
Duplex Mode 1 = Full Duplex
0 = Half Duplex
R/W
Collision Test 1 = enable COL signal test
0 = disable COL signal test
R/W
Speed Selection MSB 1 1 = Reserved
1 0 = 1000 Mb/s
0 1 = 100 Mb/s
0 0 = 10 Mb/s
R/W
:0 Reserved Write as 0, ignore on Read R/W Reset:Bit15控制的是PHY复位功能,在该位置写入1实现对PHY的复位
操作;复位后该端口PHY的其他控制、状态寄存器将恢复到默认值,每次PHY复
位应该在的时间内完成,复位过程中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后端口可能就Link down
了,MAC无法向该端口发帧,这时就需要通过设置端口Force Link up才能使用Loopback功能;
案例:在S3760-12SFP/GT开发过程中,我们曾经出现过一个故障,其中有一
片PHY88E1145对应的端口发送的帧出现CRC错误,当时这个问题的排查过程经
历和很长的时间,最后得出的结论是RGMII的接口电平配置电阻焊接混料导致故障;我们姑且不去考虑这个案例实际的解决过程,在这里讨论一下如何通过Loopback功能对该问题进行定位;
首先介绍一下S3760交换部分的架构,MAC芯片为98EX126,通过RGMII接口连接到PHY芯片88E1145,MAC通过PCI管理总线连接到CPU;在这个案例中,查看88E1145的资料,其Loopback操作在PCS子层完成,两个方向的Loopback,如下图所示;第一种模式,从MAC经过RGMII发送的帧到达PCS后被Loopback 到RGMII的接收通道再送回给MAC这种模式就是上面所描述的寄存器0 Loopback位控制的Loopback模式,另一种模式,从MDI接收上来的帧到达PCS后被Loopback到MDI的发送通道,这种Loopback模式在中并没有要求,但是目前常见的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操作在故障定位中可以起到将各个功能模块隔离定位的作用,虽然这些模块在物理上是集成在一个芯片中的;这种分割隔离的思想在故障定位中是非常重要的;
Speed Selection:Bit13和Bit6两位联合实现对端口的速率控制功能,具体的对应关系祥见表2;需要注意的是Speed Selection只有在自动协商关闭的情况下才起作用,如果自动协商设置为Enable状态,则该设置不起作用;并且,对Speed Selection的修改设置,往往需要复位端口才能配置生效;因此在设置该位置的时候需要检查自动协商的设置并通过Bit15复位端口;
Auto-Negotiation Enable:自动协商AN开关;设置为1表示打开AN功能,端口的工作模式通过和连接对端进行AN来确定;如果设置为0则AN功能关系,端口的工作模式通过Control Register相应位置的配置决定;必须注意的是,对于1000BASE-T接口,自动协商必须打开;
Power Down:端口工作开关;设置为1将使端口进入Power Down模式,正常情况下PHY在Power Down模式其MII和MDI均不会对外发送数据;Power Down 模式一般在软件shut down端口的时候使用,需要注意的是端口从Power Down模式恢复,需要复位端口以保证端口可靠的连接;
Isolate:隔离状态开关;改位置1将导致PHY和MII接口之间处于电气隔离状态,除了MDC/MDIO接口的信号外,其他MII引脚处于高阻态;没有对Isolate 时MDI接口的状态进行规范,此时MDI端可能还在正常运行;Isolate在实际应用中并没有用到;并且,值得注意的是,由于目前很多百兆的PHY芯片其MAC接
口主流的
都是SMII/S3MII,8个端口的接口是相互关联的,一个端口设置Isolate可能会影响其他端口的正常使用,因此在使用中注意不要随意更改bit10的状态;
Restart Auto-Negotiation :重新启动自动协商开关;Bit9置1将重新启动端口的自动协商进程,当然前提是Auto-Negotiation Enable是使能的;一般在修改端口的自动协商能力信息之后通过Bit9置1重新启动自动协商来使端口按照新的配置建立link;
Duplex Mode:双工模式设置;Bit8置1端口设置为全双工,置0则端设置为半双工,和Speed Selection的设置一样,Duplex Mode的设置只有在自动协商关闭的情况下才起作用,如果自动协商设置为Enable状态,则该设置不起作用,端口的双工模式根据AN结果来定;对Duplex Mode的修改配置也需要复位端口才能生效;
Collision Test:冲突信号COL测试开关;在需要对COL信号进行测试时,可以通过Bit7置1,这时PHY将输出一个COL脉冲以供测试;实际测试操作中也可以将端口配置为半双工状态,通过发帧冲突来测试COL信号,因此该配置实用价值不大;
Status register
寄存器1是PHY状态寄存器,主要包含PHY的状态信息,大多数bit的值都是由芯片厂家确定的,每一个bit的功能在表3种已有详细说明;其中指示PHY所具有的工作模式能力的寄存器不再多讲,值得注意的有以下几位;
表3 Status register
Bits Name Description R/Wa
100BASE-T4 1 = PHY able to perform 100BASE-T4
0 = PHY not able to perform 100BASE-T4
RO
100BASE-X Full Duplex 1 = PHY able to perform full duplex
100BASE-X
0 = PHY not able to perform full duplex
100BASE-X
RO
100BASE-X Half Duplex 1 = PHY able to perform half duplex
100BASE-X
0 = PHY not able to perform half duplex
100BASE-X
RO
10 Mb/s Full Duplex 1 = PHY able to operate at 10 Mb/s in full
duplex mode
0 = PHY not able to operate at 10 Mb/s in
full duplex mode
RO
10 Mb/s Half Duplex 1 = PHY able to operate at 10 Mb/s in half duplex mode
0 = PHY not able to operate at 10 Mb/s in
half duplex mode
RO
100BASE-T2 Full Duplex 1 = PHY able to perform full duplex
100BASE-T2
0 = PHY not able to perform full duplex
RO
100BASE-T2
100BASE-T2 Half Duplex 1 = PHY able to perform half duplex
100BASE-T2
0 = PHY not able to perform half duplex
100BASE-T2
RO
Extended Status 1 = Extended status information in Register
15
0 = No extended status information in
Register 15
RO
Reserved ignore when read RO
MF Preamble Suppression 1 = PHY will accept management frames
with preamble suppressed.
0 = PHY will not accept management frames
with preamble suppressed.
RO
Auto-Negotiation Complete 1 = Auto-Negotiation process completed
0 = Auto-Negotiation process not completed
RO
Remote Fault 1 = remote fault condition detected
0 = no remote fault condition detected
RO/
LH
Auto-Negotiation Ability 1 = PHY is able to perform Auto-Negotiation
0 = PHY is not able to perform
Auto-Negotiation
RO
Link Status 1 = link is up
0 = link is down
RO/
LL
Jabber Detect 1 = jabber condition detected
0 = no jabber condition detected
RO/
LH
1 Extended
Capability
1 = extended register capabilities
0 = basic register set capabilities only
RO
Auto-Negotiation Complete:AN完成状态指示位;Bit5指示的是端口AN进程是否完成的状态位;在AN Enable的情况下,Bit5=1表示自动协商进程已经成功结束,此时PHY的其他和Link状态相关的寄存器才是正确可靠的;如果AN进程没有完成,则这些状态信息可能是错误的;在调试以及异常故障处理时,可以通过该位寄存器的状态判断AN是否成功,从而进一步的检查AN相关的设置是否正确,或者芯片的AN功能是否正常等;
Remote Fault:远端错误指示位;Bit4=1代表连接对端Link Partner出错,至于出错的具体类型以及错误检测机制在规范中并没有定义,由PHY的制造商自由发挥,一般的厂商都会在其他的寄存器Register16-31由厂商自行定义指示比较详细的错误类型;在与端口相关的故障查证中,Remote Fault是一个重要的指示信息,通过互联双方的Remote Fault信息可能要加上其他的具体错误指示,可以帮助定位故障原因;
Link Status:Link状态指示位;Bit2=1代表端口Link up,0则代表端口Link down;实际应用中一般都是通过Bit2来判断端口的状态;而且,一般的MAC芯片也是通过轮询PHY的这个寄存器值来判断端口的Link状态的这个过程可能有不同的名称,比如BCM叫做Link Scan,而Marvell叫做PHY Polling;如前所述,在AN