1. SerDes技术概述:什么是SerDes、发展历程与FPGA应用场景

1.1 什么是SerDes?

SerDes,全称Serializer/Deserializer,说白了就是串行器/解串器。它的核心任务就两个:发送端把并行数据转成串行数据,接收端再把串行数据恢复成并行数据。

为什么要这么折腾?你想想看,传统的并行总线,比如早期的PCI、DDR内存接口,数据线动辄几十根甚至上百根。随着速率往上提,信号之间的串扰、时钟偏斜这些问题会让你头疼到睡不着觉。我当年调试一个并行ADC接口,32根数据线加时钟,光是对齐时序就花了两周。

SerDes的出现,本质上是用时间换空间。一根差分线(或者一对)就能搞定高速数据传输。举个例子,一个10Gbps的SerDes链路,只需要一对差分线,而如果用并行方式,哪怕32位宽,每根线也得跑312.5MHz,而且还得考虑时钟同步问题。

核心要点:SerDes不是简单的串并转换,它内部集成了时钟数据恢复(CDR)、线路编码(如8B/10B、64B/66B)、预加重/均衡等关键技术。没有这些,高速串行传输根本跑不起来。

1.2 SerDes的发展历程

SerDes的发展,其实就是一部速率与距离的博弈史

年代 典型速率 代表技术 我的感受
1990s 1-2.5 Gbps LVDS、8B/10B编码 那时候能跑1Gbps就算高手了
2000s 3.125-6.25 Gbps Xilinx RocketIO、Altera高速收发器 我开始接触SerDes就是在这个阶段
2010s 10-28 Gbps GTY、GTH、PAM4调制 信号完整性成了最大挑战
2020s 56-112 Gbps PAM4、DSP-based CDR 现在做SerDes,更像是在做射频

早期SerDes主要用在通信设备里,比如SONET/SDH。后来随着FPGA集成度越来越高,Xilinx和Altera(现Intel)开始把高速收发器直接塞进芯片里。我记得2008年第一次用Virtex-5的RocketIO,跑3.125Gbps,光是看眼图就看了好几天。

到了2010年代,10Gbps以上的SerDes开始普及。这时候问题来了——信号在PCB上走几英寸,损耗就大得吓人。于是预加重、CTLE、DFE这些均衡技术成了标配。我有个项目,28Gbps的链路,板子走线才8英寸,不加均衡根本睁不开眼。

最近几年,PAM4调制成了主流。为什么?因为NRZ(不归零码)在28Gbps以上,信噪比已经撑不住了。PAM4用4个电平,相当于把速率翻倍,但对噪声和线性度的要求也更高了。

个人经验:如果你刚开始接触SerDes,建议从10Gbps以下的速率入手。先学会看眼图、调预加重,再挑战高速率。我曾经带过一个新人,上来就调28Gbps,结果折腾了一个月,最后发现是电源纹波的问题。

1.3 SerDes在FPGA中的应用场景

FPGA里的SerDes,说白了就是硬核IP。它不是用逻辑资源搭出来的,而是芯片内部专门划出一块区域,放了一组高速收发器。以Xilinx为例,从7系列到UltraScale+,收发器从GTP、GTX、GTH到GTY,速率和功能逐级提升。

应用场景,我归纳为三大类:

1.3.1 高速数据采集与传输

这是最常见的场景。ADC/DAC通过JESD204B接口与FPGA连接,速率动辄10Gbps以上。我做过一个雷达信号处理的项目,4片ADC,每片输出12.5Gbps的JESD204B数据,FPGA这边用4个GTH收发器接收。嗯,这里要注意,JESD204B的同步机制比较复杂,链路建立过程一定要仔细调试。

1.3.2 网络与通信

从100M以太网到400G光模块,SerDes是物理层的基础。FPGA里常见的协议包括:

  • PCIe:从Gen1到Gen5,速率从2.5Gbps到32Gbps每通道
  • Ethernet:10G/25G/40G/100G MAC与PCS层
  • CPRI/OBSAI:无线基站前传接口

我建议初学者先从Ethernet入手,因为协议成熟,调试工具也多。用FPGA搭一个10G Ethernet的MAC+PCS,跑通之后,你对SerDes的理解会上一个台阶。

1.3.3 背板与芯片间互联

多片FPGA之间、FPGA与ASIC之间,通过SerDes互联。常用的协议有Interlaken、Aurora等。Aurora是Xilinx的轻量级协议,适合自定义应用。我曾经用Aurora在4片FPGA之间搭了一个环形拓扑,每路12.5Gbps,总带宽50Gbps,用来做实时图像拼接。

避坑指南:我曾经犯过一个低级错误——SerDes的参考时钟没处理好。收发器对时钟抖动非常敏感,哪怕几十ps的抖动,都可能让误码率飙升。记住:参考时钟的电源要单独滤波,走线要远离其他高速信号。

1.4 SerDes的核心知识体系

下面这张图,是我自己总结的SerDes知识体系。搞懂这些,你就能应对大部分项目了。

SerDes 核心知识体系 物理层 (PHY) • 差分信号 (CML/PECL) • 预加重/去加重 • CTLE/DFE均衡 • 阻抗匹配 时钟与数据恢复 (CDR) • PLL/DLL架构 • 相位插值器 • 时钟抖动分析 • 参考时钟设计 编码与协议层 • 8B/10B, 64B/66B • CRC/FEC校验 • 链路训练与协商 • 协议适配 (PCIe/ETH) 测试与调试 • 眼图分析 • 误码率测试 (BERT) • 抖动分解 • 扫描链调试 PCB与信号完整性 • 阻抗控制 (50/100Ω) • 过孔与走线优化 • 电源完整性 • 仿真与实测对比 掌握这五大块,SerDes项目基本能搞定

1.5 我的学习建议

如果你刚开始学SerDes,别急着看那些复杂的协议文档。我的建议是:

  1. 先动手,后理论:找一块带高速收发器的FPGA开发板,跑一个简单的Loopback例程。看到数据发出去又收回来,比看十页文档都有用。
  2. 学会看眼图:眼图是SerDes的X光片。会看眼图,你就知道信号质量好不好,均衡够不够,抖动大不大。
  3. 重视电源和时钟:我见过太多项目,SerDes调不通,最后发现是电源纹波太大或者参考时钟抖动超标。这两块是基础中的基础。
  4. 别怕误码率:SerDes链路不可能零误码,关键是要知道你的系统能容忍多少。比如视频传输,10^-12的误码率基本看不出来,但金融交易数据可能要求10^-15。

一个小技巧:调试SerDes时,先用低速(比如1Gbps)把链路打通,确认物理连接没问题,再逐步提高速率。这样能快速定位问题是出在硬件还是协议层。

好了,这一章就到这里。SerDes的世界很大,但核心概念其实就这些。后面我们会深入每个技术细节,从CDR原理到PCB设计,从眼图分析到协议调试。嗯,慢慢来,不着急。


公众号:蓝海资料掘金营,微信deep3321