前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >以太网自协商--1000BASE-X自协商(七)

以太网自协商--1000BASE-X自协商(七)

作者头像
追宇星空
发布2024-07-01 15:33:02
830
发布2024-07-01 15:33:02
举报
文章被收录于专栏:追宇星空追宇星空

SGMII

SGMII作为1000BASE-X的孪生兄弟。它俩通常是同一个芯片物理接口的复用功能。很多小伙伴经常对它俩的基本概念和应用场景有混淆。下面笔者对SGMII接口进行一个系统的梳理。

SGMII接口并非IEEE 802.3的标准接口。该接口由思科定义并首先使用,因其良好的特性被其他第三方厂家广泛支持,最终成为事实上的标准接口。SGMII (Serial Gigabit Media Independent Interface)被设计用来达到下面两个目标:用比GMII/RGMII接口更少的芯片管脚,在10/100/1000 PHY与ETH MAC之间传递网络数据;在10M,100M,1000M三种速度模式下都支持半双工和全双工方式。

SGMII使用两个数据信号和两个时钟信号在10/100/1000 PHY与ETH MAC之间传递帧数据和链路速度信息(目前的SGMII模块接收方向普遍支持数据时钟提取功能CDR模块,故时钟信号没有存在的必要了)。数据信号工作在1.25 Gbaud的时钟频率上。

SGMII的接口框图如下:

SGMII数据通路完全利用了1000BASE-X PCS功能模块。传统的GMII接口的信号格式(TXD[7:0], RXD[7:0], TX_EN, RX_DV, TX_ER, RX_ER)通过编码,并串转换后从SGMII接口输出。CRS可以从RX_DV中推断出来,同理COL可以从RX_DV和TX_EN中推断出来。

SGMII控制通路是一种非对称的单向通知机制(与1000BASE-X自协商的双向交互机制完全不同)。PHY利用tx_config_Reg[15:0]将控制信息传递给MAC(PHY感知到有控制信息变化时,PHY就会传递tx_config_Reg给MAC)。MAC收到来自PHY的tx_config_Reg[15:0]后,将tx_config_Reg[14]设置成1,回送给PHY。Linktimer从1000BASE-X的的10ms缩小到SGMII的1.6ms以确保SGMII更快更新链路状态(PHY及时将双绞线侧链路状态通过SGMII接口同步给MAC)。

tx_config_Reg[15:0]的信息格式如下表:

很显然1.25GBuad传输速率对于MDI在10M/100M模式时是超速的。MDI工作在10Mbps时,SGMII将MDI侧1个帧重复100次传播(后面99个帧无SFD帧开始定界符)。MDI工作在100Mbps时,SGMII将MDI侧1个帧重复10次传播(后面9个帧无SFD帧开始定界符)。

PHY的SGMII接口一般称为SGMII-Master(SGMII-PHY)模式。交换芯片/CPU的SGMII接口一般称为SGMII-Slave(SGMII-MAC)模式。因为SGMII自协商是一种非对称的单向通知机制,故当链路双方都自协商使能时,SGMII-Master和SGMII-Slave只能配对使用(SGMII-Master和SGMII-Master不能互连;SGMII-Slave和SGMII-Slave不能互连)。若两侧SGMII自协商都强制关闭,则没有“SGMII-Master和SGMII-Slave只能配对使用”的这种限制。

SGMII自协商实践

SGMII-Slave模式

笔者以曾经实践过的Broadcom公司的BCM53286的四个SerDes口举例(将其设置为SGMII-Slave模式),与SGMII-Slave相关的3个寄存器内容分别如下:

MII Control Register (Page B9–BCh, Address 00–01h)

在该寄存器中与自协商相关bit分别为:

bit12 AnegEn 该bit为自协商使能位(系统工程师需要保证SGMII两端的自协商使能位保持一致);

bit6,13 Speed 当SGMII自协商关闭时(bit12=0),这两位决定SGMII-Slave侧的实际工作速度。1X 为1000 Mbps, 01 为100 Mbps, 00 为10 Mbps;

bit8 Duplex当SGMII自协商关闭时(bit12=0),决定SGMII-Slave侧的实际工作双工模式。0 为Half-duplex, 1为Full-duplex;

AN LP Ability (Page B9h–BCh, Address 0Ah– 0Bh)

该寄存器为SGMII自协商SGMII-Slave侧核心状态寄存器,来自SGMII-Marster侧的tx_config_Reg[15:0]的自协商Base Page的状态信息就存储在该寄存器:

