4. FPGA SerDes IP核配置:Xilinx GTH/GTY与Intel/Altera Transceiver IP
SerDes IP核的配置,说白了就是给高速收发器“定规矩”。你告诉它跑多快、用什么协议、怎么对齐数据。这一步要是没做好,后面调试起来会非常痛苦。我这些年调过的板子,至少有一半的问题都出在IP核配置阶段。
4.1 Xilinx GTH/GTY IP核例化
Xilinx的GTH和GTY,本质上是同一套架构。GTY能跑更高的速率,比如28Gbps以上。但配置思路完全一样。
我个人习惯用Vivado的IP Catalog来例化。你搜“GTH”或者“GTY”,会看到“GTH Transceiver”这个IP。双击打开,配置界面分好几页。
4.1.1 基本模式选择
第一页会让你选协议。这里有三个选项:
- Start from Scratch:完全手动配置。适合自定义协议。
- CPRI / JESD204B / PCIe:预设模板。我建议新手先用这个,再微调。
- Custom:半自动。你定线速率,IP帮你算参数。
我在项目中遇到过一个问题:选了PCIe模板,结果发现它默认开启了某些均衡功能,导致低速调试时信号质量反而变差。嗯,这里要注意,模板只是起点,不是终点。
4.1.2 线速率与参考时钟
线速率决定了你的SerDes能跑多快。公式很简单:
线速率 = 参考时钟频率 × PLL倍频系数
举个例子,你想跑10.3125Gbps,参考时钟用156.25MHz。那PLL倍频系数就是66。GTH内部有CPLL和QPLL两种PLL:
| PLL类型 | 适用速率 | 特点 |
|---|---|---|
| CPLL | 1Gbps ~ 6.6Gbps | 功耗低,但抖动大一点 |
| QPLL | 6.6Gbps ~ 16.3Gbps (GTH) | 抖动小,适合高速 |
4.1.3 TX与RX路径配置
这一页配置发送和接收路径。关键参数有:
- TX Buffer / RX Buffer:建议都选Bypass。除非你有特殊的相位补偿需求。
- RX Equalizer:接收均衡器。分LPM和DFE两种模式。LPM功耗低,DFE抗干扰强。
- Polarity:极性翻转。如果PCB走线把P/N接反了,这里可以软件修正。
4.2 Intel/Altera Transceiver IP配置
Intel的Transceiver IP,在Quartus里叫“Transceiver Native PHY”。配置思路和Xilinx类似,但术语不同。
4.2.1 协议预设与自定义
Intel的IP也提供了协议预设。比如PCIe Gen3、10G Ethernet、JESD204B。我个人习惯先选一个最接近的预设,然后手动改参数。
举个例子,你要做10G Ethernet,但线速率是10.3125Gbps。Intel的预设里可能只有10Gbps。那你就选“10G Ethernet”预设,然后把线速率改成10.3125。IP会自动重新计算PLL参数。
4.2.2 PLL配置
Intel的PLL分ATX PLL和fPLL两种:
| PLL类型 | 适用速率 | 特点 |
|---|---|---|
| ATX PLL | 1Gbps ~ 28Gbps | 低抖动,适合高速 |
| fPLL | 1Gbps ~ 12.5Gbps | 灵活性高,支持分数倍频 |
你想想看,如果你的参考时钟是100MHz,但线速率需要10.3125Gbps。100MHz × 103.125 = 10.3125Gbps。这个103.125不是整数,ATX PLL搞不定。这时候就得用fPLL,它支持分数倍频。
4.2.3 数据通路与字节序
Intel的IP里,数据通路分“PMA”和“PCS”两层。PMA是物理层,PCS是编码层。配置时要注意:
- PMA Width:一般选20bit或40bit。20bit对应10Gbps以下,40bit对应10Gbps以上。
- PCS Mode:选“Basic”或者“Enhanced”。Basic模式功能少,但延迟低。
- Byte Order:字节序。如果你的数据是64bit宽,但SerDes内部是20bit处理,那就需要做字节对齐。
4.3 参数设置与优化技巧
参数设置,说白了就是调眼图。眼图睁得越大,链路越稳定。我总结了几个核心技巧:
4.3.1 TX预加重与去加重
TX端的预加重,本质上是提升高频分量。因为PCB走线对高频信号的衰减更大。预加重有三个参数:
- Pre-cursor:前一个bit的幅度调整
- Cursor:当前bit的幅度
- Post-cursor:后一个bit的幅度调整
举个例子,你设Pre-cursor = -2dB,Post-cursor = -3dB。意思是前一个bit和后一个bit的幅度都比当前bit低。这样当前bit看起来就被“加重”了。
4.3.2 RX自适应均衡
RX端的均衡器,有自适应模式和手动模式。自适应模式会自动调整均衡参数,但有时候会“锁死”在错误的状态。
我建议的做法是:先用自适应模式跑一段时间,等链路稳定后,读取当前的均衡参数。然后切到手动模式,把参数固定下来。这样既利用了自适应的便利,又避免了它后续乱跳。
4.3.3 眼图扫描与误码率测试
眼图扫描是验证链路质量最直观的方法。Xilinx和Intel的IP都内置了眼图扫描功能。操作步骤:
- 让TX发送PRBS31伪随机码
- RX端开启眼图扫描模式
- 读取眼图数据,绘制眼图
眼图的关键指标:
- 眼高:至少大于200mV
- 眼宽:至少大于0.5UI
- 抖动:RMS抖动小于0.1UI
4.4 知识体系结构图
下面这张图,概括了SerDes IP核配置的核心流程。你可以把它当作一个检查清单:
这张图从平台选择开始,到最终的验证结束。每一步都环环相扣。你想想看,如果PLL配置错了,后面调均衡器再努力也没用。所以,我的建议是:按图索骥,一步一个脚印。