首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >背板以太网47-200GBASE-KR4(一)

背板以太网47-200GBASE-KR4(一)

作者头像
追宇星空
发布2024-12-19 19:42:37
发布2024-12-19 19:42:37
7690
举报
文章被收录于专栏:追宇星空追宇星空

200GBASE-KR4 (C137)

OSI图

PMD相关子层图

200GBASE-KR4 采用C73自协商(后续章节会详细介绍);

200GBASE-KR4可选地支持节能以太网EEE。

RS && 200/400GMII(C117)

概述

本条款定义了以太网媒体访问控制器和各种PHY之间的调协子层(RS)和媒体独立接口的特性。下图显示了RS和媒体独立接口与ISO/IEC OSI参考模型的关系。

200GMII和400GMII是MAC子层和物理层设备(PHY)之间的可选逻辑接口。200GXS/400GXS子层结合200GAUI-n/400GAUI-n接口可用于可选地扩展200GMII/400GMII。RS使MAC的位串行协议转换成PCS服务接口的并行格式

虽然200GMII和400GMII是可选接口,但它们在本标准中用作规范的基础。物理编码子层(PCS)被指定为200GMII/400GMII,因此如果没有实现,符合要求的实现在功能上应与RS和200GMII/400 GMII的实现一样。

200GMII/400GMII具有以下特点:

a)200GMII支持200 Gb/s的速度。

b)400GMII支持400 Gb/s的速度。

c)数据分隔符与时钟参考同步。

d)它们提供独立的64位宽的发送和接收数据路径。

e)它们仅支持全双工操作。

200/400GMII概念

a)200GMII/400GMII在功能上类似于为其他速度定义的其他媒体无关接口,因为它们都定义了1个允许独立开发MAC和PHY逻辑的接口。

b)RS在MAC串行数据流和200GMII /400GMII的并行数据路径之间进行转换。

c)RS将200GMII /400GMII处提供的信号集映射到MAC处提供的PLS服务原语。

d)数据发送的每个方向都是独立的,由数据、控制和时钟信号提供服务。

e)RS在发送路径上生成连续的数据或控制字符,并在接收路径上期望连续的数据和控制字符。

f)RS通过监测接收路径上指示不可靠链路的状态报告,并在发送路径上生成状态报告,向连接链路远端的DTE报告检测到的链路故障,从而参与链路故障检测和报告。

g)200GMII /400GMII可以支持节能以太网(EEE)的PHY类型的低功耗空闲(LPI)信令。

h)200GMII /400GMII可以通过使用一对200GXS/400GXS子层(DTE XS和PHY XS)进行扩展,它们之间有一个200GAUI-n /400GAUI-n。

200/400GMII结构

RS层将MAC层的串行数据和200GMII /400GMII接口的并行数据实现互相转换的功能;

200GMII /400GMII只支持全双工操作,故PLS_SIGNAL.indication原语永远不会产生。

200GMII /400GMIII若支持EEE或Link Interruption(特殊的序列有序集),PLS_CARRIER.indication原语才会产生。

200GMII /400GMII:64个数据信号(TXD<63:0> and RXD<63:0>), 8个控制信号(TXC<7:0> and RXC<7:0>), and 1个时钟信号(TX_CLK and RX_CLK)。当工作于200Gbps,时钟频率为3125MHz(100ppm),上升沿采样,3125M Clk/(s×边沿)×1边沿×64bit/Clk = 200Gbps;当工作于400Gbps,时钟频率为6250MHz(100ppm),上升沿采样,6250M Clk/(s×边沿)×1边沿×64bit/Clk = 400Gbps;

64个TXD和8个TXC信号应被组织成8个数据通道Lane,64个RXD和8个RXC信号也应如此。每个方向上的8个通道Lane共享1个公共时钟——TX_CLK用于发送,RX_CLK用于接收。这8个通道以循环序列的方式用于发送字节流。

在发送时,每8个PLS_DATA.request事务表示MAC发送的一个字节。第一个字节与通道0对齐,第二个与通道1对齐,第三个与通道2对齐,第四个与通道3对齐,第五个字节与通道4对齐,第六个与通道5对齐,第七个与通道6对齐,第八个与通道7对齐,然后第九个字节与通道0对齐,以此类推。分隔定界符Delimiters帧间空闲字符IPG分别用TXC和RXC宣称指示的控制码编码在TXD和RXD信号上。

200/400GMII Lane分配

200/400GMII与PLS服务原语映射

