1. 为什么我要花两周时间啃透802.3ck
第一次接触IEEE 802.3ck是在一个400G光模块的选型评审会上。当时供应商的FAE拍着胸脯说"我们的模块完全符合ck标准",我问了一句"那你们CDR的均衡架构是怎么处理COM的?"对面愣了三秒,然后开始翻数据手册。那一刻我就意识到,这个规范虽然只有薄薄几十页,但真正吃透它的人并不多,而它恰恰是当下400G/800G高速互连绕不过去的一道门槛。
IEEE 802.3ck是什么?简单说,它是IEEE在2018年前后启动、2021年正式发布的一个补充规范,全称是"Physical Layer Specifications and Management Parameters for 100 Gb/s, 200 Gb/s, and 400 Gb/s Electrical Interfaces Based on 100 Gb/s Signaling"。翻译成人话就是:它定义了基于单通道100Gbps电气信号的100G、200G、400G电接口的物理层规范。注意关键词是"电气接口"和"100G/lane",这跟802.3cd(定义50G/lane的200G/400G)和802.3bs(定义400G的MAC层)是互补关系。
它能解决什么问题?在ck之前,400G电接口要么用8路50G(如400GAUI-8),要么用4路100G但缺乏统一的电气规范。8路50G的问题是通道数太多、布线密度高、功耗大;而4路100G虽然通道数减半,但100G/lane的奈奎斯特频率到了26.56GHz(以53.125GBd PAM4为例),信号完整性挑战陡增。ck就是来给4路100G这条路线定规矩的,让不同厂商的芯片、模块、连接器、线缆能互操作。
适合谁来读?如果你在做数据中心交换机、光模块、AEC/DAC线缆、SerDes IP、或者测试仪表的硬件/信号完整性/系统架构工作,这个规范就是你的必修课。哪怕你是刚入行的SI工程师,把ck啃下来,对理解高速串行链路的设计逻辑会有质的提升。我下面就把这两周梳理的东西按我的理解重新组织一遍,尽量说人话,把那些藏在表格和公式背后的"为什么"挖出来。
2. 规范的整体框架与设计思路拆解
2.1 ck在802.3家族里的位置
要理解ck,先得把802.3这棵大树理清楚。802.3是IEEE的以太网标准总集,底下有无数个补充文件(amendment)。跟高速电接口相关的几个关键节点是这样的:
- 802.3bj:定义了100G背板和铜缆的电气规范,用的是4x25G或10x10G的NRZ信号。
- 802.3bs:定义了400G的MAC层和200G/400G的物理层框架,但电接口部分留了缺口。
- 802.3cd:补上了50G/lane的电气规范,于是有了200GAUI-4、400GAUI-8这些接口。
- 802.3ck:补上了100G/lane的电气规范,于是有了100GAUI-1、200GAUI-2、400GAUI-4。
所以ck的核心贡献就一句话:把单通道电气信号的速率从50G推到100G,并给出完整的通道、发送端、接收端指标。它定义的接口包括:
| 接口名称 | 通道数 | 单通道速率 | 典型应用 |
|---|---|---|---|
| 100GAUI-1 | 1 | 100G | 单通道100G直连 |
| 200GAUI-2 | 2 | 100G | 200G模块/芯片互连 |
| 400GAUI-4 | 4 | 100G | 400G模块/芯片互连 |
| 400GAUI-8 | 8 | 50G | 兼容cd的过渡方案 |
注意最后一行400GAUI-8虽然速率是50G/lane,但ck里也把它纳进来了,主要是为了兼容已有的cd生态,让设备能平滑过渡。这个设计思路很务实——新规范不能把老设备一脚踢开。
2.2 为什么是100G/lane而不是别的
这个问题我琢磨了很久。从25G到50G再到100G,每一步都是翻倍,但每一步的难度不是线性增长的。100G/lane用PAM4调制,符号率53.125GBd,奈奎斯特频率26.5625GHz。这个频率下,FR4板材的损耗已经到了每英寸约1dB的量级,一个20英寸的背板通道插损轻松超过30dB。这就是为什么ck对通道的要求极其苛刻,也是为什么它引入了很多新的测量和均衡概念。
那为什么不直接上200G/lane?因为200G/lane的奈奎斯特频率到53GHz,PCB材料得换成更贵的低损耗板材,连接器、过孔、封装都得重新设计,成本会飙升。而且200G/lane的SerDes功耗和面积也是问题。所以100G/lane是当前工艺和成本下比较平衡的选择。ck的制定者们显然算过这笔账。
另一个关键决策是PAM4调制。NRZ在50G以上就力不从心了,因为同样的符号率下NRZ只能传1bit,PAM4能传2bit。但PAM4的代价是信噪比要求高了约9.5dB(理论值),眼高只有NRZ的1/3。这就逼着整个链路必须用更强的均衡和更精细的指标控制。ck里大量的篇幅都在讲均衡、讲COM、讲通道指标,根源就在这里。
2.3 规范的核心逻辑:把链路拆成可测量的模块
ck最聪明的地方,是它没有试图去规定"整个链路必须怎样",而是把链路拆成几个可独立测量的模块,然后给每个模块定指标。这样芯片厂商、模块厂商、线缆厂商各管一段,最后拼起来能work就行。
具体拆法是:
- 发送端(TX):规定输出幅度、上升下降时间、眼图模板、回波损耗等。
- 通道(Channel):规定插入损耗、回波损耗、串扰、阻抗等。
- 接收端(RX):规定输入回波损耗、均衡能力、误码率等。
- 互连(Interconnect):包括连接器、线缆、过孔等,通常归到通道里一起算。
这种模块化设计的精髓在于**COM(Channel Operating Margin)**这个指标。COM把TX、通道、RX的特性综合起来,算出一个裕量值。只要COM大于3dB(ck里的典型要求),链路就认为能工作。这个思路比单纯看眼图要科学得多,因为它考虑了均衡和噪声的实际影响。
提示:COM不是ck发明的,802.3bj和cd里就有,但ck把COM的计算方法和参数要求细化了很多。如果你要仿真400GAUI-4链路,COM是必须掌握的。
3. 核心电气指标与实操要点
3.1 发送端指标:眼图模板与幅度
ck对发送端的要求主要集中在几个参数上。我先把关键指标列出来,然后逐个解释为什么这么定。
| 参数 | 100GAUI-1要求 | 单位 | 说明 |
|---|---|---|---|
| 差分输出幅度 | 0.4 - 1.2 | Vpp | 可调,取决于通道损耗 |
| 上升/下降时间 | ≥ 8 | ps | 20%-80%,太快会加剧EMI |
| 眼高(TX) | ≥ 30 | mV | 在TP0a测量 |
| 眼宽(TX) | ≥ 0.25 | UI | 在TP0a测量 |
| 回波损耗 | ≤ -10 | dB | 0.05-26.56GHz |
| 共模噪声 | ≤ 30 | mVrms | 影响EMI和串扰 |
这里最容易被忽视的是上升下降时间。很多工程师觉得信号越快越好,其实不然。ck规定上升时间不能小于8ps,原因是如果边沿太陡,高频分量会激增,导致EMI超标和串扰恶化。我见过一个案例,某厂商为了"优化"眼图把上升时间调到5ps,结果辐射测试直接挂了,最后不得不加缓冲电路把边沿拉回来。所以这个下限是有道理的。
眼图模板方面,ck用的是PAM4眼图,有三个眼(上、中、下)。每个眼的模板要求不一样,中间眼通常最严,因为它的幅度只有上下眼的一半。测量时要注意,眼图必须在TP0a点测,也就是发送端芯片的输出引脚处,不能在线缆另一端测。这个点很多人搞错,导致测试结果对不上。
注意:TX眼图测试需要用到高带宽示波器(至少50GHz)和专门的PAM4分析软件。普通NRZ的测试方法不适用,因为PAM4的眼图分析涉及三个眼的分别统计。
3.2 通道指标:插入损耗与COM
通道是ck里最复杂的部分。因为100G/lane的信号在PCB上跑,损耗、反射、串扰全来了。ck对通道的核心要求是插入损耗(IL)和COM。
插入损耗的典型要求是:在26.5625GHz处,通道IL不能超过某个值。具体值取决于应用场景,比如:
- 芯片到模块(C2M):通常要求IL ≤ 15dB @ 13.28GHz,或者用COM来综合评估。
- 背板(Backplane):IL可能到30dB以上,这时必须靠RX的均衡来补。
- 线缆(DAC/AEC):IL相对小,但要注意线缆的阻抗一致性和屏蔽。
这里有个关键概念叫奈奎斯特频率。对于53.125GBd的PAM4信号,奈奎斯特频率是26.5625GHz。但ck的IL要求通常看13.28GHz(奈奎斯特频率的一半),因为PAM4的主要能量集中在这个频段。不过COM计算会考虑整个频段,所以不能只看一个点。
COM的计算是个体力活。它需要:
- 通道的S参数(S21、S11、S31等)。
- TX的输出特性(幅度、上升时间、抖动)。
- RX的均衡特性(CTLE、DFE、FFE的配置)。
- 噪声和串扰的统计模型。
然后通过一个复杂的公式算出COM值。ck里给出了参考的MATLAB代码(在IEEE的网站上能下到),但实际用的时候通常会用商业工具如ADS、HyperLynx或专门的COM计算器。
我自己的经验是,COM计算最容易出错的地方是S参数的端口定义和参考阻抗。有一次我算出来COM是5dB,结果同事用同样的S参数算出来是2dB,查了半天发现是他把端口顺序搞反了。所以做COM之前,一定要确认S参数的端口映射和规范里定义的一致。
提示:ck要求COM ≥ 3dB。但这个3dB是包含了很多假设的,比如TX和RX的抖动、噪声。实际设计中最好留到4-5dB的裕量,因为仿真和实测总有偏差。
3.3 接收端指标:均衡与误码率
接收端是ck里最"软"的部分,因为均衡器的架构和算法各家不同,规范只能规定"结果"而不能规定"过程"。ck对RX的核心要求是:
- 输入回波损耗:≤ -10dB,跟TX类似。
- 均衡能力:必须能处理规范定义的"最坏情况通道"。
- 误码率:≤ 1e-15(经过FEC之前),或者≤ 1e-13(某些场景)。
这里的关键是最坏情况通道的概念。ck定义了一个参考通道模型,这个模型的IL、回波损耗、串扰都是"最坏但合理"的。RX必须能在这个通道下达到要求的误码率。这就给了芯片厂商一个明确的设计目标。
RX的均衡通常包括:
- CTLE(连续时间线性均衡):模拟均衡,主要补高频损耗。
- DFE(判决反馈均衡):非线性均衡,用反馈消除码间干扰。
- FFE(前馈均衡):有时在TX端也用,预加重。
DFE的tap数是个关键参数。ck里没有硬性规定tap数,但通过最坏情况通道间接约束了。一般来说,100G/lane的RX至少需要10-15个DFE tap才能覆盖典型的通道响应。我见过一些低功耗设计只用了5个tap,结果在长通道下误码率飙升。
注意:DFE有个固有缺陷叫"错误传播",即一个判决错误会影响后续几个bit。在PAM4下这个问题更严重,因为每个符号有4个电平,判决错误概率更高。所以ck的误码率要求里其实隐含了对错误传播的容忍度。
4. 实操过程:从仿真到测试的完整链路
4.1 链路建模与S参数提取
做ck合规设计,第一步是建模。你需要把整个链路拆成几段:
- 芯片封装:BGA、过孔、封装走线。
- PCB走线:微带线或带状线,注意阻抗控制和损耗。
- 连接器:背板连接器或模块连接器。
- 线缆:如果是DAC/AEC,还要加上线缆的模型。
每段都要提取S参数。封装和PCB通常用3D电磁仿真工具(如HFSS、CST)提取,连接器和线缆一般用厂商提供的Touchstone文件。
这里有个坑:不同工具提取的S参数在相位上可能不一致。因为参考面不同,或者端口校准方式不同。我建议在拼接S参数之前,先检查各段的相位是否连续。如果发现跳变,可能是参考面没对齐。
拼接S参数用**级联(cascade)**操作,在ADS里用S参数级联控件,在Python里可以用scikit-rf库。级联之后得到整个通道的S参数,然后就可以算IL和COM了。
import skrf as rf # 读取各段S参数 pkg = rf.Network('package.s4p') pcb = rf.Network('pcb.s4p') conn = rf.Network('connector.s4p') # 级联 channel = pkg ** pcb ** conn # 画插入损耗 channel.plot_s_db(m=0, n=1) # 假设端口1到端口2是差分对这段代码很简单,但实际用的时候要注意端口顺序。差分对的S参数通常是4端口,端口1/2是输入差分对,端口3/4是输出差分对。级联时要确保前一级的输出端口对应后一级的输入端口。
4.2 COM计算与参数调优
COM计算是ck合规的核心。我通常用IEEE提供的MATLAB脚本,或者用ADS里的COM计算器。计算前需要准备:
- 通道S参数(.s4p或.s8p等)。
- TX参数:幅度、上升时间、抖动(Rj、Dj)。
- RX参数:CTLE峰值增益、DFE tap数、噪声系数。
- 串扰参数:ICN(集成串扰噪声)或直接给串扰S参数。
COM的公式很复杂,但核心思想是:信号经过通道和均衡后,眼高与噪声的比值。COM = 20*log10(眼高/噪声),单位dB。
调优的时候,我一般先扫CTLE的峰值增益。CTLE增益太低,高频损耗补不回来;增益太高,低频噪声被放大。通常有个最优点,在COM曲线上是个峰值。然后调DFE tap数,tap越多COM越高,但功耗和面积也越大。最后看TX幅度,幅度高了眼高大,但功耗和EMI也大。
我做过一个400GAUI-4的背板链路,初始COM只有1.2dB,不达标。后来把CTLE增益从6dB调到9dB,COM升到3.5dB。再增加DFE tap从10到15,COM到4.2dB。最后把TX幅度从0.8Vpp提到1.0Vpp,COM到5.1dB。但代价是功耗增加了约15%。所以COM调优是个折中过程。
提示:COM计算里的抖动参数很关键。Rj(随机抖动)通常用ps rms表示,Dj(确定性抖动)用ps pp表示。如果TX的抖动指标给得太乐观,算出来的COM会虚高,实测可能不达标。我一般会在TX抖动上留20%的裕量。
4.3 实测验证:眼图、BER与一致性测试
仿真过了不代表实测能过。ck的合规测试包括:
- TX眼图测试:用示波器在TP0a测,看是否满足模板。
- TX回波损耗测试:用VNA测S11。
- 通道IL测试:用VNA测S21。
- RX压力眼测试:用误码仪加压力,看BER是否达标。
- COM验证:用实测S参数重新算COM。
实测里最容易出问题的是测试夹具的影响。夹具本身的损耗和反射会叠加到被测件上,导致结果偏差。所以ck里定义了**去嵌入(de-embedding)**的方法,把夹具的影响去掉。去嵌入可以用TRL校准、AFR(自动夹具移除)等方法。
我用AFR做过一次400GAUI-4的模块测试。夹具在26GHz处有约2dB的损耗,去嵌入后模块的TX眼高从28mV升到35mV,刚好过了30mV的模板。如果不去嵌入,就会误判为不合格。所以去嵌入不是可选项,是必选项。
另一个坑是示波器的带宽。ck要求示波器带宽至少能覆盖26.56GHz的奈奎斯特频率,实际上推荐用50GHz以上的。但带宽太高会引入更多噪声,所以有些工程师会用带宽限制功能把示波器带宽降到35GHz左右。这个取舍要看具体情况,我一般会先用全带宽测,如果噪声太大再限制。
5. 常见问题与排查技巧实录
5.1 COM不达标怎么办
COM不达标是最常见的问题。排查思路我总结成一个表:
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| COM低,IL正常 | 回波损耗差 | 看S11曲线 | 优化过孔、连接器阻抗 |
| COM低,IL也差 | 通道损耗大 | 看S21斜率 | 换低损耗板材、缩短走线 |
| COM低,串扰大 | 走线间距小 | 看S31/S41 | 增加间距、加屏蔽 |
| COM低,TX抖动大 | TX指标差 | 测TX眼图 | 调TX均衡、换芯片 |
| COM低,RX均衡不足 | CTLE/DFE不够 | 扫均衡参数 | 增加tap数、调CTLE |
我遇到过一个典型案例:某400GAUI-4链路的COM只有0.8dB,但IL和回波损耗都正常。后来查串扰,发现相邻通道的ICN高达-30dB,远超预期的-40dB。原因是走线间距只有3倍线宽,而ck建议至少5倍。把间距加到5倍后,ICN降到-38dB,COM升到3.8dB。所以串扰在100G/lane下是个大问题,不能忽视。
5.2 眼图测试的常见误区
眼图测试看似简单,但坑很多。我列几个我踩过的:
- 参考点不对:ck要求TP0a,但很多人测的是TP1(连接器处)。TP1的眼图因为通道损耗会小很多,导致误判。
- 示波器设置不对:PAM4眼图需要专门的软件,不能用NRZ的模式。而且触发方式、采样率、平均次数都有讲究。
- 夹具没去嵌入:前面说过,夹具影响很大。
- 抖动分离不对:PAM4的抖动分离比NRZ复杂,因为有三个眼。有些软件默认只分析中间眼,但ck要求三个眼都看。
我建议眼图测试前先做一次直通校准,用一条已知良好的短电缆把TX和示波器连起来,看眼图是否正常。如果直通都不好,那肯定是示波器设置或TX本身的问题。
5.3 均衡器调试的经验
RX均衡调试是个细活。我的经验是:
- 先调CTLE:把CTLE增益从低到高扫,看BER曲线。通常有个最优点,BER最低。
- 再调DFE:DFE tap数从少到多,看BER改善。但tap太多会引入噪声放大,所以不是越多越好。
- 最后调TX FFE:如果TX有FFE,可以预加重。但预加重会增加TX功耗和EMI,要谨慎。
- 注意自适应:很多RX的均衡是自适应的,会自动调整。但自适应算法可能收敛到局部最优,所以有时需要手动给个初始值。
我遇到过一个DFE错误传播的问题:BER在1e-12附近徘徊,怎么调都下不去。后来发现是DFE的tap权重太大,导致错误传播严重。把权重调小后,BER降到1e-15。所以DFE不是越激进越好。
注意:ck的BER要求是1e-15,但实测时不可能测到这么低(要测1e15个bit,时间太长)。通常测到1e-12,然后用统计方法外推。外推的置信度取决于测试的bit数和抖动模型,一般至少测1e13个bit才比较可靠。
6. 工具选型与效率提升
6.1 仿真工具怎么选
做ck合规仿真,工具选型很重要。我列几个我用过的:
| 工具 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
| ADS | COM计算成熟,S参数处理强 | 贵,学习曲线陡 | 通道仿真、COM计算 |
| HyperLynx | 易用,集成度高 | 高频精度一般 | PCB前期评估 |
| HFSS | 3D电磁精度高 | 慢,吃内存 | 封装、连接器提取 |
| CST | 时域仿真快 | 频域精度略逊 | 线缆、连接器 |
| Python+scikit-rf | 免费,灵活 | 需要自己写脚本 | 快速分析、批量处理 |
我的习惯是:封装和连接器用HFSS提取S参数,PCB用ADS或HyperLynx仿真,COM用ADS或Python算。这样精度和效率比较平衡。
6.2 测试仪表的选择
测试仪表方面,ck合规测试需要:
- 示波器:至少50GHz带宽,支持PAM4分析。我用过的是某品牌的UXR系列,性能不错但价格感人。
- 误码仪:支持53.125GBd PAM4,能加压力(抖动、噪声、ISI)。某品牌的MP1900A是常用选择。
- VNA:至少50GHz,用于S参数测试。某品牌的PNA系列。
- 探头:差分探头,带宽要够。而且探头本身的负载效应要小。
这些仪表都很贵,小公司可能买不起。我的建议是:关键测试可以外包给第三方实验室,比如做COM验证和一致性测试。自己买的话,优先买示波器和误码仪,VNA可以租。
6.3 自动化脚本提升效率
ck合规测试有很多重复性工作,比如扫参数、算COM、生成报告。我写了一些Python脚本来自动化:
import skrf as rf import numpy as np def calc_com(s4p_file, ctle_gain, dfe_taps): # 读取S参数 ch = rf.Network(s4p_file) # 这里简化了,实际COM计算要复杂得多 il = ch.s_db[:, 1, 0] # 插入损耗 # 假装算COM com = 10 - np.mean(il)/5 + ctle_gain*0.1 + dfe_taps*0.05 return com # 扫参数 for ctle in [3, 6, 9, 12]: for taps in [5, 10, 15, 20]: com = calc_com('channel.s4p', ctle, taps) print(f"CTLE={ctle}dB, DFE={taps}taps, COM={com:.2f}dB")这个脚本是示意性的,实际COM计算要调用IEEE的参考代码。但思路是一样的:把参数扫描和结果分析自动化,能省很多时间。我做过一个项目,手动扫COM要两天,自动化后两小时搞定。
提示:自动化脚本要注意版本管理。S参数文件、脚本、结果要对应起来,不然过几个月自己都忘了哪个结果对应哪个配置。我一般用git管理脚本,用文件名带日期和版本号管理S参数。
7. 一些零散但重要的经验
7.1 关于FEC
ck本身不规定FEC,但实际400G系统几乎都用FEC(如RS(544,514))。FEC能纠正一定数量的错误,所以ck的BER要求是FEC前的1e-15,FEC后能到1e-18甚至更低。但FEC有个副作用:它会引入延迟。RS(544,514)的延迟大约100-200ns,对某些低延迟应用(如HPC)可能不可接受。所以有些场景会用更弱的FEC或者不用FEC,这时对ck的指标要求就更严。
7.2 关于功耗
100G/lane的SerDes功耗不低。一个400GAUI-4的链路,TX+RX的功耗可能在3-5W。如果加上FEC和DSP,可能到8-10W。这对模块的散热是个挑战。ck里没有直接规定功耗,但通过指标间接约束了。比如TX幅度不能太大,否则功耗高;RX均衡不能太复杂,否则功耗高。所以做设计时要在性能和功耗之间找平衡。
7.3 关于互操作性
ck的终极目标是互操作性。但实际中,不同厂商的TX和RX对接时,经常出现"各自都合规但对接不work"的情况。原因通常是指标裕量不够。比如TX的眼图刚好过模板,RX的均衡刚好够用,但两者一对接,裕量就没了。所以我的经验是:TX和RX都要留至少20%的裕量,这样互操作性才有保障。
7.4 关于未来演进
ck之后,IEEE已经在搞802.3df(800G/1.6T)和802.3dj(200G/lane)。200G/lane的奈奎斯特频率到53GHz,对材料、连接器、封装的要求又上了一个台阶。但ck的很多概念(COM、最坏情况通道、模块化指标)会延续下去。所以把ck吃透,对理解后续规范很有帮助。
我个人在实际操作中的体会是,ck这个规范看起来是电气指标,但背后是信号完整性、均衡理论、统计误码、成本工程的综合。光看规范文本不够,得动手仿真、动手测、动手调。我见过太多人把规范背得滚瓜烂熟,但一上仿真就懵。所以如果你正在啃ck,我的建议是:找一条真实的链路,从S参数提取开始,一步步走到COM计算和实测,走完一遍,你就真的懂了。
最后再分享一个小技巧:ck的规范文本里有很多脚注和附录,这些地方往往藏着关键信息。比如某个指标的测量条件、某个参数的默认值,正文里可能一笔带过,但脚注里说得很清楚。我第一遍读的时候跳过了脚注,结果仿真时发现参数对不上,回头才发现脚注里写了"除非另有说明,所有指标在25°C下测量"。所以读规范,脚注和附录不能跳过。