硅
在 FPGA 直驱 25G NRZ 光模块的板卡上,CDR 失锁是常见问题,尤其在高低温切换时更明显。这里整理 CDR 原理、参数和排查思路。
一、背景
25G 链路中,FPGA GTY/GTH 收发器内部集成 CDR,从接收数据中恢复时钟。25GBASE-SR/LR 光模块一般自带 CDR(可旁路),SFP28 模块的 CDR 与 FPGA 内部 CDR 级联时需要合理配置。
二、关键参数
1. CDR 环路带宽:太宽会把输入抖动传递下去,太窄跟踪不了低频漂移。典型值约为波特率的 1/1667(以太网规范中抖动容限转折频率约 15MHz 量级);
2. 参考时钟:频偏需满足 ±100ppm,抖动越低越好,建议 RMS <0.3ps;
3. 均衡:CTLE 与 DFE 自适应开启,长通道需要 DFE;LPM 模式适合短通道和光模块;
4. 光模块自身 CDR:确认模块 CDR 是否在 25.78Gbps 速率下锁定,可通过 CMIS/SFF 寄存器读取 LOL 状态。
三、排查步骤
1. 读模块 DDM:确认接收光功率在灵敏度和过载点之间,留 ≥3dB 余量;
2. 用 IBERT 扫描眼图,记录常温与高低温下的眼宽、眼高;
3. 检查参考时钟在温度变化下的频偏与抖动;
4. 检查电源噪声,GT 电源纹波一般要求 <10mV;
5. 对比 DFE 与 LPM 两种均衡模式;
6. 确认链路两端的极性和 PRBS 码型一致。
四、常见坑
1. 高温下光模块发射功率下降,接收端余量不足;
2. 参考时钟晶振温漂大,接近 ppm 容限;
3. 自适应均衡在温度变化后未重新收敛,需定期复位或开启持续自适应。
讨论:
1. 你们的 25G 项目中 CDR 环路带宽一般如何设置?
2. 锁定检测你们用 FPGA 内部状态还是模块 LOL 信号?
一、背景
25G 链路中,FPGA GTY/GTH 收发器内部集成 CDR,从接收数据中恢复时钟。25GBASE-SR/LR 光模块一般自带 CDR(可旁路),SFP28 模块的 CDR 与 FPGA 内部 CDR 级联时需要合理配置。
二、关键参数
1. CDR 环路带宽:太宽会把输入抖动传递下去,太窄跟踪不了低频漂移。典型值约为波特率的 1/1667(以太网规范中抖动容限转折频率约 15MHz 量级);
2. 参考时钟:频偏需满足 ±100ppm,抖动越低越好,建议 RMS <0.3ps;
3. 均衡:CTLE 与 DFE 自适应开启,长通道需要 DFE;LPM 模式适合短通道和光模块;
4. 光模块自身 CDR:确认模块 CDR 是否在 25.78Gbps 速率下锁定,可通过 CMIS/SFF 寄存器读取 LOL 状态。
三、排查步骤
1. 读模块 DDM:确认接收光功率在灵敏度和过载点之间,留 ≥3dB 余量;
2. 用 IBERT 扫描眼图,记录常温与高低温下的眼宽、眼高;
3. 检查参考时钟在温度变化下的频偏与抖动;
4. 检查电源噪声,GT 电源纹波一般要求 <10mV;
5. 对比 DFE 与 LPM 两种均衡模式;
6. 确认链路两端的极性和 PRBS 码型一致。
四、常见坑
1. 高温下光模块发射功率下降,接收端余量不足;
2. 参考时钟晶振温漂大,接近 ppm 容限;
3. 自适应均衡在温度变化后未重新收敛,需定期复位或开启持续自适应。
讨论:
1. 你们的 25G 项目中 CDR 环路带宽一般如何设置?
2. 锁定检测你们用 FPGA 内部状态还是模块 LOL 信号?