调协子层(RS)应将200GMII/400GMII提供的信号映射到PLS服务原语。全双工操作仅在200/400 Gb/s;因此支持CSMA/CD操作的PLS服务原语不会通过RS映射到200GMII/400GMII。LPI_REQUEST不得设置为ASSERT,除非所连接的链路已运行至少1秒钟(即根据底层PCS/PMA,link_status = OK)。EEE能力要求使用附件4A中定义的MAC,以简化全双工操作(具有载波侦听延迟)。这提供了全双工操作,但当PHY处于其低功率状态时,使用载波感测信号PLS_CARRIER.indication来延迟发送。

为200/400 Gb/s操作定义了以下原语的映射:

PLS_DATA.request

PLS_DATA.indication

PLS_CARRIER.indication

PLS_SIGNAL.indication

PLS_DATA_VALID.indication

PLS_DATA .request ( OUTPUT_UNIT = 0/1/ DATA_COMPLETE )。DATA_COMPLETE值表示媒体访问控制子层MAC没有更多数据要输出。OUTPUT_UNIT值通过每个TX_CLK上边沿的信号TXD<63:0>和TXC<7:0>传送到PHY。每个PLS_DATA .request事务应按顺序映射到TXD信号(TXD<0>,TXD<1>,…TXD<63>,TXD<0>,…)。在来自MAC子层的64个PLS_DATA .request事务(8个字节,每个字节有8个PLS_DATA.request事务)之后,RS请求PHY发送64个数据比特。前导码的第一个字节应转换为Start控制字符,并与Lane 0对齐。对于MAC子层的每64比特时间,RS应生成TXD<63:0>和TXC<7:0>。DATA_COMPLETE值应映射到在最后一个数据字节之后按顺序编码在接下来的8个TXD位信号上的Terminate控制字符;并在下一个TX_CLK边沿发送到PHY。这可能与最后一个数据字节或随后的TX_CLK边沿位于同一TX_CLK边上。当Terminate控制字符位于Lane 0、1、2、3、4、5或6中时,顺序后面的通道Lane将使用Idle控制字符进行编码。

PLS_DATA .indication ( INPUT_UNIT = 0/1)。INPUT_UNIT值来自RX_CLK每个上边沿从PHY接收到的信号RXC<7:0>和RXD<63:0>。为MAC子层实体生成的每个原语对应于MAC在连接两个DTE的链路的远程端发出的PLS_DATA.request。对于帧接收期间的每个RXD<63:0>,RS应生成64个PLS_DATA.indication事务,直到帧结束(终止控制字符),其中0、8、16、24、32、40、48或56个PLS_DATA.indication事务将由包含Terminate的RXD<63:0>生成。在帧接收期间,每个RXD信号应按顺序映射到PLS_DATA.indication事务中(RXD<0>,RXD<1>,…RXD<63>,RXD<0>,…)。在生成相关的PLS_DATA.indication事务之前,RS应将有效的Start控制字符转换为前导码第一个字节。RS不得为终止控制字符生成任何PLS_DATA.indication原语。为了确保稳健运行,发送到MAC的数据值可以是根据200GMII/400GMII错误指示的要求,由RS执行更改动作。序列有序集不会指示给MAC。

PLS_CARRIER .indication ( CARRIER_STATUS = CARRIER_ON / CARRIER_OFF )。200 Gb/s和400 Gb/s操作仅支持全双工操作。RS仅在支持可选的EEE功能或可选的链路中断检测时生成此原语。如果支持可选的EEE功能并且LPI_CARRIER_STATUS为TRUE,或者如果支持可选检测链路中断并且故障类型为Link_fault,则将CARRIER_TATUS设置为CARRIER_ON。否则,CARRIER_STATUS设置为CARRIER_OFF。基于链路中断信号的延迟机制可以由管理启用或禁用。

PLS_SIGNAL .indication ( SIGNAL_STATUS= SIGNAL _ERROR / NO _SIGNAL _ERROR )。200 Gb/s和400 Gb/s操作仅支持全双工操作。RS永远不会生成这个原语。

PLS_DATA .VALID ( DATA_VALID_STATUS = DATA_VALID / DATA_NOT_VALID )。DATA_VALID_STATUS参数可以取两个值之一:DATA_VALID或DATA_NOT_VALID。DATA_VALID值表示PLS_DATA.indication原语的INPUT_UNIT参数包含传入帧的有效数据(RXC = 0)。DATA_NOT_VALID值表示PLS_DATA.indication原语的INPUT_UNIT参数不包含传入帧的有效数据(RXC = 1)。每当DATA_VALID_STATUS参数从DATA_VALID变为DATA_NOT_VALID或反之亦然,RS应生成PLS_DATA_VALID.indication服务原语。

