1. 课程导入与调试对象界定
在开始任何一次高速串行链路调试之前,最重要的一步不是拿起示波器或打开眼图扫描软件,而是先把“我们到底在调什么”说清楚。Lattice FPGA 的高速串行链路并不是一个孤立模块,它由器件内部的 SerDes 收发器、参考时钟网络、PLL/CDR 电路、物理编码子层(PCS)、物理介质附加子层(PMA),以及器件外部的差分走线、连接器、均衡网络和远端器件共同构成。调试对象界定不清,后续所有测量都会失去参照:你无法判断误码来自发送端抖动、通道损耗、接收端均衡设置,还是协议层状态机没有正常建链。
本课程以 Lattice 器件为核心对象。Lattice 的 Certus-NX、CertusPro-NX、MachXO3D、ECP5、CrossLink-NX 等系列中,部分型号集成了多通道 SerDes,支持从 1.25 Gbps 到 10.3 Gbps 甚至更高的线速率。不同系列的收发器架构、参考时钟要求、均衡能力、协议硬核支持程度差异明显。例如 ECP5 的 SERDES 支持 PCIe Gen1/Gen2 硬核,而 CertusPro-NX 更偏向于通用高速接口与低功耗场景。因此,调试前必须明确:当前使用的是哪一颗 Lattice FPGA、哪个 SerDes 通道、目标线速率、参考时钟来源、编码方式以及是否启用协议硬核。
本节核心判断:高速串行链路调试 = 物理通道 + 收发器配置 + 时钟架构 + 协议状态 + 误码判据。五者缺一不可,且必须按“先物理、后协议;先时钟、后数据;先单端、后差分”的顺序逐层收敛。
典型协议决定了调试的侧重点。PCIe 关注链路训练与状态机(LTSSM)是否进入 L0、均衡协商是否完成、8b/10b 或 128b/130b 编码下的符号错误率;SRIO 关注链路初始化、端口状态、CRC 与重传机制;JESD204B 关注确定性延迟、SYSREF 对齐、多通道偏斜(skew)以及 8b/10b 编码下的字符对齐;以太网则关注自协商、PCS 锁、FEC 状态以及帧错误计数。虽然协议不同,但底层调试对象高度一致:发送端信号质量、通道插入损耗、接收端均衡与 CDR 锁定、误码率(BER)以及协议层状态机。
上图把调试对象拆成五个可独立观测的层面。左侧是 Lattice FPGA 内部,从参考时钟输入开始,经过 PLL/CDR,进入 SerDes 收发器通道,最后连接到协议硬核或软核。中间是外部物理通道,包括差分走线、过孔、连接器、AC 耦合电容以及可能的线缆或背板。右侧是远端器件,它同样包含接收端均衡、CDR、协议状态机和误码统计。底部给出了推荐的调试收敛顺序,这个顺序不是随意排列的,而是由信号链的物理依赖关系决定的。
为什么必须先看参考时钟?因为 SerDes 的发送速率和接收 CDR 都锁定在参考时钟上。如果参考时钟本身抖动过大或频偏超出容限,后续所有眼图测量和误码统计都会失真。一个典型的教学示例参数是:目标线速率 5 Gbps,参考时钟 125 MHz,要求参考时钟 RMS 抖动小于 1 ps,频偏小于 ±100 ppm。如果参考时钟频偏达到 ±300 ppm,CDR 可能无法锁定,或者锁定后出现周期性滑码,表现为误码率随温度或时间漂移。
接下来是 PLL/CDR 锁定状态。Lattice 的 SerDes 通常提供锁定指示信号,例如 rx_cdr_lock 或 pll_lock。调试时应先确认这些状态位为高,再继续后续测量。如果 CDR 未锁定,眼图扫描没有意义,因为采样相位本身在漂移。此时应检查参考时钟是否送达、PLL 配置的倍频/分频比是否正确、以及收发器是否使能。
发送端信号质量是第三个观测点。Lattice 的 SerDes 通常支持可配置的预加重(pre-emphasis)和去加重(de-emphasis),以及输出摆幅调节。在 5 Gbps、FR4 走线 8 inch 的示例场景中,通道插入损耗在 2.5 GHz 处可能达到 10 dB 到 14 dB。如果发送端不加预加重,接收端眼图可能几乎闭合。调试时可以先设置一个中等预加重档位,例如 3.5 dB,然后逐步扫描,观察接收端眼高和眼宽的变化。注意,预加重过强会引入过冲和串扰,反而恶化误码率。
通道损耗评估是第四个环节。对于 Lattice FPGA 应用,通道可能包括芯片封装、PCB 走线、连接器、背板和线缆。调试时可以用矢量网络分析仪测量 S21 曲线,也可以借助 SerDes 内置的眼图监视器(Eye Monitor)进行粗略评估。一个实用的判断依据是:在目标奈奎斯特频率处,通道插入损耗不宜超过 20 dB,否则需要更强的接收端均衡或考虑降低线速率。如果通道存在明显的阻抗不连续,例如连接器处回波损耗恶化,眼图会出现明显的反射台阶。
接收端均衡与 CDR 锁定是第五个环节。Lattice 的接收端通常提供 CTLE(连续时间线性均衡)和 DFE(判决反馈均衡)。CTLE 用于补偿低频损耗,DFE 用于消除后光标干扰。调试时应先固定发送端预加重,然后扫描 CTLE 和 DFE 档位,观察误码率是否收敛。一个常见的教学示例是:在 5 Gbps、通道损耗 12 dB 的条件下,CTLE 设置为中高档、DFE 启用 3 个抽头,误码率可以从 1e-6 降到 1e-12 以下。如果误码率始终无法收敛,应回头检查参考时钟和通道损耗,而不是继续加大均衡档位。
协议状态机是第六个环节。对于 PCIe,需要观察 LTSSM 是否从 Detect 进入 Polling、Configuration,最终到达 L0。如果链路停在 Polling 或 Configuration,通常说明物理层尚未稳定,或者对端器件的均衡协商未完成。对于 JESD204B,需要观察 SYSREF 是否对齐、多通道偏斜是否在允许范围内。对于以太网,需要观察 PCS 锁和自协商状态。协议状态机的观测通常通过 Lattice 提供的调试工具或嵌入式逻辑分析仪完成。
最后是误码率判据。高速串行链路的最终验收标准通常是 BER 小于 1e-12,部分应用要求 1e-15。调试时可以使用伪随机二进制序列(PRBS)图案,例如 PRBS7、PRBS15、PRBS31,通过 SerDes 内置的 PRBS 发生器和检查器进行统计。一个实用的做法是:先跑 PRBS31 持续 1 分钟,统计误码数;如果误码数为零,再延长到 10 分钟。注意,PRBS 图案的选择会影响结果,PRBS7 对低频损耗不敏感,PRBS31 更能暴露长连零和长连一带来的基线漂移问题。
调试提示:在 Lattice FPGA 上调试高速串行链路时,建议先使用厂商提供的 IP 核和参考设计,确认参考时钟、复位和电源正常,再逐步修改均衡参数。不要一开始就同时调整发送端和接收端,否则无法判断哪个参数起了作用。每次只改一个变量,并记录误码率变化。