FPGA 专家 01:高速收发器深水区——PMA/PCS 结构与链路裕量
本文是
fpga/专家层第 04 篇。入门使用见进阶高速收发器使用;手动源同步对齐(收发器之外的方案)见专家 03 LVDS 专题,物理信道见板级 SI。
一、收发器内部结构

二、关键机制
| 机制 | 作用 | 要点 |
|---|---|---|
| CDR | 从数据沿恢复采样时钟 | 需要跳变密度→依赖直流平衡编码;参考钟低抖动 |
| 8b/10b | 直流平衡+逗号对齐 | 开销 25%;K28.5 字节对齐;千兆/PCIe1/Aurora |
| 64b/66b | 加扰+同步头 | 开销 3%;块锁定+解扰;万兆/PCIe2+ |
| 逗号/块对齐 | 找到字节/块边界 | comma detect / block lock |
| 时钟修正 | 消化收发晶振频差 | 弹性缓冲插入/删除空闲字符 |
| 通道绑定 | 多 lane 对齐 | PCS 内对齐序列+缓冲 |
| 预加重/均衡 | 补偿信道高频损耗 | TX pre/post-cursor + RX CTLE/DFE 自适应 |
三、链路裕量工程
- 参考钟:MGTREFCLK 用低抖动晶振、走专用脚,抖动直接吃 CDR 裕量;
- 电源:MGTAVCC/MGTAVTT 独立滤波按手册去耦;
- 信道:阻抗 100Ω 差分、AC 耦合电容、少过孔、低损耗板材(高速率);
- 模拟参数:IBIS-AMI 仿真初设预加重/均衡/摆幅,板上实测眼图/浴盆曲线,目标 BER < 1e-12;
- 温压裕量:在温度边界复测,眼窗留 margin。
四、调试路径
1. 参考钟/供电 → PLL lock?
2. 复位时序按 IP 状态机
3. 近端 PMA 回环(自发自收) → 隔离本地 vs 对端/信道
4. 远端回环 → 隔离对端
5. 查状态总线: CDR lock/字节对齐/块锁定/绑定状态
6. 极性翻转、速率/编码一致性
7. 恒错查配置, 偶发错查眼窗/均衡裕量五、CDR 深论:没有随路钟,时钟从哪里“长”出来
理解收发器的第一把钥匙是理解 CDR(时钟数据恢复)为什么存在、又为什么引出了后面所有的编码和裕量问题。串行线(差分对)上只跑数据,没有单独的时钟线;接收端必须从数据波形本身恢复出一个与发送端同频同相的采样时钟。CDR 内部通常是一个高速 VCO/PI(压控振荡器或相位插值器)加相位检测器:相位检测器比较当前采样时刻与数据跳变沿的偏差,误差经环路滤波后持续调整 VCO 频率/相位,形成一个负反馈锁相环,把采样点牵引到 bit 中心。这个环路有三个工程参数必须懂:**带宽(loop bandwidth)**决定它能多快跟踪频率漂移和抖动,但带宽过高会把数据上的高频抖动也“跟”进来;阻尼决定锁定过程是过阻尼慢收敛还是欠阻尼振荡;**捕获范围(capture/tracking range)**决定它能容忍两端参考钟多大的频率差。这些参数多数 IP 给了预设档位,但在抖动大、需要展频(SSC)容忍的场合(PCIe 要求 CDR 跟踪展频时钟)要显式选对。
CDR 的根本约束是:它只能在“看得见跳变沿”时校正。长串连续相同 bit(比如连续 60 个 0)期间没有任何沿,VCO 只能靠自身稳定度自由漂移,串越长漂得越多,最终采样点可能滑出 bit 中心。所以所有高速串行编码都围绕“保证跳变密度和直流平衡”设计:8b/10b 把最长连续相同 bit 限制在 5 个、并保证 0/1 数量均衡;64b/66b 用自同步加扰把数据伪随机化,长连零概率被压到极低。参考时钟(MGTREFCLK)的作用是给 CDR 提供频率基准:参考钟的相位噪声会通过环路传递给恢复时钟,参考钟抖动直接乘以一个传递函数叠加进采样不确定度,因此高速收发器对参考钟的相噪、电源噪声和布线有远高于普通逻辑时钟的要求(见 专家 36 对时间基的讨论同源)。判断一个误码问题是否与 CDR 相关,可看它是否随长连零模式、参考钟源、环路带宽设置变化。
六、编码与对齐:8b/10b、64b/66b 与弹性缓冲
PCS 层的核心任务是在 CDR 给出的串行 bit 流上重新建立“字节/块边界”和“收发两端的节拍关系”。8b/10b 编码把每个 8 位数据字映射成 10 位码字(记为 D.x.y),同时维护运行不一致性(running disparity):发送端根据当前累积的 0/1 不平衡,在两个互补码字中选一个,使长期直流平衡。编码还定义了一组 K 控制字符,其中 K28.5 的位型(0011111010)含有一个在正常数据边界上不可能出现的逗号(comma)图案,接收端的逗号检测器一旦在串行流中发现该图案,就知道“这里是一个字符的边界”,据此调整串并转换的字相位完成字节对齐。K 字符还承担帧定界、时钟修正、空闲填充等带内控制。代价是 25% 的带宽开销。64b/66b 走另一条路:不做逐字符冗余编码,而是把 64 位数据自同步加扰(多项式使数据伪随机、保证直流平衡和跳变密度)再加上 2 位同步块头(01 或 10);接收端在比特流中搜索合法块头并验证其周期性出现来完成 block lock,开销仅 3.125%,但需要同步状态机处理失锁和块头被数据仿冒的极低概率(同步头设计使其统计上可忽略)。10G 以太网、PCIe 2.0 以后普遍采用。
时钟修正(clock correction)解决一个独立问题:即使两端晶振都是 156.25MHz,彼此也有 ±100ppm 量级的频率差,接收端恢复时钟平均频率随发送端,而本地用户逻辑用本地钟——两者速率长期看来必然有快慢,若不处理,缓冲数据会单调累积(快的一边灌满慢的一边)或被抽空。机制是在数据通路中插入一个弹性缓冲(elastic buffer),并在协议里约定可插入/删除的空闲字符或有序集:缓冲水位高于上限就删一个空闲、低于下限就插一个,净荷数据不受影响,从而把频率差转化为偶发的空闲调整。多 lane 绑定再用对齐字符让各 lane 的数据在同一节拍释放(与 专家 03 多 lane 去偏斜同思想,只是在硬核内完成)。工程上要知道:弹性缓冲有延迟(几十到上百纳秒,低延迟系统可配浅缓冲)、有时钟修正字符必须出现的最大间隔(流控设计要保证净荷不会长时间挤掉修正机会)、参考钟频差超过容忍范围(典型 ±300ppm)时缓冲会持续溢出而掉链。
七、信道补偿:预加重、CTLE/DFE 与码间干扰
高速信号经过 PCB 走线、过孔、连接器、线缆后,信道呈现明显的低通特性:频率越高损耗越大(几 dB 到二三十 dB),一个 bit 的跳变来不及在一个 UI 内完成,能量“拖尾”到相邻 bit 上,形成码间干扰(ISI),表现为眼图闭合。补偿分布在收发两端,理解每一段补偿什么,是调参的前提。发送端预加重/去加重:TX 提前知道自己要发的码流,可以在跳变后的第一个 bit 提高幅度(pre-cursor 针对前一个 bit 的拖尾、post-cursor 针对后一个),或等效地把非跳变稳态幅度压低(de-emphasis),相当于高通滤波,预补偿信道的低通;档位按信道损耗粗调。接收连续时间线性均衡(CTLE):是一个模拟高通放大器,把被衰减的高频分量整体抬回来,可调增益和零点/极点;它同时会放大高频噪声,所以增益不能盲目拉满。判决反馈均衡(DFE):在采样判决之后,根据前面已经判决出的若干 bit,计算它们对当前 bit 的拖尾并在判决点减去,属于非线性、不放大噪声的均衡,能处理更恶劣的信道,但需要收敛(自适应)且对时序要求极高,现代收发器做到了片上自适应。
调参方法论比记住旋钮更重要。第一,先仿真后上板:用收发器和信道的 IBIS-AMI 模型,在厂商工具里插入实际叠层、过孔、连接器参数,仿真 TX 档位、CTLE、DFE 组合下的眼图,得到初设值。第二,上板实测收敛:用片内眼图扫描(如眼扫描功能)读出接收端实际眼图,或用 PRBS 长测统计误码,微调参数;TX 摆幅要匹配——短链路过驱动会因非线性反而压坏眼睛,长链路摆幅不足则信噪比不够。第三,按温压矩阵选鲁棒点而不是常温最优点(这条血泪见 专题 08 案例三):在冷/常/热乘电压上下限逐点测眼,选全部工况都有余量的中心,而非常温最大眼点。第四,用浴盆曲线(bathtub)定量:在一个 UI 内逐相位采样误码率,得到两端高、中间低的浴盆,平坦底部越宽、误码越低(目标 1e-12 甚至更低),这比“看起来眼是开的”客观得多。均衡参数是与具体板卡绑定的资产,应连同速率记录在版本化的配置里(见 20 比特流烧录与四方版本一致 manifest/门禁)。
八、参考时钟、电源与复位:链路可靠的三个隐形地基
协议、均衡都调对了,链路仍可能因为这三个“基础设施”起不来或随机掉线。参考时钟架构:MGTREFCLK 必须由低相噪晶振(或经时钟缓冲/专用时钟芯片)接到专用参考时钟引脚,经 IBUFDS_GTE 类原语进 Quad 内部的参考钟网络;一个 Quad 的收发器可共享该 Quad 的参考钟,跨 Quad 用钟要走专用参考钟路由(master/slave Quad 规则),引脚规划阶段就要定,后期改线代价极大。相噪指标看 jitter(典型要求总抖动数百 fs~1ps 量级,随速率升高更严),晶振电源要 LDO 单独供电加 π 型滤波;展频时钟只在协议明确允许(PCIe)时使用,普通自定义/以太网 10G 口误开 SSC 会直接超差。多协议板上常见多个参考钟,务必确认每个 Quad 实际用的是哪一路、约束里时钟周期与实际晶振一致——错一个数量级会表现为 PLL 不锁。
收发器电源:MGTAVCC(模拟核)、MGTAVTT(发送驱动/终端)、MGTVCCAUX(辅助/PLL)是三组独立电源,数据手册对每路的纹波、上电顺序、去耦电容组合有明确要求,不能简单并入 FPGA 核心电源。纹波会直接调制发送相位、劣化 CDR;去耦电容要按手册组合大小容值并尽量靠近引脚。复位是最常见的“偶发起不来”根因:收发器复位不是一个 reset 脚拉高那么简单,IP 提供了分阶段复位/初始化状态机——参考钟必须先稳定,依次复位/等待 PLL 锁定,再释放 PMA、PCS,用户接口复位在通道初始化前后有严格顺序;复位信号要正确地跨到 init_clk/user_clk 域(IP 通常提供同步器,不要自己在用户域硬拉)。多 lane 共享 PLL 时复位顺序还要保证公共 PLL 先于各通道就绪。工程做法是直接使用厂商提供的收发器复位/初始化 wrapper,把 lock、resetdone、powergood 等状态接出做复位完成握手,并在启动序列里等待全部就绪再放行业务。把“参考钟稳定→PLL lock→PMA ready→PCS ready→channel up”当成一条必须逐级点亮的链(参考 专家 43 的上电编排思想)。
九、回环与状态码:把链路问题切成可定位的几段
高速链路 bring-up 最忌讳“两端都做好了一起上电,不通就互相猜”。收发器提供的回环(loopback)能力就是为此设计的分层隔离手段,务必从内向外逐级点亮。近端 PMA 回环(near-end PMA loopback):在并串转换之后、引脚之前把 TX 折回 RX,数据根本不出芯片;它验证本器件的 PMA、CDR、参考钟、IP 数据通路是否正常,是“先自证清白”的第一步——这一级不通,问题 100% 在本地配置/时钟/复位,与对端和 PCB 无关。近端 PCS 回环:折回点在 PCS 与 PMA 之间,验证编解码、对齐、缓冲但不经过串行化信道。远端 PMA/PCS 回环(far-end):数据出引脚、经信道到达对端后立即折回,用来验证信道和对端收发器的物理层,但不经过对端用户逻辑。逐级回环的价值是把“链路不通”切成四段:本地核(近端 PMA)、编解码(近端 PCS)、信道+对端物理层(远端)、对端用户逻辑(去掉回环跑真业务),每段只有有限的故障可能。
与回环配合的是 IP 状态/调试总线:PLL lock、CDR 锁定、收发器 resetdone、字节对齐/block lock、通道绑定完成、时钟修正状态、信号检测(signal detect)、以及 hard error/soft error 计数。bring-up 时把这些状态全部接进寄存器(见 专家 45),并熟记状态机迁移:停在等待参考钟→查时钟;PLL 不锁→查参考钟频率/电源;CDR 不锁→查极性/速率/眼窗;block 不锁→查编码一致性/极性;绑定失败→查 lane 映射/对齐字符。极性问题极常见(P/N 画反)且易修:收发器支持逐 lane 极性翻转。速率或编码两端不一致则表现为“锁定但数据全错”。恒定全错通常是配置/时钟/极性类硬问题,偶发误码、随温压出现则是眼窗/均衡/电源类裕量问题——这个二分判据能在十分钟内决定排查方向。
十、协议族映射与裕量预算:从裸收发器到真实标准
最后把收发器放回真实系统。裸 PMA/PCS 只是“管道”,各种标准协议在其上定义自己的状态机和电气要求,选型和设计时要把映射关系理清:千兆以太网/部分 SATA/Aurora 8b10b 用 8b/10b PCS;10G/25G/40G/100G 以太网、PCIe 2.0 及以后、Interlaken 用 64b/66b 或更复杂的 FEC 编码;更高的 112G/224G PAM4(趋势见 专题 07)把每个符号编码成多个电平并强依赖 FEC 纠错,对信道和均衡提出全新要求。绝大多数项目应直接使用厂商对这些协议的硬核/授权 IP(以太网 subsystem、PCIe DMA、DDR 控制器),自研通常止于轻量链路(Aurora,见 专家 05),因为协议一致性测试(如 PCIe 的 compliance、以太网的互通性)成本极高。
**裕量预算(link budget)**是把前面所有要素串成一张表的工程动作:从发送端可用眼宽眼高出发,依次减去参考钟抖动、TX ISI、信道插损(按工作频率取最坏角)、过孔/连接器/封装损耗、串扰预算、CDR 抖动、接收端要求,得到在最恶劣温压角下还剩多少眼图裕量和电压裕量;速率越高,留给实现的余量越薄,板材(中损耗 vs 超低损耗)、过孔背钻、连接器选型都由这张表反推(通道设计见 专家 42)。裕量预算在原理图前就要做,而不是布完板靠扫参数补救。一个成熟团队的高速链路验收通常包括:IBIS-AMI 仿真留余量、逐级回环点亮、PRBS 在温压矩阵下的长时误码统计(BER 1e-12 以下)、片内眼扫描留档、与至少两家对端设备的互通测试、以及现场误码计数器遥测。把这些固化进 checklist 和产线 BIST(见 专家 39),高速接口才不是“这块板运气好”,而是“每块板都被证明有余量”。
十一、抖动分解与误码率:把“眼图好不好”变成数字
高速链路可靠性最终都要落到两个量:抖动(jitter)和误码率(BER)。不会分解抖动,就只能停留在“眼看起来还行”。抖动通常分为确定性分量和随机分量。**确定性抖动(DJ)**有界、可追因:数据相关抖动(DDJ/ISI,来自前几个 bit 的拖尾,由均衡处理)、占空比失真(DCD,发送端上下沿不对称)、周期性抖动(PJ,来自开关电源、参考钟杂散、串扰耦合)、码间边界的固有偏移。**随机抖动(RJ)**无界、服从高斯分布,主要来自热噪声和半导体噪声,尾部决定极低误码率下的总抖动。总抖动按双狄拉克模型把 DJ 与 n 倍 RJ(n 由目标 BER 决定,1e-12 约需 14 倍标准差)合成,因此在 1e-9 下看着充足的眼,在 1e-12 处可能已闭合——这就是为什么短测全对不能代表量产可靠。
BER 的测量必须讲统计充分性:在固定速率下,要以一定置信度证明 BER 优于某值,需要观测的比特数大致是“目标误码数倒数除以(1−置信度)”,例如要 95% 置信证明 1e-12,约需发送 3×10^12 个 bit 且零误码,10Gbps 下要跑约五分钟,25Gbps 更快但仍不能只测几秒。浴盆曲线把一个 UI 内的采样相位从左到右扫一遍,统计每点 BER,中间平坦段越宽说明时序裕量越大;再配合垂直方向的电压扫描形成眼图轮廓,就能定量比较均衡档位。现代收发器还提供片内眼图监测/误码计数,可在部署后持续遥测(纳入 专家 45 的监控体系)。一个实战经验:常温点把参数调到眼最大并不难,真正的工程是在冷/热、电压拉偏、老化、不同对端个体组成的矩阵上都保证 BER 指标,因此选参数时宁可牺牲一点常温眼宽,换取全工况下最小裕量最大(min-over-corner 的鲁棒优化思想,案例见 专题 08 案例三)。
十二、多 lane 绑定、跨器件延迟与确定性时序
多 lane 互联在协议层有绑定机制,但系统工程师还要理解绑定之外的几个时序问题。其一是lane 间偏斜的物理来源:收发器内部各 lane 的并串转换复位相位可能不同、电源和温度导致各 lane 延迟微变、PCB 长度差引入固定偏斜;PCS 绑定用对齐序列消化这些,但有最大可补偿范围(数据手册给比特或 UI 数),超出则绑定失败,因此 PCB lane 间等长仍要满足粗等长要求,不能把全部希望交给去偏斜。其二是复位后的确定性延迟:收发器从复位到数据出现在用户接口的总延迟,取决于绑定相位、缓冲填充、对齐过程,往往每次复位都不同;对需要多通道采样严格对齐(如多通道相控阵、多 ADC 同步、JESD204 子类 1 的确定性延迟)的系统,必须使用支持确定性延迟/延迟测量的机制,记录或强制每次上电的通道延迟一致,否则后端数字波束形成、时间差测量会出错。
其三是跨时钟域与时间戳:用户接口时钟 user_clk 由核从恢复钟/线速率分频而来,与本地系统钟异步,高速数据进逻辑必须走异步 FIFO 或握手(CDC 纪律见 intermediate/42),时间戳要在确定的域打、并记录跨域时刻。其四是多芯片同步触发:多 FPGA 系统里,让所有收发器在同一时刻开始发送/采样,需要 SYSREF 类公共参考(JESD204C/同步以太网思想)加收发器内的相位对齐,单靠各板本地晶振无法做到纳秒级一致。其五是绑定宽度与失效模式:一条 4-lane 绑定中任一 lane 掉线,整条逻辑链路 down,重连后所有 lane 重新对齐,期间数据中断;设计上要决定是降级运行(用剩余 lane)还是整链重传,业务层要有序号和重放。把“绑定解决字节对齐、但不解决你的确定性延迟和系统级同步”这句话记住,可以避免在多通道精密系统里踩一类很深的坑。
十三、PAM4、FEC 与速率代际:从 NRZ 到 112G/224G 的新规则
速率进入每 lane 56G/112G/224G 后,经典 NRZ(0/1 两电平)加 CTLE/DFE 的范式正在被 PAM4(四电平,每符号 2bit)取代,理解这一代际变化有助于判断当前设计的演进方向。NRZ 每符号只有一个判决门限,PAM4 有三个,信号摆幅被分成三分之一,垂直眼高显著缩小、对噪声和非线性更敏感;换来的是相同波特率下两倍比特率,使信道带宽需求减半。PAM4 信道在 56G 以上往往已经“眼闭合”——接收端不靠均衡和纠错就无法直接判决,因此强依赖 FEC(前向纠错,如 KP4 RS(544,514)):发送端加冗余,接收端纠正一定数量的误码,把“物理层原始 BER 约 1e-6”纠正到“纠错后 1e-15”。代价是 FEC 带来确定的延迟(数百纳秒到微秒级)和突发误码特性(超过纠错能力时成块出错),这对超低延迟和需要精确丢包模型的系统是新约束(延迟敏场景见 专家 35)。
工程上要建立的新认知有三点。第一,裕量预算从“眼必须张开”变成“校正后 BER 达标”:预 FEC 误码率、FEC 纠错计数(correctable codeword 计数)成为主要健康指标,现场监控要看 FEC 计数器趋势而不只是链路 up/down。第二,均衡更复杂:PAM4 普遍需要更强的 TX FFE(多抽头前馈)+RX CTLE+DFE,甚至要 AMI 仿真与自适应算法配合,参数空间大,厂商默认值更重要、自研调参空间反而更危险。第三,系统级取舍显化:FEC 延迟、功耗、以及“纠错前可用”的链路在极端工况下可能突然越过纠错悬崖(corner where errors become uncorrectable),需要在温压角验证中关注 FEC 计数的单调性和悬崖位置。对当下仍以 10G/25G NRZ 为主的多数 FPGA 团队,这不要求立刻自研 PAM4,但选型收发器和板材时应预留代际余量(超低损耗板材、背钻、更优连接器),并理解趋势:信号完整性、纠错和协议正从“可分离的三层”变成“联合设计的整体”(技术演进见 专题 07)。保持对这一边界的敏感,能让架构决策在五年后不显陈旧。
十四、收发器 bring-up 速查表
按顺序逐条点亮:参考钟频率、相噪、引脚、Quad 归属确认;MGTAVCC/MGTAVTT/MGTVCCAUX 供电纹波与上电顺序;官方复位状态机逐级等待 PLL lock、resetdone、PMA/PCS ready;近端 PMA 回环自发自收验证本地;近端 PCS 回环验证编解码;远端回环验证信道与对端物理层;去掉回环跑真链路、读字节/块锁定与绑定状态;极性、lane 映射、速率/编码两端逐项对齐;AMI 初设均衡后按片内眼图和 PRBS 微调;冷/热×电压拉偏矩阵选最小裕量最大的鲁棒点;长时误码统计到目标 BER 的置信样本数;误码计数、FEC 计数、全部状态码纳入遥测。任何一级不亮就停在该级定位,绝不跨级猜测。
常见坑对照
| 坑 | 后果 | 正确做法 |
|---|---|---|
| 参考钟抖动大/接错脚 | CDR 不锁、误码 | 低抖动钟、专用 MGTREFCLK 脚 |
| 两端速率/编码不一致 | 无法对齐 | 参数严格一致 |
| 不调均衡直接跑 | 长线眼闭合误码 | AMI 仿真+实测眼图调参 |
| 短链路过驱动 | 眼也被打坏 | 摆幅/预加重按信道匹配 |
| 复位顺序错 | 链路偶发起不来 | 按 IP 复位状态机,看 PLL lock |
| 一上来怀疑对端 | 本地问题查半天 | 近端回环先自证 |
相关与延伸
入门:高速收发器使用(例化/Aurora);协议:PCIe、以太网。 对照方案:LVDS 源同步深水区;信道设计:板级 SI;眼图仿真深论见专家层《收发器信号完整性》。
一句话总结
Gbps 收发器分 PCS+PMA 两层:PMA 完成并串转换和 CDR——接收端没有随路钟,靠数据跳变沿恢复采样时钟,因此数据必须直流平衡(8b/10b 保证跳变密度+K28.5 逗号对齐,开销 25%;64b/66b 加扰+同步头,开销 3%);PCS 完成字节/块锁定、时钟修正(弹性缓冲消化两端晶振频差)和多 lane 通道绑定。链路能跑通靠配置,跑得可靠靠模拟裕量:低抖动 MGTREFCLK、独立 MGT 电源是前提,TX 预加重+RX 均衡(CTLE/DFE)补偿信道高频损耗,参数由 IBIS-AMI 仿真初设、板上实测眼图/浴盆曲线收敛到 BER<1e-12 并留温压裕量。调试铁律:近端 PMA 回环先自证本地(恒错查配置/时钟/极性,偶发错查眼窗裕量),再分段隔离对端和信道。