以太网PHY寄存器分析
1、以太网PHY标准寄存器分析
PHY是IEEE802.3中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC或CPU)通过SMI(Serial Manage Interface)对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。PHY寄存器的地址空间为5位,从0到31最多可以定义32个寄存器(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器,在此不作讨论),IEEE802.3定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义,如表1所示。以下结合实际应用,对IEEE802.3定义的寄存器各项功能进行分析。
表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 Advertiment | E | E |
5 | Auto-Negotiation Link Partner Ba Page Ability | E | E |
6 | Auto-Negotiation Expansion | E | E |
7 | Auto-Negotiation Next Page Transmit | E | E |
tweet8 | Auto-Negotiation Link Partner Received Next Page | E | E |
9 | MASTER-SLAVE Control Register | E | E |
10 | MASTER-SLAVE Status Register | E | E |
11 through 14 | Rerved | E | E |
15 | Extended Status | Rerved | B |
16 through 31 | Vendor Specific 声泪俱下的俱是什么意思 | E | E |
| | | |
1.1 Control Register
寄存器0是PHY控制寄存器,通过Control Register可以对PHY的主要工作状态进行设置。Control Register的每一位完成的功能见表2。
表2 Control Register |
Bit(s) | Name | Description | R/Wa |
0.15 | Ret | 1 = PHY ret 0 = normal operation | 挤压英文R/W SC |
0.14 | Loopback | 1 = enable loopback mode 0 = disable loopback mode | R/W |
0.13 | Speed Selection (LSB) | 2013英语六级真题0.6 0.13 1 1 = Rerved 1 0 = 1000 Mb/s 0 1 = 100 Mb/s 0 0 = 10 Mb/s | R/W |
0.12 | Auto-Negotiation Enable | 1 = Enable Auto-Negotiation Process 0 = Disable Auto-Negotiation Process | R/W |
0.11 | Power Down | 欧美影片 1 = power down 0 = normal operation | northward R/W |
0.10 | Isolate | 1 = electrically Isolate PHY from MII or GMII 0 = normal operation | R/W |
加州大学 0.9 | Restart Auto-Negotiation | 后来英文版歌词 1 = Restart Auto-Negotiation Process 0 = normal operation | R/W SC |
0.8 | Duplex Mode | exposition1 = Full Duplex 0 = Half Duplex | R/W |
0.7 | Collision Test | 1 = enable COL signal test 0 = disable COL signal test | R/W |
0.6 | Speed Selection (MSB) | 0.6 0.13 1 1 = Rerved 1 0 = 1000 Mb/s 0 1 = 100 Mb/s 0 0 = 10 Mb/s | R/W |
0.5:0 | Rerved | Write as 0, ignore on Read | R/W |
| | | |
Ret:Bit15控制的是PHY复位功能,在该位置写入1实现对PHY的复位操作。复位后该端口PHY的其他控制、状态寄存器将恢复到默认值,每次PHY复位应该在0.5s的时间内完成,复位过程中Bit15保持为1,复位完成之后该位应该自动清零。一般要改变端口的工作模式(如速率、双工、流控或协商信息等)时,在设置完相应位置的寄存器之后,需要通过Ret位复位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开发过程中,我们曾经出现过一个故障,其中有一片PHY(88E1145)对应的端口发送的帧出现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模式在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操作在故障定位中可以起到将各个功能模块隔离定位的作用,虽然这些模块在物理上是集成在一个芯片中的。这种分割隔离的思想在故障定位中是非常重要的。
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模式恢复,需要复位端口以保证端口可靠的连接。