如果之前的RXC<7:0>和RXD<63:0>包含8个空闲字符IDLE (RXD=0x07070707)1个序列排序集(8Byte)1个终止字符,则当响应于通道0上的开始控制字符Start control character (RXD=0xFB)而生成PLS_DATA.indication事务时,DATA_VALID_STATUS应取DATA_VALID值。当序列中当前通道的RXC被宣称用于除错误控制字符以外的任何字符时,DATA_VALID_STATUS应取DATA_NOT_VALID值。在没有错误的情况下,DATA_NOT_VALID是由Terminate控制字符引起的。当DATA_VALID_STATUS因Terminate以外的控制字符而从DATA_VALID更改为DATA_NOT_VALID时,RS应确保MAC在向指示DATA_NOT_VALUED之前检测到FrameCheckError。

200/400GMII数据流

Inter-frame <inter-frame>

200/400GMII发送或接收路径上的帧间<帧间>时段是一个没有帧数据活动发生的间隔。对应于MAC包间间隙的<帧间>以Terminate控制字符开始,以Idle控制字符继续,以开始控制字符之前的Idle控制字符结束。IPG的长度可以变化发送MAC和接收MAC之间实现一个或多个功能)(例如,RS Lane对齐PCS AM对齐PHY时钟速率补偿)在发送MAC和接收MAC之间改变。接收RS的200/400GMII处的最小IPG为1个字节。链路状态信息的信令(66B控制块序列有序集)在逻辑上发生在IPG时段。

Preamble<preamble>与SFD <sfd>

前导码<preamble>由MAC开始帧发送,当MAC生成时,它由7个字节组成,具有以下比特值:

10101010 10101010 10101010 10101010 10101010 10101010 10101010

Start控制字符表示200/400GMII上MAC数据的开始。在发送时,RS将从MAC传送的前导码的第1个数据字节转换为Start控制字符。在接收时,RS将开始控制字符转换为前导码数据字节。RS在发送时和PHY在接收时将开始控制字符与200/400GMII的通道0对齐

帧起始定界符<sfd>表示帧的开始,并紧跟在前导码之后。200/400GMII上<sfd>的位值与起始帧分隔符(sfd)相同,等于以下值:

10101011

前面显示了前导码和SFD,它们的比特按顺序从左向右进行串行发送。每个字节的最左侧比特是字节中的LSB,每个数字节的最右侧比特是数字节中的MSB。

前导码和SFD通过200 /400GMII以字节的形式发送,这些字节在200 /400GMII的通道上顺序排列。第1个前导字节被替换为Start控制字符,并与通道0、通道1上的第二个字节、通道2上的第三个字节、通道3上的第四个字节、通道4上的第五个字节、通道5上的第六个字节、通道6上的第七个字节和通道7上的SFD对齐,这8个字节在TX_CLK的下一个上升沿上发送。第九个字节被分配给通道0,后续字节顺序分配给通道。200/400GMII< preamble >和<sfd>如下:

第1个Preamble替换成“Start型”200 /400GMII Control Code(0xFB)[只能出现在Lane0]

开始控制字符Start control character (0xFB)对齐。在发送时,RS可能需要修改IPG的长度,以便在Lane 0上对齐Start控制字符(前导码的第1个字节)。这应通过以下两种方式之一实现:

1)MAC实现可以将此RS功能合并到其设计中,并始终插入额外的空闲字符IDLEs,以在8字节边界上对齐Start控制字符。请注意,这将降低以最小IPG分隔的某些数据包大小的有效数据速率。(此法不可行,无法达到标称线速)

2) 或者,RS可以通过有时插入有时删除空闲字符来IDLEs对齐Start控制字符,从而保持有效数据速率。使用此方法时,RS会维护一个赤字空闲计数(DIC),表示删除或插入的空闲字符的累积计数。DIC为每个删除的空闲字符递增,为每个插入的空闲字符递减,是否插入或删除空闲字符的决定受到DIC最小值为0、最大值为7的限制。请注意,这可能会导致在发送200GMII/400GMII上观察到的帧间间隔比规定的最小IPG(12Byte)短7个字节;然而,缩短IPG的频率受到DIC规则的限制。DIC仅在初始化时重置,并且无论MAC子层发送的IPG大小如何,都会应用DIC。如果效果与RS实现的DIC相同,则可以采用等效技术来控制Start控制字符的RS对齐。

Data <data>

帧中的数据<data>应由一组数据字节组成(从以太网帧的目的MAC地址开始到FCS结束)。

帧结尾标记<efd>

EFD采用“Terminate型”200 /400GMII Control Code(0xFD)[可以出现在任意Lane]

