
简介由IBM多位资深工程师撰写、Springer出版的高速SerDes英文教材面向芯片与硬件接口设计人员、通信及微电子专业学生以及需要补齐高速串行链路知识的中高级读者。内容从并行转串行、串行转并行的基本架构讲起系统梳理8B/10B与64B/66B编码、时钟恢复与PLL/CDR、差分信号与阻抗匹配、前向纠错等关键环节并结合信号完整性中的反射、串扰、损耗问题讨论高速链路的设计取舍还涉及功耗管理与多标准兼容性等工程挑战。压缩包内为1个PDF文件约10.89MB便于在电脑或平板上检索查阅。已有918人学习可作为SerDes入门到进阶的案头参考也可对照IBM高速SerDes器件的应用案例理解理论落地方式。1. 从并行总线到串行链路SerDes 知识地图的五层结构芯片之间搬数据最直觉的做法是拉一根 n 位宽的并行总线、两边同源时钟。卡点不在逻辑而在封装片上电路按摩尔定律翻倍引脚密度没跟上高集成度芯片的输入输出于是几乎都交给了高速 SerDes。放到硬件接口协议这条线上它不是一个协议而是所有高速协议的公共底座。一张知识地图大约五层器件层是发送切片、接收切片与 PLL协议逻辑层管编码、加扰、对齐与多链路去偏斜标准层是 SONET/SDH、以太网、光纤通道、PCIe约束层是参考时钟、信号完整性与功耗落地层是测试诊断与芯片集成。数字逻辑出身的人最容易把 HSS 当成复杂 IO cell漏掉的恰恰是后两层。这份教材按十章铺开这五层适合做集成、也适合复习接口协议时当主线。2. HSS 核内三块拼图发送切片、接收切片与 PLL 的分工一个高速 SerDes 核看着复杂拆开只有三块发送切片把并行数据推成差分串行流接收切片从串行流里把时钟和数据一起捞出来PLL 切片给两边提供干净的时钟。教材拿一个 10 Gbps 的教学核当例子把这三块的引脚、寄存器、特性一条条列出来再往下讲架构实现。复习时建议顺序反过来先看每块对外暴露什么可编程项再看这些项为什么会存在最后才回到电路细节。这样遇到没见过的新器件也能靠“可编程项清单”快速对上号。2.1 发送切片并行数据怎么变成差分串行流发送侧的数据通路很短并行数据先进接口寄存器再经并串转换serializer移出被前馈均衡FFE改形最后由差分驱动器推上线。真正需要设计者操心的不是通路而是通路上的四五个可编程旋钮。FFE 的本质是预加重信道是低通高频分量掉得快发送端就故意把跳变沿做陡、把长连 0/长连 1 的幅度压低让信号到达接收端时眼图重新张开。抽头分前游标与后游标改抽头等于改“补偿哪一段记忆”抽头给多了会自己制造过冲给少了高频补偿不够眼高上不去。驱动器侧还有幅度与共模的取舍摆幅加大能换眼高但功耗和电磁辐射一起涨摆幅压小省电接收端 CDR 又难锁。速率模式是另一个容易被低估的旋钮——全速率、半速率、四分之一速率、八分之一速率对应切片内部时钟与线速率的不同比例关系切模式不是改一个寄存器就完事它会连带影响 FFE 的适配参数和复位流程。# 由目标线速率反推切片速率模式与内部时钟教学核上限按 10 Gbps 记 SLICE_MAX_GBPS 10.0 def pick_rate_mode(line_gbps): ratio line_gbps / SLICE_MAX_GBPS if ratio 0.5: return full, line_gbps # 全速率内部时钟等于线速率功耗最高 if ratio 0.25: return half, line_gbps / 2 # 半速率内部时钟减半是高速切片的主流架构 if ratio 0.125: return quarter, line_gbps / 4 # 四分之一速率低速复用老 IP 时常见 return eighth, line_gbps / 8 mode, clk pick_rate_mode(6.25) print(mode, clk) # half 3.125这段代码的逻辑是把“线速率”翻译成“切片内部时钟”判断依据是相对切片上限的比例而不是绝对速率。参数改动时要注意两点一是分频比一变PLL 分频器、串行时钟相位、FFE 的抽头单位以 UI 计都要跟着重算二是模式切换必须走完整复位与重同步热切换几乎必然翻车。发送侧还挂着一批诊断特性PRBS 图案发生、内部与外部环回、JTAG 旁路、带外信令模式以及与 PCIe 低功耗状态配合的若干控制位。它们平时不参与业务却是上板调试时唯一能握在手里的东西。可编程项主要影响什么时候必须重新调FFE 抽头与极性眼高、过冲、抖动放大换信道、换板层、换线缆长度输出摆幅与共模眼高、功耗、辐射换接收端耦合方式AC/DC速率模式内部时钟、功耗、时序余量目标线速率变化环回与 PRBS 使能诊断通路量产配置必须关闭2.2 接收切片CDR、DFE 与眼质量监视接收侧的第一件事是恢复时钟。参考时钟只给出一个“大概正确”的频率真正的采样相位要靠 CDR 里的相位旋转器一点点找它在一段相位区间内滑动比较不同相位下的采样质量最终停在眼图张开最大的位置。这条环路同时承担跟踪任务——扩频时钟带来的频偏、温度漂移带来的相移都得靠它慢慢跟。跟得太快会被数据图案带偏跟得太慢会跟不上频偏这两个方向的失配是链路误码的常见根因。判决反馈均衡DFE放在采样器之后它用已经判决出的历史比特去修正当前采样点的门限优点是几乎不放大噪声缺点是一旦判错就会连续错一段且对突发错误敏感。非 DFE 模式则依赖发送端 FFE 和线性均衡把眼图撑开。两者不是谁更先进的问题而是配合关系发送端预加重给多了接收端 DFE 反而可能被过冲干扰。维度DFE 模式非 DFE 模式噪声放大小反馈在判决后大线性均衡同时抬噪声错误传播存在连错风险无明显连错适配场景损耗大、反射重的背板短距、线缆、损耗平坦的信道参数敏感点反馈抽头与判决门限发送端 FFE 与接收端均衡强度除了均衡接收切片还有一组“看状态”的能力信号检测判断线上有没有有效幅度眼质量监视给出当前眼高眼宽的粗略量化相位旋转器可以读回当前相位用于比对部分核还能输出与 SONET 相关的时钟。这些观测点在做链路裕量测试时非常关键——误码率只是个结果眼质量才是可以优化的输入。终端与耦合方式也要在这里确认AC 耦合要保证共模由接收端自己建立DC 耦合则要求两端共模匹配配错会让信号检测一直判无信号。2.3 PLL 切片与复位重配上电顺序是最像黑匣子的部分PLL 切片管的是参考时钟进来之后的一切分频器把参考时钟分到各切片需要的频率压控振荡器VCO要经过粗校准才能落在可锁定的频段锁定检测给出“时钟可用”的结论复位序列器负责把这些动作排成有先后的顺序。教材里专门用一节讲复位与重配序列还拆成“改发送配置”和“改接收配置”两条路径原因很实际发送侧改速率会改变输出时钟接收侧必须重新同步接收侧改均衡参数则可以先保持链路不断、只让 CDR 重新收敛。上电流程里最容易被跳过的是重同步。PLL 锁定只说明时钟频率对了不说明数据通道里的字对齐、相位关系是对的改过分频比或速率模式之后必须显式触发一次重同步让并串与解串两侧的边界重新对齐。PCIe 那类带电源状态管理的场景更麻烦低功耗状态退出时PLL 可能被关过恢复顺序错了就会表现为“链路训练反复失败”而寄存器里所有状态位看起来都正常。提示调 PLL 之前先把参考时钟的摆率、占空比、频偏量三件事量一遍。锁定失败里相当一部分根因在参考时钟而不在 PLL 本身。3. 协议逻辑与标准族编码、对齐与去偏斜撑起的接口协议器件层只管把比特推上线比特怎么组织、多个通道怎么对齐、错了怎么发现是协议逻辑层的事。这一层的价值在联调时体现得最明显电气指标全过、PRBS 测试全通链路却起不来问题通常落在对齐和去偏斜上。教材把这层单独拆成两章一章讲功能模块一章讲具体标准复习时可以对着“功能—标准”两列做映射。3.1 分层先分清物理层管电气逻辑层管边界协议分层的基本划分是物理层负责电气与定时逻辑层负责帧边界、位序、字节序、条带化与错误处理。串行数据规格里定义的东西听起来很琐碎——先发高位还是低位、多通道之间怎么交织、空闲时发什么——但每一条都会变成 RTL 里的一个状态机分支。位序和字节序搞反是最经典的一类错误数据能通内容全错而且因为校验和重算之后依然“自洽”很容易被误判成上层软件问题。条带化与交织解决的是多通道并行传输时的数据分配把一条逻辑流按字节或按块轮转分到 N 个物理通道上接收端再按同样规则拼回去。规则本身不复杂难点在于通道数变化、通道故障降级、以及和去偏斜的配合。3.2 编码、加扰与错误检测开销与鲁棒性的取舍编码要解决三个问题保证足够的跳变让 CDR 有边沿可跟保持直流平衡让 AC 耦合不漂提供可识别的控制字符用于对齐。8B/10B 用 25% 的带宽换来了丰富的控制码和良好的直流特性64B/66B 把开销压到 3% 左右代价是必须靠加扰保证跳变密度并且块同步的逻辑更绕。选哪个不是审美问题是链路预算问题。def coding_overhead(encoded_bits, payload_bits): return encoded_bits / payload_bits - 1 for name, enc, pay in [(8B/10B, 10, 8), (64B/66B, 66, 64)]: print(f{name} 开销 {coding_overhead(enc, pay):.2%}) # 8B/10B 开销 25.00% # 64B/66B 开销 3.13%两个参数分别是有编码后的比特数和其中的有效载荷比特数差额就是纯开销。落到工程上10 Gbps 的线速率在 8B/10B 下只剩 8 Gbps 可用在 64B/66B 下能到 9.69 Gbps 左右——这就是为什么高速标准一代代往低开销编码迁移。但换算完别急着选低开销加扰器种子、块同步状态机、以及出错后的重新同步时间都是 64B/66B 额外带来的复杂度。错误检测与纠正在这一层是可选项前向纠错能换来链路裕量代价是延迟和额外开销放在物理层边界还是链路层边界取决于标准怎么定义。3.3 位对齐与多链路去偏斜多 lane 系统的真正难点单通道系统的对齐靠控制字符或同步头接收端在比特流里搜一个不会在数据中出现的图案找到就认为字边界对齐了。多通道系统的麻烦在于每条通道的延迟不同——走线长度差、封装内路径差、甚至连接器插损差都会造成通道间偏斜skew。去偏斜的做法是给每条通道配一个弹性缓冲先到的等一等等最慢的那条到齐再一起读出。这里有两个隐藏参数缓冲深度决定了能容忍多大偏斜读出时机决定了延迟。缓冲开小了偏斜超标就丢数据开大了延迟增加且需要更长的对齐序列来填满。另外通道顺序反转、极性反转这两项自动纠正能力很多器件默认关闭板子画反了就只能靠改配置救。教材把“位对齐”和“多链路去偏斜”分成两节讲正是因为它们是两套独立机制一套管通道内一套管通道间出问题时先定位在哪一层能省掉大量盲调。3.4 标准族速览四类协议各关心什么标准族结构特点SerDes 承担的角色复习时优先记住SONET/SDH固定帧结构、严格时钟分层长距、电信级时钟与抖动指标帧格式与时钟分布以太网分层清晰、速率族多从 MAC 到 PMD 的多级子层XGXS/XFI 与背板以太网光纤通道面向存储区域网络、帧与信令分离10 Gbps 级别的存储互联帧/信令与物理接口分层PCIe分层协议、带电源状态管理芯片间与板级高速互联物理层逻辑与低功耗状态四类标准对 SerDes 的诉求差别很大SONET 在意长期时钟稳定与抖动上限以太网在意子层划分与互通的电气规范光纤通道在意帧级流控与丢失恢复PCIe 在意链路训练与电源状态切换。复习时不必把每套规范全文啃完把“这一层解决什么问题、指标卡在哪”记住遇到具体协议再回查细节即可。4. 参考时钟、抖动与功耗三条看不见的约束线器件能配、协议能对链路还是可能不稳剩下的问题基本都落在这三条线上。它们共同的特点是“不在数据通路上”因此最容易被放到最后才查而一旦出问题又最难定位。4.1 参考时钟网络单端还是差分抖动从哪来参考时钟是整个 SerDes 的频率基准它的质量直接决定输出抖动的下限。单端时钟省引脚但抗干扰差、回流路径敏感差分时钟共模抑制好代价是占两只引脚和一对走线。时钟源的选择同样要权衡晶振抖动低但频点固定时钟芯片灵活但会引入额外抖动从别处借来的时钟则可能带着上游的扩频和噪声。时钟树的布局要在 floorplan 阶段就定下来分支点尽量靠近走线等长避免跨越分割平面差分对严格等长并保持间距。教材里把时钟分布网络单列一章讲还专门提到占空比失真和差分时钟的分析方法原因是占空比偏差会直接吃掉眼图的水平余量而它往往不是由时钟源产生是由走线不对称和缓冲器失配引入的。注意参考时钟的测试要求里通常包含“特殊测试模式”例如临时旁路 PLL 直接由外部灌时钟。这类模式在量产配置里必须关掉忘了关的后果是现场偶发失锁。4.2 抖动的分解RJ、DJ、TJ 与预算抖动按可预测性分两类随机抖动RJ服从高斯分布理论上无界确定性抖动DJ有明确来源比如占空比失真、周期性电源噪声、码间干扰幅度有界。两者合成总抖动TJ时不能直接相加峰值要按目标误码率折算——这就是双狄拉克模型存在的意义把 RJ 的高斯尾巴在给定 BER 处截断再与 DJ 线性相加。Q_1E12 7.034 # BER1e-12 对应的 Q 值双狄拉克模型的标准折算系数 def total_jitter_ui(dj_ui, rj_sigma_ui, qQ_1E12): DJ 用 UI 表示RJ 用单边 sigma(UI) 表示返回峰峰值 TJ(UI) return dj_ui 2 * q * rj_sigma_ui tj total_jitter_ui(dj_ui0.15, rj_sigma_ui0.010) print(fTJ {tj:.3f} UI, 剩余眼高约 {1 - tj:.3f} UI) # TJ 0.291 UI, 剩余眼高约 0.709 UI参数说明DJ 是峰峰值RJ 用单边标准差表示系数 2Q 把高斯分布的尾部折算成峰峰值Q 值随目标 BER 变化BER 越严 Q 越大TJ 也越大。做预算时把 TJ 从 1 UI 里扣掉剩下的才是可用的眼宽。容易漏的是抖动容限这一侧接收端能容忍多少抖动是标准规定的而发送端输出抖动加上信道引入的抖动必须留在这条线以内两边要分别核算。抖动分量来源统计特性处理手段随机抖动 RJ热噪声、参考时钟相位噪声高斯、无界降低带宽、优化时钟源占空比失真时钟链路不对称有界、与图案相关差分对称布线、校准码间干扰信道损耗与反射有界、图案相关FFE/DFE、缩短信道周期性抖动电源噪声、串扰有界、窄带电源滤波、隔离布局4.3 统计方法与模型眼图是怎么“算”出来的传统 SPICE 时域仿真能给出精确波形但要把 10⁻¹² 量级的误码跑出来仿真时间不可接受。工程上的做法是统计法先用少量仿真提取信道的脉冲响应再把抖动、噪声的概率密度函数与响应卷积直接算出眼图与浴盆曲线。教材讲了两类概率密度函数高斯与双狄拉克、抖动分解模型、以及传统 SPICE 模型与混合行为级模型的差别——行为级模型把复杂的均衡器和 CDR 抽象成数学描述速度快几个数量级代价是只能在已验证的范围内可信。仿真的组织方式也有讲究不是把所有组合都跑一遍而是按矩阵挑选角落工况最快/最慢工艺角、最高/最低温度、最长/最短信道、最大/最小摆幅在这些角落里做统计分析。这样做的理由是抖动与损耗在这些边界上最恶劣中间工况几乎不会更差。复习这块要记住的是流程和假设而不是具体某个工具的操作。4.4 功耗账本HSS 功耗方程与降功耗的取舍功耗要分三块算数字逻辑的动态功耗与翻转率、负载电容、电压平方成正比、数字逻辑的漏电与工艺、温度强相关、以及 SerDes 自身的功耗。SerDes 那部分不能简单套数字公式因为它含大量模拟电路静态偏置电流占大头教材为此单独给了功耗方程并拆成多个电源域——发送驱动、接收前端、PLL 通常各自供电噪声隔离和功耗管理都靠这个划分。模式相关功耗是最容易在预算里漏掉的一项链路空闲、低功耗状态、通道降级运行时功耗与全速运行差别很大按满载估会高估按空闲估会低估。降功耗的手段也有取舍降摆幅省电但损失裕量关通道省电但影响可用带宽降低速率模式省电但要重走复位流程。核设计侧能做的优化架构、偏置和芯片设计侧能做的优化供电划分、时钟门控、布局是两件事别混在一起谈。5. 易漏点专章测试、旁路与集成阶段最容易翻车的五处前四章讲的是“应该怎么设计”这一章讲“实际会怎么错”。下面五条按出现频率排序每条都给出漏掉的原因和补救动作。5.1 五条高频易漏点① 诊断与旁路模式忘了退出为什么会漏调试阶段为了看内部节点把环回、PRBS、JTAG 旁路一路打开功能验证全部通过转量产配置时只改了主数据通路诊断位留在原位。怎么补把“诊断位清单”做成配置表的一节每次出配置前逐条核对在仿真模型里对诊断使能位加断言一旦与非测试模式同时有效就报错。② 改了速率或分频比没触发重同步为什么会漏PLL 锁定位变高就认为“时钟好了”而字对齐和相位关系是另一套状态机它不会因为 PLL 锁定自动复位。怎么补把“任何改变串行时钟比例的操作”都归到一个配置函数里函数内部强制走复位—锁定—重同步三步不允许单独写分频寄存器。③ 耦合方式与终端配置不匹配为什么会漏AC 耦合与 DC 耦合在原理图上只是一个电容的有无容易被当成纯硬件问题而接收端的共模建立与终端使能是寄存器控制的。怎么补在板级调试清单里加一条“上电后先读信号检测与共模状态”无信号时先查耦合与终端再去怀疑均衡参数。④ 参考时钟只验频率不验抖动与摆率为什么会漏频率用示波器一眼就能看抖动和摆率要专门夹具和相位噪声分析调试紧张时就被跳过。怎么补把参考时钟的相位噪声、占空比、摆率列为上电前置检查项系统级抖动预算里给参考时钟留固定份额超了就不往下调。⑤ 多通道去偏斜与弹性缓冲在仿真里被理想化为什么会漏仿真模型里通道延迟常被设成相同值缓冲深度默认足够X 态被复位捷径掩盖真实板子上偏斜一超标就丢数据。怎么补仿真时人为注入通道间偏斜正负都要把缓冲深度调到接近溢出的边界跑一遍模型里未建模的行为要在验证计划里显式列出而不是当作不存在。把第 ② 条写成代码大致是这样一个最小自检序列def bring_up(dev, timeout_ms20): dev.wr(PLL_RESET, 1) dev.wr(PLL_RESET, 0) # 脉冲复位让 VCO 重走粗校准 if not dev.poll(PLL_LOCK, timeout_ms): return PLL 未锁定先查参考时钟摆率与频偏别急着调发送端 dev.wr(TX_RESYNC, 1) # 改过速率或分频比后必须重同步 dev.wr(TX_RESYNC, 0) dev.wr(RX_CDR_HOLD, 0) # 放开 CDR让相位旋转器开始跟踪 return OK if dev.poll(RX_SIGDET, timeout_ms) else 无信号查耦合、终端、极性这段序列的重点不在寄存器名而在顺序与超时先复位再等锁定锁定之后才允许重同步重同步之后才放开 CDR每一步都给超时并返回可读的失败原因。实际调试时最怕的是无限轮询——链路起不来脚本卡死连“卡在哪一步”都不知道。5.2 测试与诊断每种手段能证明什么不能证明什么测试手段多了容易误用关键在于分清覆盖范围。边界扫描1149.1查的是引脚连通性差分引脚的 AC 耦合场景要靠 1149.6 那套扩展PRBS 加环回查的是串行通路的误码用的是伪随机图案与多项式比对它能证明“通路干净”不能证明协议逻辑正确内建自测试LBIST查的是数字逻辑的制造缺陷和高速通路无关。制造测试分芯片级与宏级两层宏级测试专门针对 SerDes 这种模拟成分重的模块通常要配合专用的测试接入方式。表征与认证测试则是另一回事发送端测眼图、抖动、摆幅接收端测抖动容限、灵敏度通用项测功耗与温漂这一层是给器件定指标不是给板子做检验。手段能证明不能证明边界扫描 1149.1/1149.6引脚连接、开短路高速信号质量PRBS 环回串行通路误码水平协议逻辑与对齐LBIST数字逻辑制造缺陷模拟通路性能宏级制造测试切片功能与参数是否在规格内系统级链路裕量表征测试器件指标边界具体单板的可用性5.3 集成阶段仿真模型、静态时序与封装芯片集成是把前面所有东西装进一颗芯片并让它能跑这一阶段的三类坑很集中。第一类是仿真模型复位与初始化为了加快仿真常走“捷径”跳过了真实的校准与锁定时间导致仿真通过而硅片上电慢模型里的 X 态如果被默认值掩盖未建模的行为就不会暴露。第二类是静态时序SerDes 相关的时序约束不止串行数据本身还包括参考时钟路径、接收侧并行数据输出、寄存器接口、发送侧同步信号以及跨时钟域之间的偏斜管理反标注没做全时序报告就是假的。第三类是物理设计封装选型决定了能引出多少高速对、回流路径怎么走芯片 floorplan 决定了时钟树和高速对能走多直两者要在早期一起定后期再改代价极高。6. 复习清单把十章压成一张可自检的表复习最怕的是“看完了但不知道自己哪儿不会”。下面这张表按十章的主干拆成自检项每项只问一个问题答不上来就回到对应章节答得上来就往下走。建议按器件层、协议层、约束层、落地层的顺序过一遍因为后一层的问题往往要靠前一层的结论来解释。模块自检问题没答上来时回看并行与源同步引脚数、时钟前传、高速源同步各自的天花板在哪并行总线与源同步接口发送切片FFE 抽头调大调小分别会发生什么发送均衡与驱动接收切片DFE 与非 DFE 的噪声与连错差异接收均衡与 CDRPLL 与复位改速率后为什么必须重同步复位与重配序列协议逻辑8B/10B 与 64B/66B 的开销与控制字符差别编码与加扰多通道弹性缓冲深度由什么决定位对齐与去偏斜标准族四类标准各自最在意哪项指标协议标准概览参考时钟单端与差分的取舍点时钟分布网络本文还有配套的精品资源点击获取