1. 高速收发器概述:什么是高速收发器(SerDes)

大家好,我是你们的FPGA讲师。今天咱们聊聊高速收发器,也就是SerDes。

SerDes是Serializer/Deserializer的缩写。说白了,就是把并行数据转成串行数据发出去,再把收到的串行数据转回并行。为什么要这么折腾?因为串行传输能跑得更高更快。

我刚开始接触FPGA时,总觉得SerDes是个黑盒子。后来做了几个项目才明白,它其实就是FPGA内部的高速串行接口模块。Xilinx叫它GTP、GTX、GTH,Altera叫它Transceiver。名字不同,本质一样。

为什么需要高速收发器

你想想看,传统的并行接口,比如LVDS,跑个几百MHz就差不多了。再往上提,信号完整性就成了噩梦。我有个项目,用并行总线传数据,板子布线都快疯了,最后还是跑不到1Gbps。

SerDes就不一样。它用差分信号,抗干扰能力强。而且串行传输没有skew问题,时钟恢复也简单。现在主流SerDes都能跑到10Gbps以上,高端器件甚至能到56Gbps、112Gbps。

核心优势:

  • 高带宽:单通道就能到几十Gbps
  • 低功耗:相比并行接口,功耗更低
  • 少引脚:一对差分线就能传高速数据
  • 抗干扰:差分信号天然抑制共模噪声

FPGA中高速收发器的典型应用场景

我在实际项目中用过不少SerDes的应用。这里挑几个典型的说说。

PCIe

PCIe是SerDes最经典的应用之一。FPGA做PCIe从设备,跟CPU通信,数据吞吐量巨大。我记得有个数据采集项目,用PCIe Gen3 x8,实测带宽接近64Gbps。要是没有SerDes,根本不可能。

SATA

SATA接口也依赖SerDes。FPGA做存储控制器,直接接SSD或者硬盘。我做过一个SATA控制器,用FPGA的GTP收发器,跑6Gbps的SATA III,读写速度都能跑满。

10G Ethernet

10G以太网是另一个典型场景。FPGA做网络处理器,接光模块或者RJ45。10GBASE-R、10GBASE-KR这些标准,底层都是SerDes。我调试10G以太网时,最头疼的就是眼图测试。信号质量不好,误码率就上去了。

个人经验:调试SerDes时,先看眼图,再看误码率。眼图张开度不够,后面怎么调都没用。我曾经花了两周时间调一个10G链路,最后发现是电源纹波太大。嗯,电源设计一定要重视。

SerDes的内部结构

SerDes内部其实挺复杂的。我画个图,大家看看。

SerDes内部结构框图 并行数据输入 Serializer PLL TX RX CDR Deserializer 并行数据输出 串行通道 发送端:并行→串行→PLL时钟合成→差分输出 接收端:差分输入→CDR时钟恢复→串行→并行

发送端这边,并行数据先进Serializer,在PLL提供的时钟下转成串行,最后通过TX差分对发出去。接收端反过来,RX差分对收到信号,CDR恢复出时钟,Deserializer再把串行转回并行。

注意事项:CDR(时钟数据恢复)是SerDes最关键的模块。它要从数据流里提取时钟,对信号质量要求很高。我曾经遇到过CDR锁不住的情况,最后发现是参考时钟抖动太大。所以,SerDes的参考时钟一定要用低抖动的晶振。

SerDes的关键参数

参数 说明 典型值
数据速率 每通道的串行传输速率 1Gbps ~ 112Gbps
通道数 FPGA内部集成的SerDes数量 4 ~ 128
参考时钟 PLL和CDR需要的时钟源 100MHz ~ 625MHz
预加重 发送端补偿高频损耗 0 ~ 12dB
均衡 接收端补偿信道损耗 0 ~ 20dB

这些参数在实际项目中都要仔细考虑。比如数据速率,决定了你能跑多快。通道数,决定了你能接多少路。预加重和均衡,决定了信号质量。

我的建议:选型时,SerDes的速率要留20%的余量。比如你需要跑10Gbps,最好选能支持12.5Gbps的器件。为什么?因为实际链路会有损耗,留点余量好调试。我吃过这个亏,选了个刚好够用的,结果板子一长,信号就上不去了。

小结

高速收发器SerDes,是FPGA实现高速通信的核心。它把并行转串行,用差分信号传出去,再收回来转回并行。PCIe、SATA、10G以太网,这些高速接口都离不开它。

理解SerDes的内部结构,掌握关键参数,是后续深入学习的基础。下一章,我们会深入SerDes的物理层,看看PLL、CDR、预加重这些模块到底怎么工作。

可可精品资料库