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知识体系。搞懂这些,你就能应对大部分项目了。
1.5 我的学习建议
如果你刚开始学SerDes,别急着看那些复杂的协议文档。我的建议是:
- 先动手,后理论:找一块带高速收发器的FPGA开发板,跑一个简单的Loopback例程。看到数据发出去又收回来,比看十页文档都有用。
- 学会看眼图:眼图是SerDes的X光片。会看眼图,你就知道信号质量好不好,均衡够不够,抖动大不大。
- 重视电源和时钟:我见过太多项目,SerDes调不通,最后发现是电源纹波太大或者参考时钟抖动超标。这两块是基础中的基础。
- 别怕误码率:SerDes链路不可能零误码,关键是要知道你的系统能容忍多少。比如视频传输,10^-12的误码率基本看不出来,但金融交易数据可能要求10^-15。
一个小技巧:调试SerDes时,先用低速(比如1Gbps)把链路打通,确认物理连接没问题,再逐步提高速率。这样能快速定位问题是出在硬件还是协议层。
好了,这一章就到这里。SerDes的世界很大,但核心概念其实就这些。后面我们会深入每个技术细节,从CDR原理到PCB设计,从眼图分析到协议调试。嗯,慢慢来,不着急。
公众号:蓝海资料掘金营,微信deep3321