1000BASE-CX (C39)
PCS (C36)
概述
范围
本条款规定了1000 Mb/s物理层实现系列(统称为1000BASE-X)中通用的物理编码子层(PCS)和物理介质连接(PMA)子层。1000BASE-X基于ANSI INCITS 230-1994(光纤通道物理和信令接口)开发的物理层标准。特别是,该标准使用与光纤通道相同的8B/10B编码,与ANSI 10位串行器芯片的速度增强版本兼容的PMA子层,以及类似的光学和电气规范。1000BASE-X PCS和PMA子层将PMD子层(包括MDI)的接口特性映射到调协子层预期的服务。1000BASE-X可以扩展到支持任何其他全双工介质,只需要该介质在PMD级别符合要求。
目标
1000BASE-X的目标如下:
a) 支持CSMA/CD MAC
b) 支持1000 Mb/s中继器
c) 提供1000 Mb/s PMD之间的自动协商
d) 在GMII上提供1000 Mb/s的数据速率
e) 支持使用150W平衡铜缆或符合ISO/IEC 11801:1995的电缆光纤的电缆装置
f) 允许标称网络范围高达5公里,包括
1) 跨度为25m的150W平衡链路
2) 一个跨度为50米的中继器网络(使用所有150W平衡铜缆)
3) 一个跨度为200米的中继器网络(使用光纤)
4) 5000m DTE/DTE链路(使用光纤)
g) 保持底层PMD信道的全双工行为
h) 支持BER目标10-12
1000BASE-X PCS和PMA不限制全双工网络的范围。第59条(1000BASE-LX10,1000BASE-BX10)和第60条(1000BASE-PX PON)中的PMD的范围超过5公里。
子层汇总
PCS
PCS接口是千兆媒体独立接口(GMII),它为所有1000 Mb/s PHY实现(例如,不仅是1000BASE-X,还有其他可能类型的千兆PHY实体)提供到调协子层的统一接口。1000BASE-X以类似于100BASE-X向100Mb/s MII提供服务的方式向GMII提供服务。
1000BASE-X PCS提供GMII所需的所有服务,包括
a) 将GMII数据8比特字节编码(解码)为(从)10比特码组code-groups(8B/10B),以便与底层PMA通信
b) 生成载波侦听和冲突检测指示,供PHY的半双工客户端使用
c) 管理自动协商过程,并在PHY准备就绪时通过GMII通知管理实体
PMA
PMA为PCS提供了一种独立于介质的方法,以支持使用一系列面向串行位的物理介质。1000BASE-X PMA执行以下功能:
a) 通过PMA服务接口在PCS和PMA之间映射发射和接收码组code-groups
b) 在底层串行PMD上对用于发送(接收)的码组code-groups进行串行化(反串行化)
c) 从PMD提供的8B/10B编码数据中恢复时钟
d) 通过PMD服务接口在PMA和PMD之间映射发送和接收比特
e)PMD服务接口处的数据环回
PMD
光纤和铜介质的1000BASE-X物理层信令分别改编自ANSI INCITS 230-1994(FC-PH)第6条和第7条。这些条款定义了1062.5 Mb/s的全双工信号系统,可容纳单模光纤、多模光纤和150W平衡铜缆。
1000BASE-X调整了这些基本物理层规范,以与第38条(1000BASE-LX/SX PMD)和第39条(1000BASE-CX PMD)中规定的PMD子层和介质一起使用。
MDI在逻辑上包含在每个PMD子条款中,是各种支持介质的实际介质附件,包括连接器。
下图描述了1000BASE-X与其相关PMD子层之间的关系。
子层间接口
1000BASE-X采用了许多接口。一些接口(如PMA服务接口)使用抽象服务模型来定义接口的操作。已定义PCS接口的可选物理实例化。它被称为GMII(千兆媒体独立接口)。还定义了PMA服务接口的可选物理实例化(TBI)。它改编自ANSI技术报告TR/X3.18-1997(光纤通道-10位接口)。图36-2(功能框图)描述了与1000BASE-X相关的所有接口提供的服务的关系和映射。
值得注意的是,虽然本规范根据位、字节和码组定义了接口,但实现者可以选择其他数据路径宽度以方便实现。唯一的例外是:a)GMII,当在可观察的互连端口上实现时,使用字节宽的数据路径,b)PMA服务接口,当在一个可观察的互联端口上物理实现为TBI(10位接口)时,使用10位宽数据路径,以及c)MDI,使用串行物理接口。
功能框图
PCS
接口
PCS服务接口允许1000BASE-X PCS与PCS上层客户端之间发送信息。PCS客户端包括MAC(通过调协子层)和中继器。 PCS接口被精确地定义为千兆媒体独立接口(GMII)。在本条款中,将GMII变量设置为TRUE或FALSE分别等同于规定的“断言”或“取消断言”。
功能
PCS包括1000BASE-X的PCS发送、载波侦听、同步、PCS接收和自动协商功能。PCS保护调协子层(和MAC)免受底层信道的特定性质的影响。当与GMII通信时,其中分组定界packet delimit由单独的发射控制信号(TX_EN和TX_ER)和接收控制信号(RX_DV和RX_ER)提供。当与PMA通信时,PCS使用10位宽的同步数据路径,该路径发送10位码组code-groups。在PMA服务接口处,通过在发送的码组流中嵌入特殊的非数据码组(比如K28.5),可以实现码组对齐和MAC分组定界。PCS提供在GMII格式和PMA服务接口格式之间映射数据包所需的功能。
PCS发送功能根据GMII上的TXD<7:0>、TX_EN和TX_ER信号连续生成码组code-groups,并通过PMA_UNITDATA.request原语立即将其发送到PMA服务接口。PCS发送功能基于接收是否与发送同时发生来生成GMII信号COL。此外,它还生成内部标志,用于发送,供载波侦听过程使用。PCS发送功能监视自动协商过程xmit标志[CONFIGURATION(正在自协商)/IDLE(正在自协商)/DATA(自协商完成)],以确定是发送数据还是重新配置链路。
PCS载波侦听功能控制GMII信号CRS。
PCS同步功能通过PMA_UNITDATA.indication原语连续接收码组code-groups,并通过SYNC_UNITDATA.indicate原语将接收到的码组传递给PCS接收功能。PCS同步功能设置sync_status标志,以指示PMA是否可靠地运行(并且可以在不进行详尽的错误率分析的情况下确定)。
PCS接收功能通过SYNC_UNITDATA.indication原语连续接收码组code-groups。PCS接收功能监控这些码组,并在GMII上生成RXD<7:0>、RX_DV和RX_ER,以及载波感测CRS和发送过程使用的内部标志接收。
PCS自动协商功能设置xmit标志[CONFIGURATION(正在自协商)/IDLE(正在自协商)/DATA(自协商完成)],以通知PCS发送过程按照GMII的要求发送穿插有数据包的正常空闲normal idles interspersed with packets,或重新配置链路。
码组用法
PCS使用8B/10B块编码方案将GMII信号映射到10比特码组中code groups,反之亦然。码组定义中隐含的是通过8B/10B规定的PMA码组对齐功能建立码组边界。码组是不可观察的,在PCS之外没有意义。PCS功能ENCODE和DECODE根据8B/10B规则生成、操作和解释码组。
8B/10B发送编码
PCS使用发送码来改善通过链路发送的信息的发送特性。由发送码定义的编码确保PHY比特流中存在足够的转换transitions,以使接收器处的时钟恢复成为可能。这种编码还大大增加了检测在信息发送和接收功能中可能发生的任何单个或多个比特错误的可能性。此外,发送码的一些特殊码组(比如K28.5)包含一个独特且易于识别的比特模式,该模式有助于接收器在传入的PHY比特流上实现码组对齐。本标准中指定使用的8B/10B发送码具有高转换密度,是行程限制码,并且是直流平衡的。8B/10B符号的转换密度范围为每个符号3到8个转换。
本标准中8B/10B发送编码的定义与ANSI INCITS 230-1994(FC-PH)第11条中规定的定义相同。码组比特位置与PMA和其他PCS结构的关系如图36-3所示。
符号惯例
8B/10B发送码使用字母表示法来描述未编码信息字节和单个控制变量的比特。未编码信息字节的每个比特包含二进制0或二进制1。控制变量Z具有值D或值K。当与未编码信息字节相关联的控制变量包含值D时,相关联的编码码组被称为数据码组。当与未编码信息字节相关联的控制变量包含值K时,相关联的编码码组被称为特殊码组。
未编码信息字节的A、B、C、D、E、F、G、H的比特表示法用于描述8B/10B发送码。比特A、B、C、D、E、F、G、H被转换为10比特发送码组的比特a、b、c、d、e、i、f、g、h、j。8B/10B码组比特分配如图36-3所示。每个有效码组都使用以下约定命名:/Dx.y/表示256个有效数据码组,/Kx.y/用于特殊控制码组,其中x是位EDCBA的十进制值,y是位HGF的十进制值。
发送顺序
码组比特发送顺序如图36-3所示。
多码组有序集中的码组从用于区分有序集的特殊码组(例如/K28.5/)开始按顺序发送,并在有序集的定义内从左到右逐码组发送,直到有序集的所有码组都被发送。
每个多码组有序集的第一个码组在重置或通电后以偶数码组位置发送,从第一码组开始计数。后续码组作为奇数和偶数码组连续交替。
数据包的内容从用于表示Start_of_packet的有序集(SPD定界符)开始顺序发送,并在数据包的定义内从左到右逐码组进行,直到用于表示End_of_Packed的有序集被发送为止。
码组
表36-1a,表36-1b,表36-1c,表36-1d,表36-1e定义了8B/10B发送码的有效数据码组(D码组)。表36-2定义了编码的有效特殊码组(K编码组)。这些表用于生成有效的码组(编码)和检查接收到的码组的有效性(解码)。在表中,每个字节条目都有两列,代表两个(不一定不同)码组。这两列对应于基于当前运行失衡Running Disparity值(当前RD-或当前RD+)的有效码组。运行失衡Running Disparity是一个二进制参数,其值为负(-)或正(+)。
运行失衡规则RD
在通电或退出测试图案后,发射机应为其初始运行失衡RD取负值。在发送任何码组时,发射机应根据发送的码组的内容计算其运行失衡RD的新值。
在接通电源或退出测试图案后,接收器应假设其初始运行失衡RD为正值或负值。在接收到任何码组时,接收器确定码组是有效还是无效,并基于接收到的码组的内容计算其运行运行失衡RD的新值。
以下运行失衡RD规则应用于计算已发送(发射机运行失衡RD)和已接收(接收机运行失衡RD)的码组的新运行失衡RD值。码组的运行失衡RD是基于子块计算的,其中前6个比特(abcdei)形成一个子块(6比特子块),后4个比特(fghj)形成另一个子块。6比特子块开头的运行失衡RD是最后一个码组末尾的运行失衡。4比特子块开头的运行失衡RD是6比特子块末尾的运行失衡RD。码组末尾的运行失衡RD是4比特子块末尾的运行失衡RD。
子块sub-blocks的运行失衡RD计算如下:
a) 如果子块包含的1多于0,则任何子块末尾的运行失衡RD都是正的。如果6比特子块为000111,则在6比特子模块的末尾也是正的,如果4比特子模块为0011,则在4比特子块的末尾是正的。
b) 如果子块包含的0多于1,则任何子块末尾的运行失衡RD为负。如果6比特子块为111000,则在6比特子模块的末尾也是负的,如果4比特子模块为1100,则在4比特子块的末尾是负的。
c) 否则,子块末尾的运行失衡RD与子块开头的运行失衡RD相同。
所有具有相等数量的0和1的子块都是失衡中性disparity neutral的。为了限制子块之间0或1的游程长度,8B/10B发送码规则规定,仅当子块开头的运行失衡RD为正时,才生成编码为000111或0011的子块;因此,这些子块末端的运行差异也是正的。同样地,仅当子块开始处的运行差异为负时,才生成包含111000或1100的子块;因此,这些子块末端的运行差异也是负的。
在8B/10B发送码中检测到无效码组并不一定意味着检测到错误的码组就是发生错误的那个码组。无效的码组可能是由先前的错误引起的,该错误改变了比特流的运行失衡RD,但在发生错误的码组中没有导致可检测的错误。表36B–1和36B–2中所示的示例显示了这种行为。表36B–3所示的示例显示了在接收到的码组中检测到该码组中的比特错误,影响下一个码组,并且在检测到运行失衡错误running disparity error时停止错误传播的情况。
a)引入了一个比特错误(1001 Þ 1011)
b)非零失衡块必须交替极性(+ Þ –)。在这种情况下,RD不交替(+ Þ +),在表36-1a-e或表36-2的当前RD+列中找不到接收到的码组,并且识别出无效的码组。
c)无论接收到的码组的有效性如何,都会根据接收到的码组计算运行失衡RD。非零失衡块防止错误传播,并将运行失衡RD块归一化到发送的比特流(即,相当于接收到的比特流没有发生错误)。
a)引入了一个比特错误(1001 Þ 1011)
b)非零失衡块必须交替极性(+ Þ –)。
a)引入了一个比特错误(0110 Þ 0111)
b)非零失衡块必须交替极性(+ Þ –)。接收到的RD与发送的RD不同。
c)非零失衡块必须交替极性(+ Þ –)。由于RD保持在+,RD错误导致码组无效。
d)在表36-1a-e或表36-2中均未找到接收到的码组。
e) 非零失衡块防止错误传播,并将运行失衡RD归一化到发送的比特流(即,相当于接收到的比特流没有发生错误)。PCS End_of_Packet分隔符(/T/R/R或/T/R/K28.5/)中包含的所有码组都包括非零失衡块。
生成码组
对于要生成(编码)码组的每个字节,可以在表36-1a-e或表36-2中找到相应的条目。应根据发送器运行失衡RD的当前值从相应列中选择码组。对于每个发送的码组,计算运行失衡RD的新值。此新值用作要编码和发送的下一个字节的发射机当前运行失衡RD。
接收码组正确性检查
对于要生成(编码)码组的每个字节,可以在表36-1a-e或表36-2中找到相应的条目。应根据发送器运行失衡RD的当前值从相应列中选择码组。对于每个发送的码组,计算运行失衡RD的新值。此新值用作要编码和发送的下一个字节的发射机当前运行失衡RD。
应使用以下规则来确定接收到的码组的有效性:
a) 在表36-1a-e和表36-2中与接收器运行失衡RD的当前值对应的列中搜索接收到的码组。
b) 如果根据当前运行失衡RD在正确的列中找到接收到的码组,则认为该码组有效,并且对于数据码组,确定(解码)相关联的数据字节。
c) 如果在该列中找不到接收到的码组,则认为该码组无效。
d) 与码组的有效性无关,使用接收到的码组来计算新的运行失衡RD。新值用作下一个接收到的码组的接收器当前运行失衡RD。
检测到无效码组并不一定意味着检测到该无效码组的码组存在错误。无效的码组可能是由先前的错误引起的,该错误改变了PHY比特流的运行失衡RD,但在发生错误的码组中没有导致可检测的错误。
检测到的无效码组的数量与链路的误码率(BER)成正比。可以通过计数无效码组来执行链路错误监视。
有序集
具体定义了由“单个特殊码组”或“特殊码组和数据编码组组合”组成的8个有序集。包含/K28.5/的有序集提供了获得比特和码组同步以及建立有序集对齐的能力。有序集提供了包的定界以及链路相对端的发射机和接收机电路之间的同步。表36-3列出了定义的有序集。某些PHY包括一个选项(EEE能力协商),用于发送或接收/LI/、/LI1/和/LI2/,以支持节能以太网。
有序集规则
有序集根据以下规则指定:
a) 有序集由1个、2个或4个码组组成。
b) 所有有序集的第1个码组总是一个特殊码组。
c) 所有多码组有序集的第2个码组始终是数据码组。第2个码组用于将有序集与所有其他有序集区分开来。第2码组提供高比特转换密度。表36-3列出了定义的有序集。
/K28.5/
出于以下原因,/K28.5/特殊码组被选为所有重复发信号的有序集的第1个码组,目的是允许接收器与传入比特流(即/C/和/I/)同步:
a) 位abcdif组成一个分界符comma。分界符comma可用于轻松查找和验证rx_bit流的码组和有序集边界(5个连0或者5个连1)。
b) 编码码组的位ghj表示最大的转换次数(010/101),简化了接收器获取位同步的过程。
分界符
7位分界字符串定义为b'0011111'(分界+)或b'1100000'(分界-)。指定/I/和/C/有序集及其相关协议,以确保分界+在发送期间以与分界-相等或更高的频率发送。这样做是为了确保与通用组件的兼容性。
/K28.1/、/K28.5/和/K28.7/特殊码组中包含的分界符是一种奇异位模式a singular bit pattern,在没有发送错误的情况下,它不能出现在码组的任何其他位置,也不能跨越任何两个相邻码组的边界生成,但以下情况除外:
1000BASE-X仅将/K28.7/特殊码组用于诊断目的。如果此码组后面跟有以下任何特殊或数据码组:/K28.x/、/D3.x/、/D11.x/、/D12.x/、/D19.x/、/D20.x/或/D28.x/,其中x是0到7(包括0和7)范围内的值,则会在两个相邻码组的边界上生成分界符。任何两个相邻码组边界上的分界符都可能导致码组重新排列。
配置/C/
配置被定义为有序集/C1/和/C2/的连续重复,用于将16位配置寄存器(Config_Reg)传递给链路伙伴。关于Config_Reg内容的描述,请参见第37条(用于1000BASE-X自协商)。
有序集/C1/和/C2/在表36-3中定义。/C1/有序集被定义为使得前两个码组(/K28.5/,/D21.5/)末尾的运行失衡RD与开始运行失衡RD相反。
/C2/有序集被定义为使得前两个码组(/K28.5/,/D2.2/)末尾的运行失衡RD与开始运行失衡RD相同。对于恒定的Config_Reg值,发送序列/C1/C2/后的运行失衡RD将与序列开始时的运行失衡RD相反。这可确保在配置过程中发送包含comma+(110000,0101)的K28.5s。
数据/D/
当数据码组不用于区分或传达已定义有序集的信息时,它在GMII和PCS之间传达一个字节的任意数据。数据码组的顺序是任意的,其中任何数据码组后面都可以跟任何其他数据码组。数据码组被编码和解码由PCS执行,但不由PCS解释。数据码组的成功解码取决于正确接收的Start_of_Packet定界符和10比特码组有效性检查。
空闲/I/
每当GMII空闲时(TX_EN和TX_ER都处于非活动状态),IDLE有序集(/I/)都会连续重复发送/I/提供了一种连续的填充模式来建立和维护时钟同步。/I/由PCS发出并解释。/I/由一个或多个连续发送的/I1/或/I2/有序集组成,如表36-3所定义。/I1/有序集被定义为使得发送/I1/末尾的运行失衡RD与开始运行失衡RD相反。/I2/有序集被定义为使得发送/I2/结束时的运行失衡RD与运行失衡RD相同。数据包或配置有序集之后的第一个/I/将当前的正或负运行失衡RD恢复为负值。所有后续/I/都是/I2/,以确保负的运行失衡RD结束。
不同的载波事件由/I/s分隔。该标准的实现可能受益于一次从码组流中添加或删除/I2/的能力,而不会改变在删除/I2/之后与码组相关开始的运行失衡RD。
由两个码组组成的接收有序集,第一个码组是/K28.5/,第二个码组不是/D21.5/或/D2.2/(或/D6.5/或/D26.4/以支持EEE能力),被视为/I/有序集。
LPI
LPI的发送方式与IDLE相同。每当GMII指示“断言LPI”时,LPI有序集(/LI/)都会连续重复发送。
SPD定界符
Start_of_Packet定界符(SPD)用于描绘数据发送序列的起始边界,并对载波事件进行认证。在GMII每次新断言TX_EN时,以及在当前有序集的PCS发送完成之后,PCS用SPD替换MAC前导码的当前字节。在开始分组接收时,PCS用与第一个前导字节相关联的数据字节值替换接收到的SPD定界符。SPD定界符由表36-3中定义的码组/S/(K27.7)组成。
SPD跟随/I/之后,表示单个数据包或突发中的第一个数据包。
SPD紧随/R/之后,表示突发的第二个和后续数据包。
EPD定界符
End_of_Packet定界符(EPD)用于描绘数据包的结束边界。在GMII上每次取消TX_EN后,PCS都会发送EPD,GMII位于组成MAC分组FCS的最后一个数据字节之后。在接收时,PCS将EPD解释为终止数据包。EPD定界符由编码组/T/R/R/或/T/R/K28.5/组成。码组/T/的定义为K29.7。/R/所用码组的定义见下文。/K28.5/通常作为/I/有序集的第一个码组出现。
接收器认为MAC包间间隙(IPG)在/I/的发送之前已经开始了两个字节。例如,当数据包被EPD终止时,EPD的/T/R/部分占据了MAC认为是IPG的区域的一部分。
EPD规则
a) PCS在MAC的最后一个数据字节之后发送/T/R/;
b) 如果MAC向PCS指示载波扩展,则carrier_Extend规则生效;
c) 如果MAC没有向PCS指示载波扩展,请执行以下操作:
1) 如果/R/在偶数码组位置发送,PCS会在码组流中附加一个额外的/R/,以确保后续/I/在偶数码组边界上对齐,EPD发送完成;
2) PCS发送/I/。
载波扩展/R/
Carrier_Extend(/R/)用于以下目的:
a) 载波扩展:MAC用于延长载波事件的持续时间。当用于此目的时,载波扩展由MAC发出并解释,并由PCS编码到相应的码组并从中解码。为了扩展载波,GMII必须取消TX_EN。TX_EN的取消确认和TX_ER的同时确认导致PCS发出具有两个字节延迟的/R/,这给了PCS在开始发送之前完成EPD的时间。PCS发射的/R/码组的数量等于其扩展载波的GMII GTX_CLK周期的数量;
b) 数据包分离:MAC使用载波扩展来分离数据包突发中的数据包。当用于此目的时,载波扩展由MAC发出并解释,并由PCS编码到相应的码组并从中解码;
c)EPD2:数据包分隔符/T/R/I/或/T/R/R/I/中/T/之后的第一个/R/;
d)EPD3: 数据包定界符/T/R/R/I/中/T/之后的第2个/R/。如有必要,此/R/用于填充数据包突发中的唯一或最后一个数据包,以便后续/I/在偶数码组边界上对齐。当用于此目的时,Carrier_Extend从PCS发出并由PCS解释。/T/R/R/的EPD导致一个/R/被交付给PCS客户端。
Carrier_Extend由一个或多个连续发送/R/有序集组成。
载波扩展规则
a) 如果MAC向PCS指示载波扩展,则对于从MAC接收到的每个字节的载波扩展,初始/T/R/后面跟着一个/R/;
b) 如果最后一个/R/在偶数码组位置发送,PCS会在码组流中附加一个额外的/R/,以确保后续/I/在偶数编码组边界上对齐。
错误传播/V/
Error_Propagation(/V/)表示PCS客户端希望向其对等实体指示发送错误。Error_Propagation的正常使用是让中继器传播接收到的错误/V/应PCS客户端的要求,通过使用TX_ER信号从PCS发出。Error_Propagation由PCS发出并解释。Error_Propagation由有序集/V/组成。
介质上存在Error_Propagation或任何无效码组表示存在冲突伪影或错误情况。DTE不会故意将无效的码组发送到介质上。PCS处理并有条件地指示GMII上/V/或无效码组的接收为假载波、数据错误或载波扩展错误,具体取决于其当前上下文。
封装
1000BASE-X PCS通过调协子层和GMII接收来自MAC的数据包。由于底层PMA的连续信号特性以及PCS执行的编码,1000BASE-X PCS将MAC帧封装到码组流中。PCS对从PMA接收到的码组流进行解码,从中提取数据包,并通过调协子层和GMII将数据包传递给MAC。
下图描述了基于GMII信号的MAC数据包的PCS封装。
GMII/PCS与PMA映射
GMII的字节宽数据路径到PCS的10位宽码组的映射,以及PMA/PMD接口的一位路径。PCS将从GMII接收到的字节编码为10位码组。
码组由PMA并串转化为tx_bit流,并传递给PMD在底层介质上发送。第1个发送的tx_bit是tx_code-group<0>,最后1个发送的tx_bit是tx_code-group<9>。码组内的位没有数字意义;也就是说,码组只是一个具有预定义解释的10位模式。
PMA对从PMD接收到的rx_bits进行串并转化。PCS接收功能将rx_code-group<9:0>转换为GMII数据字节。