第四章 FPGA中的SerDes硬核:主流厂商资源概览与选择策略
好,咱们今天聊聊FPGA里那些硬核SerDes。说实话,很多刚接触高速接口的朋友,一上来就被Xilinx的GTH、GTY,还有Intel的Transceiver给搞晕了。我当年也一样,看着芯片手册里那一堆术语,心里直打鼓。
其实说白了,这些硬核就是芯片厂家帮你预制好的高速收发器。你不需要自己用逻辑去拼凑,直接用就完事了。但问题来了——怎么选?
Xilinx的GTH与GTY:速度与功耗的博弈
先说说Xilinx这边。GTH和GTY,名字看着像,但定位完全不同。
GTH,我习惯叫它“万金油”。速率范围大概在500Mbps到16.3Gbps之间。我在一个PCIe Gen3的项目里用过它,跑8Gbps,稳得很。功耗控制也不错,适合大多数中高速场景。
GTY,这家伙就猛了。速率能飙到30Gbps以上,甚至更高。我记得有一次做100G光模块的测试,GTY跑28Gbps,眼图还开得挺好。但代价是什么?功耗大,设计难度也高。
| 特性 | GTH | GTY |
|---|---|---|
| 最大速率 | ~16.3 Gbps | ~30+ Gbps |
| 典型应用 | PCIe Gen3, SATA, 10G Ethernet | 100G Ethernet, Interlaken, CPRI |
| 功耗 | 较低 | 较高 |
| 设计复杂度 | 中等 | 高 |
Intel Transceiver:从Arria到Stratix的演进
Intel这边,我接触比较多的是Arria 10和Stratix 10的Transceiver。它们的设计思路和Xilinx不太一样。
Intel的硬核,我个人感觉在时钟管理上做得更灵活。比如,它支持独立的PLL配置,你可以让不同的通道跑不同的速率。这在一些多协议混合的场景下特别有用。
我曾经在一个项目里,需要同时处理10G Ethernet和JESD204B。用Intel的Transceiver,我只需要配置好PLL,然后给每个通道分配不同的参考时钟就行。嗯,省了不少事。
但要注意,Intel的Transceiver在预加重和均衡的调节上,参数更多。新手容易调乱。我建议你先从默认值开始,然后用眼图仪观察,一点点调。
硬核SerDes vs 软核SerDes:什么时候该用谁?
这个问题,我几乎每次培训都会被问到。我的回答很简单:能用硬核,就别用软核。
为什么?
- 性能差距:硬核是专用电路,跑10Gbps以上轻轻松松。软核用逻辑拼,跑到3Gbps就顶天了。
- 功耗差距:硬核的功耗优化是芯片厂做好的。软核?你想想看,用那么多LUT和FF去模拟一个高速收发器,功耗能低吗?
- 稳定性:硬核经过大量验证。软核?我曾经见过一个团队自己写的SerDes软核,在实验室跑得好好的,一到现场就丢包。查了三天,发现是温度变化导致时序漂了。
知识体系结构图
下面这张图,是我自己总结的SerDes选型逻辑。你可以把它当作一个决策树来看。
实际项目中的选择经验
我个人的习惯是,拿到项目需求后,先看速率和协议。如果速率超过5Gbps,我基本不考虑软核。然后看芯片资源——GTH够用就用GTH,别浪费GTY的资源。
举个例子,我之前做一个视频传输的项目,需要4路12G-SDI。Xilinx的GTH刚好能支持,我就选了Kintex-7。如果当时脑子一热选了Virtex的GTY,成本翻倍不说,功耗也压不住。
还有一点,参考时钟的设计。很多人忽略这个。硬核SerDes对参考时钟的抖动非常敏感。我曾经因为用了便宜的晶振,导致GTH的误码率一直下不来。后来换了高精度的VCXO,问题才解决。
核心要点:
- 硬核SerDes是首选,除非速率极低或成本受限
- GTH适合中高速场景,GTY适合超高速场景
- Intel Transceiver在时钟管理上更灵活
- 软核SerDes只适合1Gbps以下且对成本敏感的项目
- 参考时钟的质量直接影响SerDes性能
好了,关于SerDes硬核的概览和选择,我就说这么多。下一节我们会深入具体的配置和调试方法,到时候再聊。