bcm54xx系列phy切换光口配置强制1000模式

芯片型号:BCM50220S也可是BCM54220S

适用场景:SFP光接口

遇到的问题:

        博通的光口是需要使用RDB扩展寄存器进行设置后才能设置为光口模式,但是默认设置好后的状态看似是固定速率如1000BASE-X或者100BASE-FX,此时他们的并不是强制模式,而是自协商模式依旧发送的是C码流。这会会导致对端为强制1000MFULL的模式的是I码流下,有几率导致接口无法link  up,这就会在实际商业的应用场景中会发生不稳定的情况。

千兆光口自协商过程:
1) 两端都设置为自协商模式
        双方互相发送/C/码流,如果连续接收到3个相同的/C/码且接收到的码流和本端工作方式相匹配,则返回给对方一个带有Ack应答的/C/码,对端接收到Ack信息后,认为两者可以互通,设置端口为UP状态
2) 一端设置为自协商,一端设置为强制
       自协商端发送/C/码流,强制端发送/I/码流,强制端无法给对端提供本端的协商信息,也无法给对端返回Ack应答,故自协商端DOWN。但是强制端本身可以识别/C/码,认为对端是与自己相匹配的端口,所以直接设置本端端口为UP状态
3) 两端均设置为强制模式
       双方互相发送/I/码流,一端接收到/I/码流后,认为对端是与自己相匹配的端口,直接设置本端端口为UP状态

如何解决此问题:

        通常调试PHY芯片驱动,我们会使用标准控制寄存器Fiber Control register 0x00进行设置自协商关闭,但是此寄存器如果执行了举例1000M FULL关闭自协商=0x140,如果使其马上生效同时我们还会或一个bit_15进行PHY 复位。但是如果这样执行了会导致之前我们切换的RDB  MODE_CONTROL Register  0x21  BIT0(1’b1 = Select 1000BASE-X or SGMII registers 0x0 to 0x0F)和BIT_2和BIT_1(2’b01 = RGMII to Fiber)恢复为默认值也就是copper模式。

所以使用此方式是无法设置强制1000M FULL模式。

那么如何解决:

一共需要设置俩步,分别是:

1、将Fiber Control register 0x00 设置为0x140强制1000M FULL 但是不能对其进行bit_15或进行PHY复位。

2、将RDB MISC_1000X_CONTROL_1 Register 0x236设置bit1=0关闭自协商如下图:

这俩步骤执行后就是标准的强制1000M FULL,link 不稳定的问题也会解决。

这是根据官方手册自行摸索的方法,大家如果还有更好的解决方法也可以一起交流。

        

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值