2. 串行链路基础:差分信号、PAM-N调制方式、编码基础

说起串行链路,我总想起刚入行时调试SGMII口的那段日子。当时觉得不过就是两根线来回传数据嘛,能有多难?结果眼图上满是毛刺,时钟就是锁不住。后来才明白,差分信号、调制方式和编码这三个东西,就像串行链路的“地基”——任何一个不稳,整栋楼都得塌。今天咱们就一个一个掰开聊。

2.1 从单端到差分:信号传输的进化

单端信号大家都熟,一根信号线加一根地线。但到了SGMII这种几Gbps的速率,单端就扛不住了。为什么?

  • 地弹噪声:高速翻转时,地电位瞬间波动,信号参考点就漂了。
  • 共模干扰:电源噪声、辐射串扰全部耦合到信号上,你根本分不清是1还是0。
  • EMI辐射大:单端回路面积大,天线效应明显。

差分信号就聪明多了:两根线传互为反向的信号,接收端只看两线之差。共模噪声同时叠加到两根线上,一减就没了。这就是共模抑制——说白了,噪声被“对消”了。

实操小经验: 我自己做板卡时,差分对的两根线必须严格等长,误差控制在5mil以内。曾经有一次偷懒差了15mil,结果眼图开口直接缩小了30%,时钟恢复PLL死活无法锁定。从那以后,我对差分对走线的要求苛刻到连焊盘过孔都要对称。

SGMII物理层用的就是低压差分信号(LVDS),典型摆幅只有350~450mV。电压低、摆幅小,功耗和EMI都降下来了。但这也意味着信号更容易被衰减——所以后面才会讲到均衡和时钟恢复,环环相扣。

2.2 PAM-N调制:不止是0和1

传统串行链路用NRZ,也就是PAM-2:电平要么高、要么低,一个符号传1比特。但随着速率冲到10Gbps以上,NRZ的带宽代价太大了。这时候PAM-4就上场了。

PAM-4用4个电平:00、01、10、11,每个符号传2比特。同样波特率下,数据速率翻倍。听起来很爽对吧?但代价也不小——信噪比直接损失约9.6dB。我在10Gbps PAM-4链路上遇到过信号质量刚过线,温度一高眼图就闭了。所以说,PAM-N是拿信噪比换带宽,得权衡。

PAM-2 vs PAM-4 关键参数对比
参数 PAM-2 (NRZ) PAM-4
每符号比特数 1 2
电平级数 2 4
信噪比损失 0 dB(基准) ~9.6 dB
眼图 单眼 3个叠加眼
应用场景 SGMII (1.25Gbps / 3.125Gbps) 25Gbps+ 以太网
注意: SGMII本身用的是PAM-2,但了解PAM-4有助于理解未来更高阶的调制。做链路设计时,不要盲目追求高阶调制——最好先评估信道损耗和噪声预算,否则眼图闭合了调试起来很痛苦。

2.3 编码基础:DC平衡与时钟恢复

原始的二进制数据直接丢进信道会出大问题:长串的连续0或1会导致信号直流分量漂移,接收端DC基线一团糟。而且没有足够的跳变沿,时钟恢复电路根本提取不出时钟。

解决办法就是编码。8B/10B编码是最经典的——每8比特数据扩展成10比特编码,保证游程长度不超过5个连续相同符号,DC平衡也算得好好的。我当年第一次调8B/10B链路,写了个编码器自查表对着跑,结果发现接收端解码老是出错。查了半天,原来是编码表里有个映射值不对。嗯,那之后我学乖了,直接用IP核,但原理必须吃透。

后来有了更高效率的64B/66B编码,它用同步头做帧锁定,再加扰码实现DC平衡。不过SGMII和它的前身GMII都用8B/10B,所以咱们重点掌握这个就行。

核心理解: 编码不仅是为了传输,更是为了时钟恢复。没有足够的跳变,CDR就是盲人摸象。8B/10B保证了平均每10比特至少有3个跳变——CDR可以放心地锁相。

2.4 三者如何协同?

差分信号负责物理传输,PAM-N定义每个符号承载多少比特,编码保证符号序列有足够的时钟信息。这三者一结合,串行链路才能跑起来。

串行链路基础知识体系 差分信号 共模抑制 / LVDS / 等长走线 PAM-N调制 PAM-2 / PAM-4 / 信噪比权衡 编码基础 8B/10B / DC平衡 / 游程控制 可靠串行链路 正确的信号传输 + 足够带宽 + 时钟信息提取 任何一个环节短板都会导致链路无法建立或误码率过高 差分信号 → 眼图开口 → 时钟恢复锁相 → 编码校验

这张图把三者关系串起来了。你想想看:差分信号保证了传输质量;PAM调制决定了波特率和信噪比预算;编码则提供了时钟恢复所需的跳变。缺一不可。

避坑提醒: 我见过有人选PAM-4调制却忘了加强CDR的跟踪带宽,结果温度变了之后锁相环跑了。记住:高阶调制对时钟抖动更敏感,编码里游程长度必须严格控制。8B/10B最大游程5,但PAM-4因为多电平,同样是游程5,幅度差异更大,更容易误判。

好了,到这一步,差分信号、PAM-N调制、编码基础这三个核心概念你应该有了整体认识。它们是串行链路建立和时钟恢复的底层支撑,后面的均衡、预加重、CTLE等全都建立在它们之上。把地基打牢,后面调试起来就顺多了。