9.15:13 Test mode bits Transmitter test mode operations
1=Enable MASTER-SLAVE Manual
MASTER-SLA
configuration value
9.12 VE Manual
0=Disable MASTER-SLAVE Manual
Config Enable
configuration value Default bit value is 0. 1=Configure PHY as MASTER during
MASTER-SLA
MASTER-SLAVE negotiation
9.11 VE Config
0=Configure PHY as SLAVE during
Value
MASTER-SLAVE negotiation 9.10 Port type
R/W R/W
R/W
Indicate the preference to oper-ate as MASTER (multiport device) or as SLAVE (sin-gle-port R/W device) if the bit 9.12, is not set.
1 = Advertise PHY is 1000BASE-T full duplex capable.
R/W
0 = Advertise PHY is not 1000BASE-T full duplex capable.
1 = Advertise PHY is 1000BASE-T half duplex capable.
R/W
0 = Advertise PHY is not 1000BASE-T half duplex capable.
Write as 0, ignore on read. R/W
9.9
1000BASE-T
Full Duplex
9.8
1000BASE-T Half Duplex
9.7:0 Reserved
Test mode bits:测试模式控制器。默认配置为000,代表PHY处于正常工作模式。写入其他数值则PHY进入Test模式,在不同的Test模式下PHY在MDI上发送不同类型的信号,以供我们对PHY的发送信号进行评估测试。关于测试模式的详细描述见IEEE802.3 Clause 40.6.1.1.2。
MASTER-SLAVE Manual Config Enable:MASTER-SLAVE强制配置使能位。1000BASE-T运行模式下,互连双方的工作模式必须是一端Master另一端Slave,一般情况下在AN进程中互联双方会自动协商出一端Master另一端Slave。强制的配置则在AN的时候不对MASTER-SLAVE信息进行协商,PHY根据强制的MASTER-SLAVE配置进行工作。这样带来的问题是如果互联双方的配置一样(都是MASTER或者SLAVE)则不能Link up,或者Link up之后也不能正常进行数据收发操作。因此实际应用中最好不要使用强制配置。关于MASTER和SLAVE模式的差异,详见IEEE802.3 Clause 40的相关描述。
MASTER-SLAVE Config Value:MASTER-SLAVE强制配置信息位,在bit11=1的情况下,bit12=1则PHY只能工作于Master模式,bit12=0则PHY只能工作于SLAVE模式。
Port type:端口模式控制位。Bit10控制端口在AN进程中的MASTER-SLAVE优先级,1代表MASTER优先,1代表SLAVE优先。Bit10和bit11的区别是,bit11的配置在强制情况下生效,PHY只能工做与bit11指定的工作模式,而bit10的配置在非强制配置情况下生效,仅仅控制PHY在AN时候的优先级,偏向于Maser或者Slave,但是最终的工作模式看协商的结果,不一定和优先级配置的结果一致。
11
1000BASE-T Full Duplex/ Half Duplex:1000BASE-T自动协商配置信息。在1.4节中曾经说明,寄存器4的自动协商通告信息寄存器没有关于1000BASE-T的信息,1000BASE-T的自动协商通告信息由这两位进行配置,分别对应全双工和半双工两种工作模式。需要注意的是,1000BASE-T工作模式的自动协商是强制的,也就是要想端口1000BASE-T模式工作正常,自动协商是必须Enable的。否则端口可能出现异常。
思考:一个千兆端口,其寄存器0读到的值为0x0140,请问该配置是正确的还是错误的?为什么?
1.9 MASTER-SLAVE Status Register
寄存器10是1000BASE-T模式的状态寄存器,指示PHY及其Linkpartner的状态信息。详细的状态描述见表7,表格中各个状态位的具体含义说明的相当清楚了,无需赘述。需要注意的是,关于Linkpartner的信息是通过自动协商完成的,而1000BASE-T的协商信息是通过Next Page交互的,因此只有在寄存器6中确认Next Page已经收到,寄存器10的Linkpartner信息才是有效的。否则有可能是错误信息。
表7 MASTER-SLAVE Status Register
Bit Name Description Type
Configuration fault, as well as the criteria
MASTER-SLAVE
10.15 and method of fault detection, is PHY RO/LH/SC
configuration fault
specific.
1 = Local PHY configuration resolved to
MASTER-SLAVE
MASTER
10.14 configuration RO
0 = Local PHY configuration resolved to
resolution
SLAVE
Local Receiver 1 = Local Receiver OK
10.13 RO
Status 0 = Local Receiver not OK Remote Receiver 1 = Remote Receiver OK
10.12 RO
Status 0 = Remote Receiver not OK
1 = Link Partner is capable of 1000BASE-T full duplex
10.11 LP 1000T FD RO
0 = Link Partner is not capable of 1000BASE-T full duplex
1 = Link Partner is capable of 1000BASE-T half duplex
10.10 LP 1000T HD RO
0 = Link Partner is not capable of 1000BASE-T half duplex
10.9:8 Reserved Reserved RO
Bits 10.7:0 indicate the Idle Error count,
10.7:0 Idle Error Count RO/SC
where 10.7 is the most significant bit.
Local/ Remote Receiver Status:互连双方的PHY收发器状态信息。在
12
1000BASE-T互联问题的故障诊断中,这是一个比较重要的定位信息,通过这个指示位,可以分别察看本地PHY和对端的PHY收发器是否正常,从而判断出问题出在哪一方身上。
Idle Error Count:Idle错误计数器。1000BASE-T Link up之后,其MDI信号不会有空闲状态。在没有数据帧发送的时候PHY会发送Idle信号。理论上说Idle信号的传输和数据信号的传输是一样的,如果Idle出错则数据往往也会出错,导致收发数据帧中出现CRC。而在出现CRC的时候我们可以通过Idle计数器是否有错来初步判断出错的原因是,如果Idle也有错误,则说明原因可能与MDI相关,如果Idle没有错误,则原因可能在PCS以上的部分,或者是MAC的问题(当然这个判断不是绝对的)。不过需要注意的是,这个计数器是相当“脆弱”的,插拔网线都有可能导致Idle错误,因此在使用该计数器进行判断之前要先保证连接稳定,事先读一次寄存器10让PHY把计数器自动清零。
1.10 Extended Status Register
寄存器15是由PHY厂商在PHY中写入的指示PHY功能的状态寄存器,标明PHY是否具有1000BASE-X或者1000BASE-T的能力,实际应用和调试中实用价值不大。
2、PHY扩展寄存器分析
除了IEEE802.3定义的Register0-15外,Register16-31由PHY制造商自行定义,还有制造商通过分页存储技术扩展的更多寄存器空间,在这些寄存器中制造商定义了很多PHY的功能的控制以及状态指示信息,这些信息对我们在PHY的应用以及故障诊断中有时候可以起到决定性的作用,但是由于这写寄存器不是IEEE802.3标准定义的,因此寄存器的地址以及功能名称在不同厂家的资料中有很大的差异,甚至在同一厂家的不用芯片中也不尽相同,因此下面的讨论只能就某一类的功能应用或者状态指示进行说明,但是其详细的名称和寄存器的地址要结合具体芯片具体分析,这里不能给出一个确切的答案。
目前主流的PHY都通过分页技术对PHY寄存器空间进行扩展,提供更多的寄存器空间来控制PHY更多的功能行为和提供更多的PHY状态指示信息。下
13
面针对我司惯常使用的BCM和Marvell的PHY寄存器分页存储技术进行简单描述,至于分页扩展出来的寄存器空间其具体作用千变万化,在此不作详细讨论。
BCM的PHY绝大多数的寄存器地址空间都是单页地址,通过分页扩展的寄存器集中在0x18和0x1C两个地址上,0x18和0x1C这两个寄存器专门定义了几个bit作为页地址(Shadow Value),其他的bit则是功能位,在不同的Shadow Value这些功能位将代表不同的功能。对0x18和0x1C的读写操作需要先修改Shadow Value,然后才能访问到正确的寄存器空间。以下以以BCM5488S为例,分别说明寄存器0x18和0x1C的访问方法。
寄存器0x18寄存器的bit2:0定义为Shadow Value,在需要读寄存器0x18的某个Shadow时,先要做一个写操作来切换Shadow,这个写操作必须指定bit15=0,bit14:12等于需要访问的Shadow Value,bit2:0=111,其它bit忽略,这时候Shadow切换成功;然后再对寄存器0x18进行读操作即可读到对应Shadow的寄存器值。在进行写操作的时候,则可以直接将bit15:3等于需要写入的数据,bit2:0等于需要写入的Shadow Value即可完成需要的写操作(对Shadow 111的寄存器写操作有例外要求就是bit15=1)。
寄存器0x1C的bit14:10定义为Shadow Value,bit15定义为写使能位。在需要读寄存器0x1C的某个Shadow时,先要做一个写操作来切换Shadow,这个写操作必须指定bit15=0,bit14:10等于需要访问的Shadow Value,其他bit忽略,即可切换Shadow成功,然后再对寄存器0x1C进行读操作即可读到对应Shadow的寄存器值。而如果需要写某个Shadow寄存器,则指定bit15=1,bit14:10等于需要写的Shadow Value,其他bit也置需要写的值,写入寄存器0x1C即可完成。
Marvell的分页方式和BCM有很大的不同,Marvell一般指定寄存器0x16(寄存器0x0-0x1c的页地址)和寄存器0x1D(寄存器0x1E和0x1F的页地址)作为页寄存器,几乎针对每个寄存器都有分页空间,因此在访问每个寄存器之前都必须弄清楚该寄存器的页地址,需要将页地址写入页寄存器中,然后再访问对应地址的寄存器即可。
注意:值得注意的是,软件的定期Linkscan操作常常会“暗中”修改Shadow Value,因此在实际操作中如果发现切换Shadow Value不成功,要关闭Linkscan再尝试一下。在端口异常问题调试的时候,我们经常通过寄存器比较来查找问题的线索,然而正常的软件读命令只会读取默认Shadow的寄存器值,而很多隐藏在其他Shadow中的信息经常被我们忽略了,这个小小的忽略有时候会让你的调试查证工作走很大的弯路,切记!
2.1 工作模式控制器
现在的PHY芯片对外接口形式越来越丰富,在MII端可能有GMII/RGMII/SGMII等,在MDI端则可能有电口、光口等;这些不同的接口使得PHY可以支持各种不同的工作模式。但是在具体的应用中环境,PHY只有设置为设计需要的工作模式才能够正常工作。因此,当遭遇端口不能Link之类的问题的时候,如果外围的电源时钟复位没有检查出什么异常的话,查看一下工作模式配置有没有正确,这是PHY能够正常工作的一个必要条件。
14
2.2端口驱动模式
这是一个在1000BASE-T模式下需要关心的问题,1000BASE-T需要在Cat5 UTP上传输1000Mbbs的数据,其信道编码采用了PAM-5编码格式,MDI上的信号为5阶电平格式,而其信号幅度和100M模式下一样是+1V,相应的其噪声容限就降低了,尤其在在百米长线连接的时候容易出现Link不稳定、CRC错误等问题。1000BASE-T PHY的MDI信号一般有Class A和Class B两种驱动模式,Class A的驱动能力比Class B要强,因此在百米长线连接时候会表现出更好的性能。但是由于Class A的功耗比Class B要大,因此PHY的默认配置一般都是Class B模式。1000BASE-T端口如果短线连接ok而长线连接有问题的时候可以尝试调整其端口驱动模式为Class A看看性能是否有改善。需要注意的是,有些PHY的这个控制位是隐藏的,在DS中可能差不到对应的配置位,因此就需要仔细阅读勘误表等资料或者向制造商咨询,以获得相应的配置方法。
案例:S5750-48GT/4SFP农行生产所使用的PULSE2×6RJ-45,长线大约只能支持到80米。S5750-48GT/4SFP使用的是BCM5488 PHY,后换到Marvel的PHY88E1145上故障依旧。当时由此判断是PULSE2×6RJ-45品质变异,于是更换成Bel的三合一,生产没多久又出同样的长线问题!看来并不是简单的更换部品就能了事。
在88E1145上做实验的是后注意到一个现象,出长线故障的88E1145端口配置一下Super-link命令,马上就可以解决问题。这个命令的具体操作就是将88E1145的端口驱动模式由Class B改为Class A(以前88E1145也有出过长线故障问题,这样可以解决)。可惜察看BCM5488S的数据手册并没看到关于Class B和Class A的描述,向BCM方面咨询,他们给了一个勘误表,根据说明修改了一下寄存器,问题也解决了。这个寄存器是BCM的保留寄存器,BCM的解释也是修改端口驱动模式的。
2.3 预加重配置
在高速的接口信号传输的时候,由于集肤效应以及电磁辐射的影响,信号的各个分量受到不同程度的衰减(一般是越高频的分量受到的衰减越大),信号经过传输线到达接收端的波形和输出端输出的信号波形并不是“相似的”,因此在发送端需要预先对信号的高频分量进行加重,特别是在万兆口应用中,需要通过接插件或背板传输的XAUI/HIGIGA等接口一般都需要对芯片的发送预加重(pre-emphasis)的调整,根据不同的应用环境进行不同的预加重配置,使得接收端获得比较良好的接收眼图。除了PHY芯片,提供XAUI/HIGIGA接口的MAC芯片也有对应的内置PHY,每个端口一般都有对应的预加重配置寄存器,在调试中需要根据眼图的测试结果进行配置。
案例:福建工程学院两台S8606通过万兆线路互联,Ping对端存在约1%的丢包,更换万兆板、线卡槽位无法解决,CLI上显示接口不存在CRC错误。针对这个问题,派黄赞到现场分析,通过分析端口的报文计数器,分析应该是在CM板和线卡之间发生了丢包,在进一步的检查万兆口的配置,发现BCM5676的HG端口发送信号预加重没有按照芯片要求进行配置,导致CM板和线卡之间传输出错。修正预加重配置后问题解决。需要注意的是,BCM5676是一个MAC芯片,提供4个XAUI/HIGIGA端口。但是这些端口都有内置的PHY单元,需要进行正确的配置来确保信号的可靠连接。
思考:有些芯片除了发送预加重(pre-emphasis)的配置外,还有端口的接收均衡控制
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库PHY以太网寄存器解析(3)在线全文阅读。
相关推荐: