第一范文网 - 专业文章范例文档资料分享平台

PHY以太网寄存器解析

来源:用户分享 时间:2025/6/1 0:22:43 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

器(Receive Equalization Control)(如BCM56700芯片),这两个配置有什么区别?分别起到了什么作用?

2.4自动协商降格

由于1000BASE-T连接对UTP线缆的要求是比较苛刻的,而100M连接对线缆的要求就相对宽松,因此目前很多千兆电口的PHY芯片(BCM和Marvell都有,典型代表BCM5488S和88E1240,不过BCM5488S这个功能名叫Ethernet@WireSpeed mode。)提供了一个自动协商降格(Downshift)机制,就是在AN阶段如果协商双方都支持1000BASE-T,但是协商完成后却不能建立1000BASE-T Link,PHY经过一定次数的尝试之后将自动降格到100M协商来建立Link。这本来是个挺好用的功能,但是由于不是IEEE802.3的标准,因此芯片在实现上多少有些不够严谨。而且在实际应用中如果一个千兆口无端被协商成了100M,也容易对客户造成误解。因此该功能最好不要打开(对应的寄存器Downshift Enable位置0)。

案例:还是S5750-48GT/4SFP,BCM5488S,调试中发现,用20厘米短线将端口互联可以正常Link,不过调试中偶然发现将网线频繁的插拔几次,最后接上以后发现端口居然Link状态为100M,当时百思不得其解。于是去测试端口的FLP信号,发现正常时候和故障时候的FLP有差异如波形图所示。很显然PHY的自动协商发送信息自己没有通告1000BASE-T的能力,自然不能Link到千兆。

正常时的FLP, 16位信息为1000,0111,1010,0001。小端在前即为0x85E1。NEXT PAGE=1

16

搜索更多关于: PHY以太网寄存器解析 的文档
PHY以太网寄存器解析.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5kdee4lk4z553962zwrr_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top