SerDes链路调试与上板验证实战 - 第4节

一、FPGA内部SerDes资源概览

做高速串行接口这么多年,我接触过不少FPGA平台。说实话,Xilinx和Intel(原Altera)这两家的SerDes资源,是咱们调试链路时必须啃下的硬骨头。

先说说Xilinx这边。7系列开始,GTP、GTX、GTH、GTY,名字看着眼花缭乱。其实规律很简单:数字越大,速率越高。GTP用在Artix上,最高也就6.6Gbps。GTX在Kintex上常见,能跑到12.5Gbps。到了GTH,Virtex和Kintex UltraScale上用,速率能到16.3Gbps甚至更高。GTY就更猛了,Virtex UltraScale+上能飙到32.75Gbps。

Intel这边呢,Arria 10和Stratix 10上的Transceiver,速率同样覆盖从1Gbps到28Gbps以上。我个人习惯把这两家的SerDes统称为「高速收发器」,因为底层原理大同小异。

核心要点:不管哪家,SerDes的本质都是把并行数据串行化发出去,再把收到的串行数据恢复成并行。这个「串-并转换」的过程,决定了链路的成败。

二、Quad与Channel概念

你打开Xilinx的文档,会看到「Quad」这个词。什么意思呢?说白了,Quad就是四个Channel(通道)组成的一个组。

每个Channel包含一个发送器(TX)和一个接收器(RX)。四个Channel共享一些公共资源,比如PLL、参考时钟缓冲器。我刚开始做项目时,以为每个Channel完全独立,结果发现共享资源用不好,四个通道全废了。

2.1 Quad的内部结构

一个典型的Quad长这样:

  • Channel 0 ~ Channel 3:四个独立的收发通道
  • QPLL(Quad PLL):给整个Quad提供高速时钟,适合多通道共享同一速率
  • CPLL(Channel PLL):每个Channel独享一个,适合通道间速率不同的场景
  • 参考时钟输入:通常每个Quad有专用的参考时钟引脚

嗯,这里要注意:QPLL和CPLL不能同时用。你选了一个,另一个就得闲着。我在项目中遇到过,有人想同时用QPLL和CPLL给不同通道,结果编译报错,查了半天才发现是资源冲突。

2.2 Channel的组成

每个Channel内部,其实就是一个完整的SerDes链路:

TX方向:FPGA逻辑 → PCS(物理编码子层) → PMA(物理介质适配层) → 串行输出
RX方向:串行输入 → PMA → PCS → FPGA逻辑

PMA负责最底层的串并转换、时钟恢复。PCS做8B/10B编码、弹性缓冲、通道绑定这些「脏活累活」。我个人习惯把PMA看成「硬核」,PCS看成「半硬核」——有些功能可以旁路掉,直接用你自己的逻辑。

避坑指南:我曾经在调试时,发现RX端一直报错。折腾了两天,最后发现是PCS的弹性缓冲深度没配够。数据跨时钟域时,缓冲满了就丢数据。所以,弹性缓冲的深度设置,一定要根据你的数据速率和时钟抖动来算。

三、参考时钟架构

参考时钟,是整个SerDes的心脏。心脏跳不稳,链路就别想跑起来。

3.1 参考时钟的来源

Xilinx和Intel的参考时钟架构,其实思路差不多:

  • 专用参考时钟引脚:每个Quad有专用的差分时钟输入,比如MGTREFCLK0P/N、MGTREFCLK1P/N
  • 全局时钟网络:可以用FPGA内部的全局时钟,但噪声大,我不推荐
  • 外部时钟芯片:比如Si5345、LMK04828,给多个Quad提供同源时钟

你想想看,如果四个Quad用的参考时钟不同源,那它们之间的数据交互就会出问题。跨时钟域处理不好,数据就乱了。

3.2 时钟分配策略

我总结了一套实用的分配策略:

场景 推荐方案 原因
单通道低速(≤6.6Gbps) CPLL + 专用参考时钟 简单、功耗低
多通道同速率(≥10Gbps) QPLL + 共享参考时钟 减少PLL数量,降低抖动
多通道不同速率 每个Channel独立CPLL 灵活配置
跨Quad同步 外部时钟芯片分发同源时钟 保证所有Quad时钟同源

警告:参考时钟的抖动,直接影响SerDes的误码率。我曾经用示波器看过,一个抖动大的时钟,眼图直接闭合了。所以,时钟源的质量一定要把关。差分时钟的走线,也要等长、包地,别跟其他高速信号靠太近。

3.3 时钟频率的选择

参考时钟的频率,跟数据速率直接相关。举个例子:

  • 10Gbps的链路,如果用20位内部总线,参考时钟就是10Gbps / 20 = 500MHz
  • 如果PLL内部有倍频,参考时钟可以更低,比如125MHz

我个人习惯选125MHz或156.25MHz,因为这两个频率在以太网和光模块里很常见。你想想看,如果选了个冷门频率,以后换模块或者换板子,时钟源都不好找。

四、知识体系结构图

下面这张图,是我梳理的本章核心逻辑。你看一眼,就能明白SerDes资源、Quad/Channel、参考时钟之间的关系。

FPGA内部SerDes资源知识体系 FPGA SerDes平台 Xilinx GTH/GTY Intel Transceiver Quad(四通道组) Channel 0 | Channel 1 | Channel 2 | Channel 3 参考时钟架构(QPLL / CPLL / 外部时钟) 核心逻辑:平台 → 厂商 → Quad → Channel → 时钟

这张图从顶层到底层,把SerDes资源的关系理清了。你调试时,遇到问题就按这个层次去排查:先看平台,再看Quad,然后看Channel,最后查时钟。

总结一下:SerDes调试,说白了就是跟这三个东西打交道——资源选型、通道配置、时钟设计。把这三点吃透了,上板验证时心里就有底了。

可可精品资料库