GE电口速率自协商问题
1、问题描述
在某上行扣板的调试过程中,发现上行GE电口与其它GE电口设备对接时,速率都为1000M时,电口可以正常link;但是当与速率强制为100/10M设备对接时,电口不能正确协商,端口link不上。
2、原因分析
电口使用已比较成熟,与以前使用过的单板设计架构也没有太大差异,但是为何会出现此问题呢?开始的时候,大家一致认为是软件配置将速率强制成了1000M,但是经过核对,排除了“软件配置问题”。
难道是硬件问题?
首先对比一下上个版本的硬件设计,硬件连接如下图:
硬件连接图(1)
出现问题版本硬件设计,硬件连接如下图:
硬件连接图(2)
上面的这些接口,都是大家比较熟悉的,硬件设计为了兼容前一版本的上行扣板,在底板上增加了SerDes芯片,使底板出SerDes接口上行。
考虑降成本因素,采用了价格较低
TLK1201芯片。
分别分析TLK1201的对外接口。
首先分析SerDes接口,SerDes接口是大家所较熟悉的,“SerDes”接口自协商大家看来是没有任何问题,但是学习了一下“SerDes”接口,却发现和我们平时的理解有些差异。
查阅bcm5464芯片资料,描述如下:
SerDes: 1000 Mbps operation。
The SerDes interface shares the same differential data pin as the SGMII interface. The BCM5464S can act as a 1-GHz。
media converter by both supporting SerDes fiber and copper line interfaces simultaneously.
很显然SerDes接口仅仅具备1000Mbps数据收发功能,不支持速率的自适应,那么上一版本我们认为的“SerDes”接口是如何进行速率协商的呢?结果发现是我们没有正确的区分
速率自协商的。
区别如下:
SerDes和SGMII,SGMII接口才是支持10/100/1000M
收发数据线以及一个可选择时钟信号。
如果MAC和PHY芯片都带时钟,则可以不需要单独
的时钟信号,只需一对收发差分信号即可。
Bcm5695支持SerDes和SGMII,bcm5464s芯片具有从接收数据中恢复时钟的能力,故SGMII接口模式时,不需要单独的接收时钟。
这样从外部接口看,不管SGMII还SerDes都
是“SerDes”接口,所以实际应用中很容易忽略他们之间的差异,而很容易理解为外部
连接对了,什么都OK。
TLK1201芯片是支持SerDes接口,并且有时钟恢复能力,但是与之连接的是一款PHY (bcm5464s)芯片,双方都不能提供时钟源,故不支持SGMII接口,只能配置成SerDes
模式,所以速率只支持1000M。
问题到此似乎也完全找到了,但是再认真看看另一侧的TBI接口,我们发现也发生了
同样的错误。
查阅bcm5650芯片资料,描述如下:
The BCM5650/BCM5651 interfaces to external physical media interface devices using GMII/TBI interface. GMII mode allows the GE port to interface to external PHYs supporting the GMII specification for 10/100/1000 Mbps operation.
TBI mode allows the GE port to directly connect to external SerDes for 1000BASE-X operation.
如上所述,TBI接口同样仅仅具备1000Mbps数据收发功能,不支持速率的自适应。
而
它同样很容易与另一个与它复用管脚的接口弄混淆——GMII。
GMII与TBI信号对比:
如上表所示,GMII与TBI管脚完全兼容,通过模式选择可以选择合适的模式;但它们两者之中只有GMII才支持10/100/1000M速率。
而TLK1201芯片同样仅仅支持TBI模式,而不能配置为GMII模式,故最终速率只能支持1000M。
众所周知,自协商中的仲裁机制就是在自协商完后,通过优先级解决方案使自协商的两端获得最大最合适的能力配置。
当我们的设备与非1000M速率电口对接时,速率协商结果无效,即端口速率不能适应到协商的结果,从而端口link不上。
3、结论和解决方法
如上面原因分析中所述,SerDes和TBI接口仅仅支持数据速率1000M,如果规格需要
速率自协商,就只能通过修改硬件才能解决。
4、经验总结
1、首先简单列举下平时常见的以太网GE接口自协商情况,以使用最多的Broadcom芯片为代表:
注:Gigabit(1000 Mbps)只配置成Full-duplex 工作模式
速率1000M工作时,一般都是配置成Full工作模式;如上表所示,TBI/RTBI、SerDes接口一般工作在1000/Full模式下,大多用于Fiber模式。
2、简单列举下几个常用的MAC/PHY/SerDes支持的接口,大家可以做个简单对比:
3、一点心得:如前面所述,同样性质的两个错误竟然在大量人员参与的原理图检视中没有发现,或许是开发及检视人员的大意,但是至少说明我们对这些接口的模棱两可的理解。
本来这样的问题在系统设计时就不应该出现,但是还是出现了,说明我们对某些知识细节的掌握还欠缺和以及对知识的大意。
希望这个小小的案例能给大家一点点的启发,不要再跌在细节上。
5、CHECKLIST
1、理解SerDes与SGMII、TBI与GMII的差异,SerDes、TBI接口只支持固定数据速率1000M,不支持速率的自协商,设计和审查时需要注意。