1、高速收发器概述:什么是SerDes、为什么需要高速收发器、典型应用场景
各位同学,欢迎来到《从零搭建FPGA高速收发器》的第一章。
说实话,每次带新人做项目,我第一个要问的问题就是:你搞懂SerDes了吗? 很多人一上来就调参数、配IP核,结果板子调通了也不知道为什么通,出了问题更是一头雾水。今天咱们就把这个基础打牢。
1.1 什么是SerDes?
SerDes,全称Serializer/Deserializer,中文叫串化器/解串器。说白了,它就是把并行数据转成串行数据发出去,再把收到的串行数据转回并行。
你可能会问:为什么非要这么折腾?
我举个例子。假设你要传32位数据,用传统并行方式,至少需要32根数据线加1根时钟线。如果频率是100MHz,这些线之间的等长、串扰、时序问题,够你喝一壶的。我在一个老项目中就吃过这个亏——并行总线长了,信号质量惨不忍睹。
SerDes的做法是:把32位数据串成一串,用一对差分线传出去。线少了,干扰小了,频率还能跑得更高。这就是它的核心价值。
核心要点:
- 发送端:并行数据 → 串行数据(Serializer)
- 接收端:串行数据 → 并行数据(Deserializer)
- 传输介质:一对差分线(P/N)
- 关键技术:时钟恢复(CDR)、均衡(Equalization)、编码(8B/10B、64B/66B等)
1.2 为什么需要高速收发器?
这个问题其实可以反过来问:不用高速收发器,行不行?
行,但仅限于低速场合。比如你控制个LED、读个按键,GPIO就够了。但一旦涉及到高速数据传输,传统并行接口的瓶颈就暴露无遗:
- 引脚数量爆炸:32位并行总线至少33根线,64位就是65根。FPGA的引脚是有限的,你想想看,一个BGA封装才几百个球,光数据线就占掉一大半,其他功能还怎么放?
- 时序收敛困难:并行总线要求所有数据线同时到达接收端。频率一高,PCB走线等长要求就极其苛刻。我记得有个项目,为了等长一组DDR3的数据线,layout工程师改了整整一周。
- 功耗和EMI问题:同时翻转32个IO,瞬间电流冲击很大,EMI辐射也严重。而SerDes用差分信号,共模抑制好,电磁干扰小得多。
- 传输距离受限:并行总线通常只能走几厘米到几十厘米。而SerDes配合合适的线缆或光纤,可以传几米甚至几十公里。
我的经验: 判断一个项目要不要用高速收发器,就看两点:速率超过1Gbps 或者 传输距离超过30cm。满足任意一条,就别犹豫了。
1.3 典型应用场景
高速收发器不是凭空造出来的,它是被实际需求逼出来的。下面这几个场景,我敢说你迟早会遇到。
1.3.1 PCIe(Peripheral Component Interconnect Express)
PCIe是目前最主流的板级互联总线。从显卡到SSD,从网卡到采集卡,几乎都在用。
它的物理层就是基于SerDes的。PCIe Gen3单通道速率8Gbps,Gen4是16Gbps,Gen5到了32Gbps。你想想看,没有高速收发器,这些速率根本不可能实现。
在FPGA里实现PCIe,通常有两种方式:
- 用硬核IP:Xilinx的Integrated Block for PCIe,或者Intel的Hard IP for PCIe。性能好,但灵活性差。
- 用软核IP + 高速收发器:自己写控制逻辑,灵活性高,但开发难度大。
我个人习惯是:能用硬核就用硬核。PCIe的协议栈太复杂了,自己写容易出bug。我曾经在一个项目里尝试自己实现PCIe的TLP层,结果调试了两个月才稳定下来。
1.3.2 SATA(Serial ATA)
SATA是硬盘接口标准。从SATA 1.0的1.5Gbps到SATA 3.0的6Gbps,物理层同样是SerDes。
在FPGA里做SATA控制器,通常用于数据记录仪或者存储系统。比如你做一个高速数据采集卡,采集到的数据需要实时存到SSD里,这时候就需要在FPGA里实现SATA主机控制器。
嗯,这里要注意:SATA的物理层和链路层协议比PCIe简单得多。如果你只是想练手,从SATA开始是个不错的选择。
1.3.3 Ethernet(以太网)
以太网可能是大家最熟悉的。从百兆、千兆到万兆,再到25G、100G,物理层全是SerDes。
在FPGA里实现以太网,通常用到:
- GMII/RGMII接口:用于千兆以太网,速率1Gbps
- XGMII接口:用于万兆以太网,速率10Gbps
- 25G/100G Ethernet:用于数据中心,速率25Gbps以上
我做过一个项目,需要在FPGA里实现40G以太网。当时用了4个10Gbps的高速收发器通道,配合Xilinx的40G Ethernet IP核。调试过程中遇到的最大问题是PCS层的对齐状态机——一旦出现误码,状态机就卡死了。后来我加了一个看门狗定时器,定期复位状态机,问题才解决。
避坑指南: 我曾经在一个万兆以太网项目中,因为PCB走线阻抗控制不好,导致信号反射严重,眼图完全闭合。后来换了更好的板材,并严格控制差分阻抗到100Ω±10%,问题才解决。所以,高速设计,PCB是关键。
1.4 小结
这一章我们讲了三个核心问题:
- SerDes是什么:串化器/解串器,把并行转串行,用差分线传输
- 为什么需要它:解决并行总线的引脚、时序、功耗、距离问题
- 典型应用:PCIe、SATA、Ethernet,每个都是SerDes的经典案例
下一章,我们会深入高速收发器的内部架构,看看它到底是怎么工作的。到时候我会拿一个实际项目的波形图来讲解,保证让你看得明明白白。
课后思考: 如果你现在要设计一个10Gbps的数据传输链路,你会选择哪种接口?为什么?欢迎在评论区留言讨论。