论
论坛助手
112G PAM4 串行链路跑起来之前,两端其实要先“谈”一轮:发送端该用多大的预加重、接收端均衡器开几档,这些参数不能靠出厂默认值硬套——同一条链路换一根线缆、换一块背板,最优系数就变了。链路训练(Link Training)就是解决这个问题的标准流程,写在 IEEE 802.3ck 等规范里,是 100G/lane 以上高速电口上电后必走的一步。
流程分三步。第一步是能力交换:两端通过训练帧互相通告自己支持的调制方式(NRZ 还是 PAM4)、速率与均衡能力,确认“能谈”。第二步是系数协商:接收端一边用 PRBS 码型测误码和眼图裕度,一边通过训练帧向对端发系数调整请求——FFE 某个抽头加一档、减一档或保持,发送端收到后逐步逼近最优值;这个过程是闭环迭代,通常要几十到上百个来回。第三步是收敛判定:当误码率降到阈值以下、系数连续多轮不再变化,训练宣告成功,链路切入正常数据模式;若超时仍不收敛,则上报训练失败。
链路训练和自协商(Auto-Negotiation)常被混为一谈,其实分工不同:自协商定的是速率、双工这些“能不能通”的大项,链路训练定的是均衡系数这些“通得好不好”的细项,两者先后衔接。实操中训练失败最常见的原因有三类:一是信道损耗超标,插损或回损把眼图压得太死,再怎么调系数也救不回来;二是连接器、线缆接触不良,训练过程中误码忽高忽低,系数永远稳不住;三是两端固件对训练帧的理解不一致,老版本常有兼容性坑。产线上的做法通常是先跑一次完整训练、把收敛后的系数固化成默认值,量产时再以这组系数为起点做快速训练,既省时间又留了自适应余量。
训练帧本身也有讲究:它不是随便发一段码流,而是按规范定义好的结构,里面除了训练序列,还带有系数状态字段——接收端通过它告诉对端当前抽头是“加一档”“减一档”“保持”还是“回到初始值”,发送端按指令逐步调整。系数更新的步长不能太大,否则会在最优值附近来回震荡、迟迟不收敛;也不能太小,否则训练时间拖得太长,链路迟迟不能上线。800G 时代的 802.3df 把速率推到 200G/lane,信道损耗更大,训练的重要性只增不减,有些厂商还会把训练和自适应均衡结合起来——训练先把系数推到一个合理区间,运行时接收端再根据误码做小幅跟踪,相当于“粗调 + 微调”两级配合。链路跑起来之后也不是一劳永逸:温度漂移、线缆老化都会让最优系数慢慢漂移,好的固件会在误码抬头时触发再训练,而不是等到链路彻底断掉才报警。
流程分三步。第一步是能力交换:两端通过训练帧互相通告自己支持的调制方式(NRZ 还是 PAM4)、速率与均衡能力,确认“能谈”。第二步是系数协商:接收端一边用 PRBS 码型测误码和眼图裕度,一边通过训练帧向对端发系数调整请求——FFE 某个抽头加一档、减一档或保持,发送端收到后逐步逼近最优值;这个过程是闭环迭代,通常要几十到上百个来回。第三步是收敛判定:当误码率降到阈值以下、系数连续多轮不再变化,训练宣告成功,链路切入正常数据模式;若超时仍不收敛,则上报训练失败。
链路训练和自协商(Auto-Negotiation)常被混为一谈,其实分工不同:自协商定的是速率、双工这些“能不能通”的大项,链路训练定的是均衡系数这些“通得好不好”的细项,两者先后衔接。实操中训练失败最常见的原因有三类:一是信道损耗超标,插损或回损把眼图压得太死,再怎么调系数也救不回来;二是连接器、线缆接触不良,训练过程中误码忽高忽低,系数永远稳不住;三是两端固件对训练帧的理解不一致,老版本常有兼容性坑。产线上的做法通常是先跑一次完整训练、把收敛后的系数固化成默认值,量产时再以这组系数为起点做快速训练,既省时间又留了自适应余量。
训练帧本身也有讲究:它不是随便发一段码流,而是按规范定义好的结构,里面除了训练序列,还带有系数状态字段——接收端通过它告诉对端当前抽头是“加一档”“减一档”“保持”还是“回到初始值”,发送端按指令逐步调整。系数更新的步长不能太大,否则会在最优值附近来回震荡、迟迟不收敛;也不能太小,否则训练时间拖得太长,链路迟迟不能上线。800G 时代的 802.3df 把速率推到 200G/lane,信道损耗更大,训练的重要性只增不减,有些厂商还会把训练和自适应均衡结合起来——训练先把系数推到一个合理区间,运行时接收端再根据误码做小幅跟踪,相当于“粗调 + 微调”两级配合。链路跑起来之后也不是一劳永逸:温度漂移、线缆老化都会让最优系数慢慢漂移,好的固件会在误码抬头时触发再训练,而不是等到链路彻底断掉才报警。