在通道上用TXD的适当终止控制字符编码断言TXC,构成发送数据流的帧结束定界符<efd>。同样,RXC的断言与RXD的适当终止控制字符编码构成了接收数据流的帧结束定界符。200/400GMII应识别200/400GMII的8个通道中任何一个通道上的帧结束定界符。

包开始和结束定界

数据包分隔符的开始被定义为开始控制字符Start control character,数据包结束分隔符被定义为终止控制字符Terminate control character或其他控制字符之前的最后1个连续数据字节的结束,导致从DATA_VALID更改为DATA_NOT_VALID。

普通数据帧发送

S=0xFB(TXC=1),

DP=0x55(TXC=0) ,

DP=0x55(TXC=0) ,

DP=0x55(TXC=0) ,

DP=0x55(TXC=0) ,

DP=0x55(TXC=0) ,

DP=0x55(TXC=0),

SFD=0xD5(TXC=0),

MAC帧数据…………+FCS,

T=0xFD(TXC=1),

I=0x07(TXC=1),……

错误数据帧发送

TXD, TXC编码

普通数据帧接收

S=0xFB(RXC=1),

DP=0x55(RXC=0) ,

DP=0x55(RXC=0) ,

DP=0x55(RXC=0) ,

DP=0x55(RXC=0) ,

DP=0x55(RXC=0) ,

DP=0x55(RXC=0),

SFD=0xD5(RXC=0),

MAC帧数据…………+FCS,

T=0xFD(RXC=1),

I=0x07(RXC=1),……

错误数据帧接收

RXD, RXC编码

错误与故障处理

200/400GMII响应错误指示

如果在帧接收期间(即当PLS_DATA .VALID的DATA_VALID_STATUS = DATA_VALID时),在接收到的通道Lane上用信号发送了终止控制字符以外的控制字符,则RS应确保MAC将检测到该帧中的帧校验错误。通过在RS中加入一个功能可以满足这一要求。该功能产生被传递到MAC子层的接收帧数据序列。该数据序列可以通过替换传递到MAC的数据来产生。当Terminate之外的控制字符出现在包的结尾时,RS为帧内接收到的每个错误控制字符生成8个PLS_DATA.indication原语,并可能生成8个PLS_DATA.indication原语确保帧检测错误标记的产生。可以采用其他技术来响应接收到的错误控制字符,前提是MAC子层的行为就像在接收到的帧中发生了帧校验错误一样。

生成发送错误控制字符的条件

如果在发送帧的过程中,有必要请求PHY故意破坏帧的内容,使得接收端将以最高的概率检测到损坏,则可以通过对通道的TXD和TXC信号进行适当的编码(0xFE error控制符),在发送通道上宣称错误控制字符

对接收到的无效帧序列的响应

需要与此RS相邻的200/400 Gb/s PCS来保持发送RS的列对齐,或将Start控制字符与通道0对齐。对于在任何其他通道上接收到的Start控制字符,RS不得向MAC指示DATA_VALID。无差错的200/400 Gb/s操作不会改变通道7中的SFD对齐。不需要200/400 Gb/s MAC/RS实现来处理在包含Start控制字符的列之后的列的通道7以外的位置具有SFD的数据包。

链路故障信令

链路故障信令在远程RS和本地RS之间运行。在远程RS与本地RS之间检测到的故障被本地RS作为本地故障接收。只有RS发出远程故障信号。PHY内的子层能够检测到导致链路通信不可靠的故障。

在识别到故障状况后,PHY子层指示数据路径上的本地故障状态。当此本地故障状态到达RS时,RS停止发送MAC数据或LPI,并在发送数据路径上连续生成远程故障状态(可能截断正在发送的MAC帧)。当RS接收到远程故障或链路中断状态时,RS停止发送MAC数据或LPI,并连续生成空闲控制字符。当RS不再收到故障状态消息时,它将恢复正常运行,发送MAC数据或LPI。

链路故障指令通过64B/66B序列有序集的方式实现(非常重要)。

PHY用通道0中的序列控制字符Q和通道1、通道2、通道4、通道5、通道6和通道7中的0x00数据字符以及通道3中的0x01数据字符表示本地故障。在通道3中具有数据字符0x02表示远程故障。虽然大多数故障检测是在PHY的接收数据路径上进行的,但在某些特定的子层中,可以在PHY的发送侧检测到故障。PHY的本地故障状态(通道3中具有数据字符0x01)也表明了这一点。

对于可能暂时中断的链路的操作,提供了对第三种故障情况(链路中断)(通道3中具有数据字符0x03)的可选检测。

RS报告链路的故障状态。本地故障表示在远程RS和本地RS之间的接收数据路径上检测到的故障。远程故障表示本地RS和远程RS之间的发送路径上的故障。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档