bit15 Copper Link,该比特状态显示为0,表示PHY的Copper MDI侧未建立正确链接;该比特状态显示为1,表示PHY的Copper MDI侧已建立正确链接;

bit12 Copper Duplex,该比特状态显示为1,表示PHY的Copper MDI侧工作于全双工模式;该比特状态显示为1,表示PHY的Copper MDI侧工作于半双工模式;

bit11:10 Copper Speed,该比特状态显示为2b00,表示PHY的Copper MDI侧工作于10BASE-T模式;该比特状态显示为2b01,表示PHY的Copper MDI侧工作于100BASE-TX模式;该比特状态显示为2b10,表示PHY的Copper MDI侧工作于1000BASE-T模式;

bit0 SGMII Selector,该比特状态显示为0,表示远端SerDes口工作于1000BASE-X模式;该比特状态显示为1,表示远端SerDes口工作于SGMII模式;

SerDes/SGMII Control 1 Register (Page B9h-BCh: Address 20h, Block0)

bit0 FIBER_MODE_1000X 该bit为SerDes模式设置位。根据网络管理员的实际应用需求灵活设置(置1:1000BASE-X模式,置0:SGMII模式);

SGMII-Master模式

笔者以曾经实践过的Broadcom公司的BCM54616S的SGMII-Master口举例,与SGMII-Master相关的3个寄存器内容分别如下:

1000BASE-X MII Control

在该寄存器中与自协商相关bit分别为:

bit12 AnegEn 该bit为自协商使能位(配置工程师需要保证SGMII两端的自协商使能位保持一致);

bit6,13 Speed 当SGMII自协商关闭时(bit12=0),这两位决定SGMII-MAC侧的实际工作速度。1X 为1000 Mbps, 01 为100 Mbps, 00 为10 Mbps;

bit8 Duplex 当SGMII自协商关闭时(bit12=0),决定SGMII-MAC侧的实际工作双工模式。0 为Half-duplex, 1为Full-duplex;

1000BASE-X AN Advertisement

该寄存器为SGMII自协商SGMII-Master侧核心状态寄存器,SGMII-Marster根据此寄存器的内容装填tx_config_Reg[15:0],然后将tx_config_Reg[15:0]的内容发送给SGMII-Slave。

该寄存器内容为只读(根据MDI侧双绞线自协商的结果Copper Link[HCD]自动更新该寄存器),管理员无法直接设置此寄存器位(可以通过调整双绞线侧的广告能力寄存器从而影响Copper Link[HCD进而影响该寄存器])。

该寄存器的比特定义与tx_config_Reg [15:0]完全相同。这里不再赘述。

AN LP Ability (Page B9h–BCh, Address 0Ah– 0Bh)

该寄存器为SGMII自协商SGMII-Master侧核心状态寄存器,来自SGMII-Slave侧的ACK的状态信息就存储在该寄存器:

bit14 ACK,该比特状态显示为0,表示SGMII-Master尚未收到来自SGMII-Slave侧的确认;该比特状态显示为1,表示SGMII-Master已经收到来自SGMII-Slave侧的确认。

SGMII应用

两个交换芯片的SGMII接口互连场景应用

通常情况下交换芯片的SGMII接口都是SGMII-Slave模式,根据前面讨论的SGMII自协商机制,此情况下是不能互连的。但是博通BCM53286M的SerDes口支持“伪SGMII-Master模式”(SerDes/SGMII Control 1 Register (Page B9h-BCh: Address 20h, Block0的bit5 SGMII_MSTR_MODE设置为1)。将两个交互芯片中任一个的SerDes口设置成“伪SGMII-Master模式”,即可实现两个交换芯片的SGMII接口互连。

SerDes端口的无CPU的SFP Dump场景应用:

SerDes口以SFP的形式对用户开放,用户有动态切换插入SFP电模块和SFP光模块的需求。通常情况下,CPU的I2C接口读取模块的类型:当为SFP电模块时,将FIBER_MODE_1000X设置为0(SGMII模式);当为SFP光模块时,将FIBER_MODE_1000X设置为1(1000BASE-X模式)。当无CPU的Dump应用时,SerDes/SGMII Control 1 Register (Page B9h-BCh: Address 20h, Block0的bit4 AUTODET_EN设置为1(默认即为1),此时芯片利用收到的自协商的状态字的比特0可以判断出SFP模块的类型,进而可以自动更新SerDes口的模式,从而可以实现正确连接。

1000BASE-X 自协商介绍完毕,下节课开始介绍"背板以太网"系列。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 追宇星空 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档