5.1 高速串行收发器:SerDes


5.1 高速串行收发器:SerDes

本节摘要:SerDes(Serializer/Deserializer)是 FPGA 芯片边缘的高速串行收发器,一对差分线就能跑到数 Gbps。本节先讲清"并行转串行"的历史必然(信号完整性的账),再拆解收发器的内部链路(PCS/PMA 分层、时钟数据恢复、均衡),最后用一个回环测试带你走完例化、配置、验证的完整流程。

一组数字逼出的转型

1980 年代的电脑主板靠并行总线连接外设:一根 8 位或 16 位的扁平排线,几十根线并排跑。当时这没问题,因为频率低——几兆赫兹,线长一点也没关系。但工程需求把频率一路推高,问题爆发:并行总线每根线的走线长度做不到完全一致,数据到达时间的偏差(偏斜)随频率升高越来越致命;十几根线同时翻转,线间串扰成倍放大;每根线都是信号完整性战场。到了 1 Gbps 以上,并行方案在板级几乎无解。

产业给出的答案是串行化:数据拆成一比特一比特,在两根差分线上串行传输,接收端再拼回并行。看似"倒退"——线变少了、速度却更高了?秘密在于差分对:两根线互为参考,抗共模干扰强,配合精心设计的信号完整性方案,单对线轻松跑到数 Gbps。今天的 PCIe 用一对对差分线,以太网的光口、USB 的高速模式,全是这条思路。FPGA 边缘的高速串行收发器 SerDes,就是为干这个准备的硬核模块。

SerDes 内部长什么样

一个 SerDes 通道从功能上分两半:PMA(物理介质子层,管"模拟")和 PCS(物理编码子层,管"数字")。发射方向:并行数据进 PCS 做编码(如 8B/10B,把 8 位编码成 10 位保证直流平衡和时钟信息),进 PMA 串行化,变成差分信号打出去。接收方向反向:差分信号进来,PMA 里做时钟数据恢复(CDR)和均衡,把比特流恢复出来,PCS 解码还原并行数据。

SerDes 收发链路示意

SerDes 收发链路示意

图里三个环节值得展开:编码CDR均衡

三个关键机制

编码(8B/10B)。为什么不让原始数据直接走差分线?两个原因:一是长串连续相同的比特(比如一连串 0)会让接收端没有跳变沿,时钟恢复无从谈起;二是直流分量不平衡会伤及接收灵敏度。8B/10B 把 8 位数据编码成 10 位码流,保证跳变足够密、直流基本平衡。代价是 20% 的带宽开销——这是"跑得快"必须交的税。

时钟数据恢复(CDR)。串行传输没有专门的时钟线,接收端必须从数据流本身提取采样时钟。CDR 电路盯着数据跳变沿,用锁相环把本地振荡频率"锁"到数据速率上,再找到最佳采样点。这也是为什么 SerDes 需要一段训练序列(特定的空闲模式)才能进入稳定接收——链路初始化时,接收端正是在这段序列上"对表"。

均衡(EQ)。信号在 PCB 走线上高频分量衰减比低频严重,长走线、高频率下波形"变糊"。均衡器在接收端做反补偿:把衰减的高频分量拉回来,让眼图重新张开。眼图(把多次采样波形叠加显示的图形)张开程度就是链路质量的直观度量——工程上"跑不跑得动这条链路",先看眼图。

回环测试:上板第一步

拿到带 SerDes 的板子,第一个实验永远是回环测试(把 TX 的输出接回 RX 的输入,逻辑域里自发自收),确认收发链路活着。一个最小流程:

1. 例化收发器 IP,选器件与通道 2. 配置链路速率(如 3.125 Gbps)与协议模式(裸串行或带编码) 3. 发送侧:逻辑域生成递增计数数据 4. 接收侧:校验收到的数据是否连续递增 5. 先做"近端回环"(芯片内部 TX 直连 RX),再做"板上回环"(走实际差分线)

回环测试的价值在于分层定位:近端回环过了,说明逻辑和收发器配置对;板上回环过了,说明走线和引脚对。哪一环不过,问题就锁定在哪一层——这个分层思想是高速接口调试的基本功。

收发器配置时的常见取舍

决策点 选项 适用
裸串行 vs 编码 裸(省开销) / 8B/10B(稳) 短距可裸,远距与协议建议编码
参考时钟来源 板上专用晶振 / 复用 PLL 速率精确性要求高时用专用晶振
预加重/均衡强度 多档可调 走线长、速率高时调强
协议栈 裸 SerDes / IP 核(PCIe、以太网) 复杂协议直接用现成 IP

一次回环测试的完整记录

把"配置链路、跑回环、看结果"的实操过程写下来,帮你第一次做时少踩坑。

背景:新板子到手,带一个 SerDes 通道,目标速率 3.125Gbps,用途是接光模块。第一步验证链路的正确性,选择最朴素的近端回环:芯片内部把 TX 输出直接接回 RX 输入。

操作:例化收发器 IP,按板卡原理图配置参考时钟(一颗 125MHz 专用晶振)、通道位置和速率。发送侧产生递增计数数据流,接收侧校验连续性。先跑近端回环——结果:链路锁定失败,CDR 一直报未锁定。

结果:排查第一步查参考时钟:用示波器确认 125MHz 波形正常;第二步查 IP 配置:发现把速率参数里的"线路速率"填成了"数据速率",两者差着 8B/10B 编码的系数,实际线路速率设低了 20%。改对参数重新上电,链路锁定,回环数据校验全对。

解读:这次小事故说明 SerDes 调试的两条铁律:先确认参考时钟物理正常,再怀疑配置;配置参数要逐项核对单位与含义。"线路速率"和"数据速率"差一个编码系数,是收发器配置里最高发的错误之一。

变式:近端回环过了之后,下一步是板上回环(从芯片引脚引出、走实际 PCB 走线再返回),再下一步是接真实光模块做远端回环。每一级回环都是独立验证一层——逻辑层、芯片内部、板级走线、外部器件,哪层不过就修哪层,这是高速接口调试的标准分层法。

⚠️ 常见坑:把 SerDes 的参考时钟随便接一颗精度不够的晶振。CDR 恢复出的速率精度依赖参考时钟,偏差超过容许范围,链路时通时断——先查参考时钟规格,再怀疑其他环节。

本节要点回顾

  • 并行输给串行:偏斜与串扰在 GHz 级无解,差分串行才是高速正道。
  • PCS 管数字、PMA 管模拟:编码在 PCS,串并转换与模拟处理在 PMA。
  • CDR 从数据里抠时钟:没有独立时钟线,编码保证跳变密度是前提。
  • 均衡拉回高频:走线衰减高频,均衡器让眼图重新张开。
  • 回环测试分层定位:近端回环验逻辑,板上回环验走线,一步一层。
  • 参考时钟要稳:CDR 精度依赖参考时钟,选错晶振链路就不稳。

下一步进入 5.2:数据能送出芯片了,但量大时往哪存?DDR 外部存储接口登场。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U