
1. SGMII与QSGMII的取舍逻辑先从拆解端口带宽开始1.1 为什么车载控制器的MAC侧要引出SerDes而不是并行总线很多从MCU转过来做车载以太网的工程师一开始会有一个疑问明明SoC内部就带了以太网MAC为什么芯片厂商不在SoC旁边直接引出一堆并行信号非要搞成SerDes这种串行接口还需要外部再挂一颗PHY芯片这个问题的答案其实很简单引脚数。以GMII为例单端口千兆接口需要TXD[7:0]、RXD[7:0]、TX_CLK、RX_CLK、TX_EN、RX_DV等将近二十根信号线还不算电源和地。车载域控制器里的SoC和交换芯片本身引脚就极其紧张如果几个端口都用并行方式引出PCB布线层面几乎是一场灾难信号完整性问题也会非常突出。而且GMII的工作频率是125MHz在板上跑到这个频率的并行总线已经对时序提出了苛刻要求。SGMII就把这些信号收拢成了一对差分线一个方向一对总共两对。数据、时钟、控制信息全部从这对差分线上高速串行传输接收端通过CDR时钟恢复把时钟从数据里提取出来。这样一来PCB的面积和布线复杂度大幅下降引脚数量从二十几根直接缩减到几根。这背后的代价是接口速率上去了千兆SGMII的线速率是1.25Gbps这个速率在当前任何一块FR4板材上都是可以处理的前提是你把阻抗、回流、等长这些基础功做扎实。1.2 QSGMII的时分复用机制一根线到底怎么装下四个端口QSGMII的全称是Quad Serial Gigabit Media Independent Interface从名字里的Quad就能看出来它的核心价值在于用一组SerDes通道承载四个端口的MAC-PHY数据。这么做的底层机制是时分复用。四个SGMII端口的数据在发送端按固定时隙轮流发送每个端口都分到一段固定宽度的时间窗口接收端再按同样的时隙规则把数据解复用回四个独立的逻辑通道。所以QSGMII的线速率不是1.25Gbps乘以四等于5Gbps这么简单——实际QSGMII线速率确实是5.12Gbps左右含时钟和编码开销但逻辑上每个端口仍然维持千兆的SGMII速率标准只是它们在物理链路上轮流占用带宽。工程上可以把它理解成一条四车道的隧道同一时刻只能有一辆车通过但四组车辆轮流用隧道每组都觉得自己的运输能力没变。需要特别注意的是这个时隙机制不是以太网协议层的东西它完全工作在物理层MAC与PHY之间的接口层面对上层协议栈完全透明。路由器、交换芯片、MAC控制器都不会感知到这个复用过程。1.3 车载场景下SGMII和QSGMII分别用在哪些地方实际项目中SGMII和QSGMII的选用逻辑其实相当清晰。SGMII最典型的使用场景是一个SoC或MCU的MAC通过SGMII连接一颗单端口以太网PHYPHY的另一侧再接100BASE-T1或1000BASE-T1的收发器实现车载双绞线通信。比如域控制器里的网关板一颗带多个MAC的SoC每个MAC单独引出一组SGMII信号SGMII走线短PHY芯片就近摆放这个方案非常直接。另外很多外挂Switch芯片和主控SoC之间的级联也走SGMII虽然级联口实际上可能承载多个VLAN的流量但物理上是单端口链路。QSGMII则出现在端口密度更高的场景。最典型的是一颗集成四端口PHY能力的芯片或者一颗以太网Switch芯片与主控SoC之间只用一组SerDes lane连接但它承载了四个MAC端口的业务。如果你的设计里主控需要同时管理一路车机以太网、一路ADAS摄像头数据、一路诊断口、一路预留调试口四个逻辑端口分别走不同业务物理上却要求只用一组差分对接到PHY芯片那QSGMII几乎就是唯一的选择。1.4 选型决策的几个关键维度项目选型的时候我一般会在硬纸板上画一个这样的决策表维度倾向选SGMII倾向选QSGMII端口数量1~2个独立端口3~4个逻辑端口PCIe/Switch级联需求单链路级联多端口汇聚到交换芯片SerDes lane余量lane数量充足lane资源紧张功耗更低相对略高布线复杂度低更低单lane即可配置复杂度简单直接需要配置复用/时隙需要特别提醒的是很多SoC集成的SerDes lane是“一专多能”的——同一个物理pin脚既可以被配置成PCIe也可以被配置成SGMII或QSGMII。这种复用是靠芯片的IO配置寄存器或boot pin完成的。硬件设计时一定要仔细看数据手册里这个lane的复用表格确认这个引脚在上电后会进入什么模式需不需要特定的上下拉电阻。我曾经见过一个板子SerDes lane按SGMII设计的结果SoC固件默认把它初始化成了PCIe模式PHY芯片自然怎么都协商不上最后检查到是boot引脚的默认状态没有根据硬件方案设置。2. SerDes物理层参数从编码到时钟再到均衡的链路预算2.1 8b/10b编码带来的速率膨胀1.25Gbps和5Gbps是怎么算出来的SGMII接口的物理层编码采用8b/10b机制也就是说每8比特的有效数据在线上编码成10比特传输多出来的2比特主要用于保证DC平衡和提供足够的跳变沿用于时钟恢复。所以在千兆速率下SGMII的线速率是1Gbps×10/81.25Gbps差分对上的时钟频率大约是625MHzDDR方式下这是一个不少工程师容易算错的地方。QSGMII承载四个千兆端口每个端口的有效数据仍然是1Gbps四个端口加起来有效数据4Gbps再考虑8b/10b编码最终线速率就达到5Gbps。注意这里说的是“线速率”不是“带宽”。有些规格书里写QSGMII带宽5Gbps实际上你真正能跑的业务吞吐量理论最大也就是4Gbps因为还有MAC层的前导码、帧间隙、控制字符这些开销。这个“先编码后串行”的思路是理解整个SerDes设计的基础。为什么收端要做均衡为什么发送端要预加重很大程度上就是因为编码后线上速率已经从“千兆”膨胀到了5Gbps这个频率在PCB上走线时插入损耗已经不能忽略尤其是FR4板材走线超过10~15cm的情况下高频分量衰减非常明显。2.2 参考时钟的质量SerDes对抖动有多敏感SGMII和QSGMII都依赖参考时钟给内部的PLL提供基准PLL再产生准确的串行时钟。车载环境里一般使用25MHz或125MHz的晶振部分芯片直接接受50MHz/100MHz的输入具体看数据手册。参考时钟必须稳定、低抖动这是因为时钟的抖动会直接影响均衡后的眼图质量参考时钟的抖动最终会呈现在数据通道上。实际项目里有个很容易踩的坑为了省一颗晶振直接把SoC输出的某个低频时钟或者给某个MCU用的时钟分频后送给PHY芯片做参考时钟。这种复用时钟在消费级板子上也许能跑但车载环境温度范围宽、电源噪声大参考时钟一旦在频偏或相位噪声上超出PHY芯片的规格会出现链路能协商但是运行不稳定、偶发丢包、误码率升高的问题。SGMII/QSGMII的参考时钟精度要求通常在±50ppm以内抖动要求有的芯片甚至到几皮秒级别设计时必须留足裕量。[\text{时钟抖动}} \approx \text{相位噪声功率谱积分} \text{电源噪声贡献} \text{电路板串扰贡献}]我的做法是只要有条件参考时钟就单独安排一个低抖动晶振靠近接收PHY放置走线尽量短地平面完整不要在参考时钟附近走任何开关电源或I2C等噪声敏感信号。电源给SerDes的模拟供电和数字供电之间也要做好隔离否则电源上的纹波耦合进PLL眼图立刻变差。2.3 预加重、去加重和接收端均衡不同厂商的叫法和本质区别SerDes链路要跑稳定光靠阻抗匹配并不够。5Gbps信号经过几十厘米的PCB走线高频分量会因介质损耗和导体损耗而衰减接收端看到的眼图往往是“睁不开”的。针对这个问题发送端通常会提供预加重Pre-emphasis或去加重De-emphasis功能本质都是在发送端把高频分量相对抬高一些补偿信道的低频/高频损耗差。接收端则提供CTLE连续时间线性均衡和DFE判决反馈均衡CTLE在信号进入CDR之前做一个高通/带通形状的增益整形DFE则利用过去判决的比特信息来消除符号间干扰。不同厂家的PHY芯片对这些参数的默认值、寄存器映射和用户界面差别很大。有的PHY用“TX boost level”有的用“amplitude reduction”有的分“coefficient -1、0、1”三组参数。车载项目里如果MAC侧的SerDes和PHY芯片来自不同厂商两端的均衡参数必须配合着调不能一个拉满一个不管。我在实际项目里就见过主控SoC的SGMII发送端预加重默认开到很大的值外接PHY默认的CTLE增益又很高结果两边一起“叠buff”出现振铃误码率反而更高了。2.4 AC耦合电容容值、位置和封装带来的影响比你想的大SGMII/QSGMII的差分信号一般通过AC耦合电容串接在发送端和接收端之间。AC耦合的作用是隔断两端的直流偏置允许收发端各自工作在合适的共模电压上。这个电容的取值通常建议在0.01uF到0.1uF之间。选大了低频损失小一些但上电稳定时间变长选小了低频成分会有明显衰减。我项目里一般偏好0.1uF的0402或0603封装寄生电感小ESR低实际测试下来眼图表现稳定。电容摆放位置是个容易被忽视的细节。常规建议是靠近接收端放置但不是随便放而是尽可能靠近PHY芯片的接收引脚。如果接收端PHY芯片本身对AC电容位置有明确要求一定严格按照数据手册上的封装建议来放。有工程师习惯把AC耦合电容放在走线正中间理由是两边均衡这在低速链路问题不大但到5Gbps的QSGMII走线长短不一导致接收端的反射叠加眼图就会比预期差很多。设计项建议值/位置说明AC耦合电容容值0.1uF兼容范围0.01~0.1uF需确认PHY芯片规格电容放置位置靠近接收端±5mm内减少反射叠加封装0402/0603优先低ESR、低寄生电感参考时钟精度±50ppm以内越低越好差分走线阻抗100Ω±10%按层叠计算3. PCB Layout的实战约束阻抗、等长、回流、串扰3.1 差分阻抗100欧姆板材和层叠共同决定的数学题SGMII/QSGMII的双绞差分线目标阻抗普遍设计为100Ω差分部分场合可能要求100Ω单端对地这个要看PHY数据手册。但在工程计算时差分阻抗并不是简单的两根线各自的单端阻抗相加而是与耦合系数有关的一个综合结果。差分阻抗近似等于 (2 \times Z_{\text{single}} \times (1 - k))其中k是线间耦合系数。在4层或6层的车载板子上我惯用的做法是用Polar Si9000这类阻抗计算工具建好层叠参数模型输入铜厚、介质厚度、Dk和Df值把差分线宽和间距调到一个合理范围。常见的FR4板材下外层50Ω单端大概需要线宽0.125mm~0.15mm100Ω差分一般设计成线宽0.115mm、间距0.15mm的配置根据板厂具体参数浮动。内层因为介质厚度不同线宽可能需要加宽到0.175mm以上这些都要以阻抗计算软件的仿真结果为准。这里要强调一个工程原则阻抗设计不是只算一个数而是要给板厂的生产公差留出余量。板厂的铜厚公差通常在±10%左右介质厚度有±8%的偏差这些都会让实际阻抗偏离目标值。提交给板厂的工艺要求里我会把差分阻抗的允许范围写成“target 100Ω允许±10%”并且要求板厂做阻抗条验证切片报告随板交付。千万不能只画完线就了事。3.2 等长约束QSGMII的四个时隙对时偏的敏感度串行链路的等长设计包括两个层面一是差分对内部的正负线等长通常要求做到5~10mil以内这是为了保证差分信号的正负分量在接收端被准确恢复二是QSGMII单lane内部多个时隙之间对走线长度的敏感度较低因为它们本质是在同一条通道里时分复用不存在lane-to-lane的skew问题。但如果你用的是芯片厂商要求对SGMII/QSGMII做“组间等长”的方案——比如多个SGMII lane并行连接到交换机lane之间就需要做长度匹配。不同lane之间的偏差会造成时钟和数据偏斜增加了接收端恢复的难度。PCB设计工具里可以设置等长约束组把目标长度差控制在10mil以内。做蛇形等长时需要注意蛇形线的弯折处会产生额外的耦合和反射弯曲间距即蛇形线相邻线之间的间距建议至少是线宽的3~5倍弯折不要做得太密否则不但白做了等长还会给信号完整性问题埋下伏笔。最稳妥的办法是走线时尽量保持主通道的线长一致不要全靠最后拉蛇形线硬凑。3.3 过孔、换层与回流路径SerDes走线换层是硬件工程师经常遇到的事。换层本身不是问题问题是换层时没有处理好回流路径。任何高速信号的回流电流总是沿阻抗最小的路径返回如果走线从第3层换到第2层而这两个层相邻的参考地平面不连续回流电流就不得不绕路这会直接在换层点产生严重的阻抗突变。正确的做法是在换层过孔旁边打一个地过孔确保信号在换层的同时有紧邻的地过孔为回流提供“跳板”。过孔数量不必多一换一就行也可以打两个以降低寄生电感。我遇到过的一个实际案例是SGMII信号从第4层换到第1层旁边没有地过孔结果眼图很差后来在换层过孔旁加了一组地孔眼图明显改善。另一个容易忽略的过孔问题是残桩。如果PCB是4层板走线只走了第3层但过孔贯穿了整个板子再到第1层那么过孔就形成了一个非常长的残桩在高频下等价于一个小天线会引发共振和信号反射。解决方式有背钻、缩小盲埋孔尺寸或者干脆通过改层叠设计避免长残桩。在5Gbps的QSGMII下过孔残桩问题尤其值得关注建议优先选择盲埋孔方案或者在成本允许时做背钻。3.4 线间距、隔离与串扰为什么高速线旁边不能走I2C差分对之间的间距业界一般至少保持3W原则W是最外层信号线线宽。3W指两条差分对的中线间距至少是线宽的三倍这样差分对间的串扰会比较小。但对于5Gbps的链路保守起见我会拉到5W特别是两条lane并行较长距离的时候。比差分对之间隔离更需要在意的是高速SerDes线和低速控制线之间的隔离。曾经有一个项目I2C的信号线从SGMII走线旁边平行走了将近4厘米结果I2C总线上的SCL和SDA在PHY芯片工作后出现了毛刺经排查就是SGMII差分线上的共模噪声耦合过去的重新布线拉开距离之后问题消失。遇到这种情况优先方案是让低速信号远离高速区域其次是给低速信号加串联电阻降低边沿斜率再次是加一个地平面隔离条Guard trace——当然地平面隔离条本身也要打地过孔否则只是形式主义。控制线、电源线、尤其是DCDC的电感下方都应该尽量避开SerDes走线区域。我习惯在Layout阶段就用颜色标签把SerDes的高速区域单独标记出来所有其他信号线经过这个区域前都必须做检查。4. 实际调试经验从链路初始化到眼图测试的完整链路4.1 链路协商不上的排查顺序不是信号问题而是初始化问题很多工程师第一次调试SGMII/QSGMII的链路时第一步就会去抓信号、测眼图但实际很多问题并非信号层面而是初始化流程没走对。链路建立的顺序大致是PHY芯片上电、复位释放、参考时钟稳定、MDIO接口读取PHY状态、进行自动协商或者强制配置、PCS层同步、物理链路建立。如果PHY芯片的复位释放太早芯片还没完成内部初始化后续固件配置就会失败如果参考时钟还未稳定就尝试配置PCS同步会反复失败。这种调试场景我一般先用示波器确认复位信号、时钟信号、MDIO的读写时序是否正确。MDIO的读写时序非常慢用逻辑分析仪或示波器抓MDC和MDIO数据线可以直接看到寄存器读写是否成功。PHY地址冲突也是一个非常常见的坑。多颗PHY挂在同一总线时地址引脚的上下拉必须与芯片手册严格一致。有的板子PHY地址是通过外部电阻配置的如果电阻虚焊或者配错了引脚固件去读这个PHY时要么读到别的PHY要么读不到表现出来就是链路怎么都起不来。这时第一步往往不是怀疑高速信号而是先检查配置引脚电平、复位时序、参考时钟是否正常。4.2 千兆SGMII的眼图测试怎么看关注眼高、眼宽和抖动链路建立之后如果只是能跑通业务无法证明信号质量是健康的。车载项目会经历温度循环、振动、电源扰动等严苛环境仿真结果再好也要靠实测数据兜底。眼图测试是评估串行链路健康度最直观的手段。测试眼图至少需要一台带宽2.5GHz以上的示波器5Gbps链路推荐4GHz带宽以上以及差分探头或合适的测试夹具。示波器在SGMII测试点处捕捉大量波形后叠加会形成一个类似眼睛的图形工程上主要看三个指标眼高反映信号的电压裕度眼的高低越厚越好眼宽反映时序裕度越宽说明容忍抖动和偏斜的能力越强抖动Tj/Rj/Dj体现时钟恢复和信号完整性的综合表现。判断眼图质量为“合格”并不能只看“能睁开眼睛”要与PHY芯片数据手册里的接收端容限对比。例如有些PHY要求接收端差分输入灵敏度为100mV那眼图眼高至少得是200mV以上才谈得上裕量充足。另外要留意眼图的对称性如果正负眼高明显不对称往往意味着预加重/去加重参数或共模电平设置有问题。4.3 用TDR查阻抗和用眼图查信号是两码事调试中有一类问题很“狡猾”眼图看得到明显的反射和过冲但TDR测试却显示阻抗曲线良好。原因在于TDR反映的是差分阻抗的静态分布而实际5Gbps信号还受到介质损耗、频率相关的趋肤效应、邻近线串扰等因素影响这些并不会直接体现在TDR阻抗曲线上。我遇到过一个案例一条QSGMII走线在经过一个换层过孔后在接收端附近出现了明显的ISI和反射TDR测过孔位置阻抗却显示都在100Ω±5%以内。后来排查发现是过孔换层点两侧的地平面在走线层不一致导致回流路径发生了微小的偏移虽然在特定频率下阻抗数值没有明显突变但高频段出现了共振点造成眼图上定时抖动明显加大。这个案例说明信号完整性不能单靠阻抗检查必要时要做S参数仿真或频域测试来定位。4.4 不同供应商芯片之间的互操作预加重和均衡参数要有平台化思维车载以太网项目的一个特点是PHY供应商选择有限常见的也就Marvell、TI、NXP、Broadcom等少数几家但每一家的寄存器模型都不同默认参数差异很大。在一个平台上你可能用Marvell的PHY搭配NXP的PHY做互连测试或者SoC侧是Broadcom的SerDesPHY侧是TI的方案。跨厂商的互操作问题是调试中出现频率最高的问题。不同芯片对接收门限、信号幅度、均衡强度的默认值和定义都不同如果两边都拉到最大增益效果很可能不是“112”反而是产生过冲、振铃和误码。正确做法是先按某种芯片数据手册里的推荐值设置两侧然后把预加重系数和CTLE增益按“从小到大”逐步递增的方式试验观察误码率和眼图指标的变化。实际调试时我会做一个表格式的平台模板列清楚每个厂商当时生效的寄存器地址、默认值和调优后的最终值方便后续项目直接复用。5. 量产落地从样板验证到整车上量的各环节检查5.1 器件选型的车规级属性不止AEC-Q100那么简单SGMII/QSGMII链路涉及的PHY芯片、晶振、AC耦合电容、连接器都要围绕车规环境选型。车载级PHY一般要求AEC-Q100认证和-40~105℃的工作温度范围很多工业级的芯片虽然指标看起来相似但结温范围、抗干扰能力和寿命显著不同在整车环境里可能出现隐性失效。晶振的选择同样不能只看常温精度。车规晶振要关注温漂特性、老化率和耐振动性能。有些项目为省成本选择了消费级晶振结果高低温循环测试时链路间歇性断链问题定位花了很多时间最后换上AEC-Q200的晶振就正常了。AC耦合电容也要选择X7R或C0G材质避免Z5U/Y5V这种温漂巨大的电容在高低温下容值大幅变化。供应维度还有一层考量。SerDes相关芯片的交期在缺芯周期特别长项目选型时必须准备可替代方案。我在产品定义阶段就要求同时认证两款PHY芯片PCB上做成兼容封装容易导致布局妥协所以更务实的做法是选好主料然后提前和供应商锁产能把风险前移。5.2 回流焊接、板材公差对信号质量的影响PCB生产过程对高速链路的影响往往被硬件工程师忽视。同一块板子不同批次板材的Dk和Df可能不同铜厚也有制造公差这些都会导致实际阻抗与设计值有偏差。如果SGMII走线很长且裕量本来就小板厂批次波动就能让眼图从“良好”变成“勉强”。对策是送板时把阻抗条一起做要求板厂在报告中附上Dk/Df实测值和阻抗实测值PCB到货后抽测TDR尤其是层压结构和铜厚发生变化的批次。量产阶段还要关注回流焊的焊接质量虚焊、冷焊、桥接儿导致的信号反射在5Gbps下会被放大ICT测试只能测出直流短路开路不能完全替代高速测试。5.3 可测试性设计从原理图阶段就为量产留好“后门”量产测试的成败很大程度在设计阶段就已注定。SGMII/QSGMII的SerDes信号必须预留对外测试点。虽然高速走线上加测试点会影响信号完整性但只要有规划地加一个T型测试点并控制stub长度影响是可控的。测试点放在接收端PHY芯片之前尽量靠近PHY的地方stub控制在2mm以内不要在大批量测试时才临时想办法飞线。内部loopback是另一个关键的测试手段。几乎所有的SerDes PHY都支持内部loopback模式数据从MAC发送到PHY内部就直接被回环到接收端用于验证PHY和MAC之间的连接是否正常。产线测试时可以先用内部loopback验证逻辑层面再用外部loopback或者实际互连验证整个链路。我就遇到过产线测试只跑业务不通最后定位是产线测试板上的SGMII走线太长导致信号质量下降这恰恰说明外部物理链路的验证不可省略。5.4 EMC与ESD车载高速链路的最后一道关汽车电子EMC要求非常严格SGMII/QSGMII这类高频信号如果不加处理很容易成为辐射源或敏感点。PCB上高速走线尽可能短、参考地完整、差分走线紧密耦合都是降低辐射的有效手段。必要时可以在差分对靠近连接器或外线缆一侧增加共模扼流圈但要注意共模扼流圈的带宽和插入损耗选择不当会直接吃掉信号裕量。ESD防护方面SerDes信号通常不直接引出到车外但如果是通过板对板连接器连接外部的诊断盒或者测试仪就需要加TVS管保护。不过TVS管的结电容对高速信号影响很大挑选时必须选择超低电容型号并确认它不会在5Gbps下造成明显的眼图退化。最后一个实操细节板卡结构件接地和连接器屏蔽层接地是否充分往往比TVS管更关键。如果连接器的屏蔽层没有在靠近连接器的位置良好接地外界静电很容易通过屏蔽层耦合到信号线上。每次做ESD测试我都会特别检查连接器周围的接地螺钉和星型接地连接方式这种机械层面的细节很多时候决定了整个板子在整车环境下稳不稳。做SerDes设计这几年我最大的感受是链路能不能稳定跑起来从来不是单一因素决定的。SGMII和QSGMII的硬件设计涉及协议理解、物理层知识、PCB工艺、测试仪器操作和量产管理每一步都有基本功要打。遇到问题先别急着怀疑芯片把复位时序、参考时钟、引脚配置、回流路径这些基础环节逐一确认往往能省下大量排查时间。最后再分享一个个人习惯每个项目都保留一份完整的SGMII/QSGMII调试记录包含寄存器配置、眼图截图、阻抗测试结果和故障分析过程下次遇到类似问题直接翻旧账比重新排查一遍快得多。