GE电口速率自协商问题(SGMII SERDES)

更新时间:2024-05-27 10:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

GE电口速率自协商问题

1、问题描述

在某上行扣板的调试过程中,发现上行GE电口与其它GE电口设备对接时,速率都为1000M时,电口可以正常link;但是当与速率强制为100/10M设备对接时,电口不能正确协商,端口link不上。 2、原因分析

电口使用已比较成熟,与以前使用过的单板设计架构也没有太大差异,但是为何会出现此问题呢?开始的时候,大家一致认为是软件配置将速率强制成了1000M,但是经过核对,排除了“软件配置问题”。难道是硬件问题?

首先对比一下上个版本的硬件设计,硬件连接如下图:

SerDes bcm5464s RJ45 bcm5695 底板 硬件连接图(1)

出现问题版本硬件设计,硬件连接如下图:

上行扣 bcm5650 TBI Tlk1201 SerDes RJ45 bcm5464s 底板 硬件连接图(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速率自协商的。区别如下:

SGMII和SerDes管脚是复用的,SGMII及SerDes接口示意图如下:

MAC侧 TXD RX_CLK RXD PHY侧

SerDes接口只占用RXD/TXD两根收发数据线;SGMII(Serial GMII)接口占用TXD/RXD收发数据线以及一个可选择时钟信号。如果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信号对比:

I/0 I I I I I I I O O O O O Signal GMIICLKIN GRXCLKn_0 GRXCLKn_1 GRXDn_[3:0] GRXDn_[7:4] GRXDn_8 GRXDn_9 GTXCLKn GTXD_[3:0] GTXD_[7:4] GTXDn_8 GTXDn_9 RX_CLK(2.5M) TXC(2.5M) RXD[3:0] / RX_DV RX_ER / TX[3:0] / TX_EN TX_ER MII(10M) GMII MII(100M) GMII(1000M) TBI SerDes(1000M) 125-MHZ Oscillator RX_CLK(25M) TXC(25M) RXD[3:0] / RX_DV RX_ER / TX[3:0] / TX_EN TX_ER RX_CLK(125M) TXC RXD[3:0] RXD[7:4] RX_DV RX_ER GTX_CLK(125M) TX[3:0] TX[7:4] TX_EN TX_ER RX_CLK0 RX_CLK1 RXD[3:0] RXD[7:4] RX[8] RX[9] TX_CLK TX[3:0] TX[7:4] TX[8] TX[9]

如上表所示,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 工作模式

接口名称 自协商情况 速率(M) 双工 Full、Half 备注 GMII/ RGMII 1000/100/10 GMII接口与MII接口是复用,通过改变时钟和数据位,可以支持10/100M half/full TBI/ RTBI SGMII SerDes 1000 1000/100/10 1000 Full(Half) Full、Half Full(Half ) 与SerDes接口相连,1000M/Full 一般用于Fiber模式,1000M/Full 速率1000M工作时,一般都是配置成Full工作模式;如上表所示,TBI/RTBI、SerDes接口一般工作在1000/Full模式下,大多用于Fiber模式。

2、简单列举下几个常用的MAC/PHY/SerDes支持的接口,大家可以做个简单对比: 芯片名称/接口名称 Bcm5650 Bcm5695 Bcm5461 Bcm5346 HDMP-1636 S2060 TLK1201

3、一点心得:如前面所述,同样性质的两个错误竟然在大量人员参与的原理图检视中没有发现,或许是开发及检视人员的大意,但是至少说明我们对这些接口的模棱两可的理解。本来这样的问题在系统设计时就不应该出现,但是还是出现了,说明我们对某些知识细节的掌握还欠缺和以及对知识的大意。

希望这个小小的案例能给大家一点点的启发,不要再跌在细节上。 5、CHECKLIST

× × √ × × × × × × √ × × × × × × √ √ × × × × × √ × √ √ √ × × √ √ × × × √ √ √ √ × × × √ √ √ √ √ √ √ GMII MII RGMII TBI RTBI SGMII SerDes 1、理解SerDes与SGMII、TBI与GMII的差异,SerDes、TBI接口只支持固定数据速率1000M,不支持速率的自协商,设计和审查时需要注意。

本文来源:https://www.bwwdw.com/article/p2g7.html

Top