10GBASE-CX4 (C54)
PCS/PMA (C48)
本条款规定了10Gb/s物理层实现系列(统称为10GBASE-X)共有的物理编码子层(PCS)和物理介质连接(PMA)子层。10GBASE-X PHY系列由10GBASE-CX4(C54)、10GBASE-KX4(C71)和10GBASE-LX4(C53)组成。
C47中规定的XGXS也使用10GBASE-X PCS和PMA子层。10GBASE-X PCS和PMA子层将PMD子层(包括MDI)的接口特性映射到调协子层(RS)预期的服务,以及10千兆媒体独立接口(XGMII)的逻辑和电气特性。虽然XGMII是可选的,但它被用作10GBASE-X PCS和PMA子层定义的基础。
10GBASE-X假设使用C45的MDIO接口和寄存器集进行PHY和站管理(STA)实体之间的通信。
10GBASE-X具有以下特点:
a) 支持XGMII和RS 10Gb/s运行的能力
b) 参考时钟嵌入在数据和控制编码组中
c) 称为通道Lane的独立串行链路组成的数据路径
d) 独立的4通道宽发送和接收数据路径
e) 简单的信号映射到XGMII和RS
f) 全双工操作
g) 与其他10 Gb/s接口共享技术
h) 与其他10 Gb/s以太网块共享功能
10GBASE-X PHY功能框图
下行方向: 将来自XGMII的32比特并行数据以8比特为一组分成4组,然后分别执行8B/10B编码形成10比特的并行数据,再将10比特的并行数据执行并串转换后的串行数据发送给PMD;
上行方向: 将来自PMD的串行数据先执行串并转换成并行的10比特并行数据(利用comma编码规则执行分界),再将并行的10比特的数据执行8B/10B解码转换成并行的8比特数据,并将4组8比特的数据合并成一组32比特并行数据发送给XGMII接口。
PCS
PCS和RS之间的接口是C46规定的XGMII。10GBASE-X PCS以类似于 “1000BASE-X PCS向1000Mb/s GMII提供服务的方式”向XGMII提供服务。
10GBASE-X PCS提供XGMII所需的所有服务,并支持10GBASE-X PMA,包括:
a) 下行方向:将32个XGMII数据位和4个XGMII控制位编码到4个并行通道,每个并行通道发送10位码组code-groups, 用于与底层PMA通信。
b) 上行方向:将4个PMA并行通道解码为32个XGMII数据位和4个XGMII控制位,每个并行通道发送10位码组code-groups。
c) 同步每个通道上的编码组code-groups,以确定编码组边界。
d) 从所有通道接收到的编码组向对齐模式“去倾斜Deskew”。
e) 支持C45中规定的MDIO接口和寄存器集。
f) 将XGMII空闲控制字符IDLE转换为(从)随机码组序列,以实现串行通道同步、时钟速率补偿和通道间对齐。
g) 时钟速率补偿协议。
h) 基于空闲序列Idle sequence的发送和接收的链路初始化。
i) 故障状态的链路状态报告。
PCS服务接口
PCS服务接口允许10GBASE-X PCS与PCS客户端(RS/XGXS)之间发送信息。PCS客户是C46中定义的RS,或C47中定义了XGXS。PCS服务接口的实例是C46中定义的XGMII。
在下行方向上,10GBASE-X PCS在XGMII上接受来自PCS客户端的数据包。由于底层PMA的连续信号特性以及PCS执行的编码,10GBASE-X PCS将XGMII数据和控制字符映射到码组流code-group stream (40bit)中。在上行方向上,PCS对从PMA接收到的码组流code-group stream (40bit)进行解码,将码组映射到XGMII数据和控制字符,并将字符流转发给XGMII到PCS客户端进行进一步处理。
PCS功能
当PCS与XGMII通信时,PCS在每个方向上使用32个数据信号(TXD<31:0>和RXD<31:0>)、4个控制信号(TXC<3:0>和RXC<3:0>)和1个时钟(TX_CLK和RX_CLK)。
当PCS与PMA通信时,PCS在发送方向上使用数据信号tx_code-group<39:0>,在接收方向上使用rx_unaligned<39:0>每组数据信号传送4个10比特码组的通道。在PMA服务接口处,通过在空闲流Idle Stream中嵌入特殊的非数据码组non-data code-groups,可以实现码组对齐、通道间去偏移deskew和PHY时钟速率补偿。PCS提供在XGMII格式和PMA服务接口格式。
tx_code-group和rx_unaligned信号以类似于XGMII的方式组织成4个通道Lane。在发送时,第一个PCS码组与通道0对齐,第二个与通道1对齐,第三个与通道2对齐,第四个与通道3对齐,然后与第五个重复到通道0,以此类推。这种面向通道的组织通过PMA延伸到PMD服务接口。
PCS发送功能根据XGMII上的TXD<31:0>和TXC<3:0>信号连续生成码组code-groups,并通过PMA_UNITDATA.request原语将其发送到PMA服务接口。
PCS同步功能通过PMA_UNITDATA.indication原语连续接受未对齐和未同步的码组,获得10位码组同步,并传达通过SYNC_UNITDATA.indicate消息将同步的10位编码组发送到PCS纠偏模块。
PCS同步过程设置lane_sync_status<3:0>标志,以指示PMA是否可靠运行。
PCS纠偏deskew功能通过SYNC_UNITDATA.indicate消息连续接受同步的码组,对齐码组以消除链路引入的通道之间的偏斜,并通过ALIGN_UNITDATA.indicate消息将对齐和同步的码群传达给PCS接收功能。PCS纠偏过程宣称align_status标志,以指示PCS已成功地在所有PCS通道上对码组进行纠偏和对齐。每当align_status标志被取消时,PCS纠偏deskew模块都会尝试纠偏deskew和对齐。
PCS接收功能通过ALIGN_UNITDATA.indicate消息连续接受来自PMA服务接口的编码组。PCS接收功能监控这些码组,并在XGMII上生成RXD和RXC。在转发到XGMII之前,所有接收到的表示空闲的编码组都被替换为空闲字符。
PCS发送和接收功能为链路状态报告提供支持,链路状态报告支持发送故障和接收故障。
Code-groups使用规则
PCS Code-group表示执行8B/10B编码后的10B数据;XGMII字符表示执行8B/10B编码之前的8B数据。
PCS使用8B/10B块编码方案将XGMII字符映射到10位码组中,反之亦然。在码组的定义中隐含的是通过PCS同步过程建立码组边界。PCS通道彼此独立。8B/10B编码规定的所有编码组规则适用于每条通道。XGMII字符到PCS码组的映射如下表所示。
XGMII字符(8B)与PCS Code-group(10B)映射
特殊符号
/x/编码组code-groupx由前后斜线字符表示。
||y||4个编码组,每个编码组位于通道Lane 0到3中,彼此同步,排列在由值y标识的列中,由前后两个双杠字符表示。
||I||与||LPIIDLE||:
每当XGMII空闲时(TXD<31:0>=0x0707070707和TXC<3:0>=0xF),空闲有序集(||I||)以整列连续重复发送||I||提供了一种连续的填充模式,用于建立和维护通道同步、执行通道间去偏移和执行PHY时钟速率补偿。||I||从PCS发出并由PCS解释。
||I||有序集序列由一个或多个连续发送的||K||、||R||或||A||有序集组成。||I||有序集排序规则如下:
a) ||I||序列从||T||后面的第一列开始。
b) ||T||之后的第一个||I||在||A||或||K||之间交替,除非要发送||A||,并且自最后一个||A|以来发送的列数少于r[见d)],否则将发送||K||。
c) ||R||被选为||T||之后的第二个||I||。
d) 每个||A||都在r个非||A||列之后发送,其中r是16到31之间的随机分布数字,包括16和31。两个||A||列之间的16个非||A||列的相应最小间距提供了理论上的85位去偏移能力。
e) 当不发送||A||时,||K||或||R||会以2位间隔随机均匀分布的方式发送。
f) 只要sync_status = OK,空闲期间接收到的所有||I||都会被转换为XGMII空闲控制字符,以便通过XGMII进行发送。所有其他||在空闲期间接收到的I ||直接映射到XGMII数据或控制字符按通道排列,但具有EEE功能的PHY除外:
1) /D20.5/(LPI)在任何通道中检测到,同一列中的其余通道仅检测/K/或/R/,这将导致在所有通道中报告LP_IDLE字符。
2) 在前一列的任何通道中检测到|A||和/D20.5/(LPI),并且仅检测到/K/或/R/,这将导致在所有通道中报告LP_IDLE字符。
随机化||I||序列的目的是减少空闲期间10GBASE-X的电磁干扰(EMI)。随机化的||I||序列不产生离散谱discrete spectrum。||A||间距以及||K||、||R||或||A||的选择都应基于PRBS生成的随机整数R的生成,该随机整数R七阶多项式之一||A||间距设置为下一个生成的r值。
r的产生速率为每列一次,312.5 MHz±100 ppm。一旦||A||间距计数变为零(A_CNT=0),||A||将被选择在空闲序列的下一个机会进行发送||K||和||R||的选择遵循code_sel的值,该值根据r.生成随机整数r的方法留给实现者。PCS空闲随机化器逻辑如图所示。
同步||K||:
码组同步是接收器在每个通道的输入比特流中检测码组边界的过程。检测传入比特流中的comma图案(K28.5)可以识别码组边界。PCS Idle序列中包含的Sync或||K||有序集保证了每个通道中comma的足够频率。应要求检测/K/的comma+和comma-变量。
对齐||A||:
10GBASE-X链路的有源和无源元件在通道Lane之间引入了偏斜。PCS去偏移功能补偿在接收器处观察到的所有通道Lane间偏移。Align或||A||有序集由一个唯一的特殊编码组组成,在每个通道中也称为Align或/A/。10GBASE-X有序集的定义保证了/A/编码组在发射机的所有通道上同时启动,从而在发射机处产生最少的lane to lane skew。所有连接元件的允许偏斜应符合下表的规定。
Skip||R||:
10GBASE-X PHY允许沿单个链路使用多个时钟域。跳过或||R||有序集包含在PCS空闲序列中,以便在多个时钟域的情况下进行时钟速率补偿。时钟速率补偿可以通过插入或删除未编码数据流中的Idle字符或编码Idle流中的||R||来执行。任何||R||都可以被删除||R||可以插入Idle流中的任何位置,但||T||后面的第一列除外。
当在未编码的数据流中进行时钟补偿时,空闲插入和删除的规则如下:
a) 空闲插入或删除以4个连续空闲字符为一组进行。
b) 空闲字符是在空闲或有序集合之后添加的。
c) 接收数据时不会添加空闲字符。
d) 终止控制字符后的4个字符不会被删除。
e) 删除有序集以适应时钟速率。
f) 序列有序集删除仅在收到两个连续的序列排序集时发生,并且只删除其中一个。
g) 仅插入空闲以进行时钟补偿。
/R/编码组的差异是中性的,允许在不影响串行流当前运行差异的情况下删除或插入。在跳过插入过程中,必须在每个通道中插入正确的当前运行差异版本/R/。
Start||S||:
Start或||S||有序集直接映射到通道0中的XGMII Start控制字符,后跟XGMII通道1至3中的任何三个数据字符。通常,这三个数据字符将是前导码模式,但PCS既不检查也不更改其内容。||S||向PCS指示数据包已启动。
Terminate||T||:
Terminate或||T||有序集直接映射到位于任何通道中的XGMII Terminate控制字符,如果Terminate不在通道0中,则前面是数据字符,如果终止不在通道3中,则后面是空闲字符||T||向PCS指示数据包已终止。PCS翻译||T||之后的所有XGMII控制字符,直到识别出下一个XGMII Start控制字符。PCS认为MAC包间间隙(IPG)从接收||T||开始。
传播到||T||中的任何空闲编码组或||T||后面的列的无法识别的运行差异running disparity错误在错误所在的同一通道的前一列中表示为/E/。选择所有||I||有序集,以确保传播的编码违规被识别,不会进一步传播。
cvtx_terminate功能用于将与XGMII terminate控制字符位于同一列中的所有XGMII Idle控制字符转换为/K/编码组。cvrx_terminate功能用于将||T||中的所有/K/编码组转换为XGMII Idle控制字符。
MDIO功能映射
与10GBASE-X PCS相关的寄存器集中在C45寄存器DeviceID=3(PCS)里。下面做一个简单的介绍。
控制变量映射
状态变量映射
PMA
PMA为PCS提供了一种独立于介质的方法,以支持使用一系列面向串行位的物理介质。10GBASE-X PMA执行以下功能:
a) 通过PMA服务接口在PCS和PMA之间映射发射和接收码组code-groups。
b) 在底层串行PMD上对用于发送/接收的编码组进行并串转换/串并转换。
c) 从PMD提供的编码组中恢复时钟。
d) 通过PMD服务接口在PMA和PMD之间映射发送和接收比特。
e) 通过PMD和PMA服务接口,通过PMA将信号检测signal_detect从PMD直接传递到PCS。
10GBASE-X使用C53、C54和C71条中规定的PMD子层和MDI。10GBASE-CX4、10GBASE-KX4和10GBASE-LX4执行以下功能:
a) 在底层介质上发送4 Lane串行比特流。
b) 在底层介质上接收4 Lane串行比特流。
PMA功能
PMA包括PMA发送功能和PMA接收功能。PMA执行XGMII的36位宽数据和控制路径到PMA服务接口的40位宽码组的映射,以及到4通道串行PMD服务接口的映射。
PMA发送功能
PMA发送功能将未更改的数据(并串转换除外)从PCS直接传递给PMD。PMA收到PMA_UNITDATA.request原语后,PMA应分别对4个对齐的10位码组code groups执行并串转化,并以40个PMD_UNITDATA.request原语的形式将其发送到PMD。
在每个10位编码组的每个通道内,PMA_UNITDATA.indication参数的最低位对应于发送到PMD的第1个位和PMA_UNITDATA.indication参数的最高位对应于发送到PMD的最后1个比特。PMA码组内的比特没有数字意义;也就是说编码组只是一个具有预定义解释的位模式。
PMA_UNITDATA.request原语应以312.5 MHz±100 ppm的频率生成。内部时钟乘法器单元将基于10位码组的PMA_UNITDATA.request原语的频率乘以10倍,以将锁存的数据从PMA串行化到PMD中。
PMA接收功能
PMA接收功能将未更改的数据(串并转换除外)从PMD直接传递到PCS。在从4个通道中的每一个通道中连续接收到10个PMD_UNITDATA.indication原语后,PMA应将接收到的比特组装成一个40位向量,表示4个10位未对齐的码组,并将该向量作为4个PMA_UNITDATA_indication原语的参数传递给PCS。
在每个10位编码组的每个通道内,PMA_UNITDATA.indication参数的最低位对应于从PMD接收到的第1个位和PMA_UNITDATA.indication参数的最高位对应于从PMD接收到的最后1个比特。PMA码组内的比特没有数字意义;也就是说编码组只是一个具有预定义解释的位模式。接收码组对齐由PCS执行。
PMA_UNITDATA.indication原语应以312.5 MHz±100 ppm的频率生成。4个PMD通道的线路速率均为3.125 GBd±100 ppm。PMD的串行数据流包括一个嵌入式时钟,其标称工作频率比单通道码组高10倍。如果数据流在容差范围内,PMA接收功能应从有效的8B/10B接收数据流中恢复时钟。
PMA服务原语
PMA_UNITDATA.request (tx_code-group <39:0>)
PMA_UNITDATA.indication (rx_unaligned <39:0>)