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内部其实挺复杂的。我画个图,大家看看。
发送端这边,并行数据先进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、预加重这些模块到底怎么工作。
可可精品资料库