一、信号完整性基础:SerDes技术演进、信道模型核心参数与眼图基本概念

大家好,我是老张。做信号完整性这行十几年了,今天咱们聊聊SerDes信道建模和眼图分析。说实话,这玩意儿刚入行时我也觉得头大,但摸爬滚打久了,发现核心就那么几件事。

嗯,咱们先从最基础的开始。你想想看,为什么现在高速设计这么难?说白了,就是数据速率上去了,信号在传输过程中受到的干扰越来越明显。我当年做第一个10Gbps项目时,板子打样回来眼图完全闭合,折腾了两周才发现是过孔残桩没处理好。从那以后,我对信道建模就格外上心。

1.1 SerDes技术演进:从并行到串行的必然之路

SerDes,全称Serializer/Deserializer,串行器/解串器。这东西的出现,其实是被逼出来的。

早期芯片之间通信用的是并行总线,比如PCI、DDR之类的。并行总线有个好处——带宽大,一次传好多位。但问题也明显:

  • 信号数量多:几十根甚至上百根线,PCB布线像蜘蛛网
  • 时序要求苛刻:所有信号必须同时到达,稍微有点偏差就完蛋
  • 功耗高:同时翻转的驱动器太多,电源噪声大得吓人
  • 速率受限:到了GHz级别,并行总线的时序窗口几乎为零

我记得2005年左右,那时候做并行DDR2设计,为了等长布线,我硬是把一组数据线绕成了蛇形,结果信号质量反而更差了。后来才明白,等长不是万能的,关键是控制阻抗和串扰。

SerDes的出现,彻底改变了这个局面。它把并行数据转成高速串行流,用一对差分线传输。好处显而易见:

  • 引脚数大幅减少:一对线搞定,PCB设计轻松多了
  • 速率可以做得极高:现在112Gbps PAM4都已经量产了
  • 抗干扰能力强:差分信号天然抑制共模噪声
  • 功耗更低:驱动器数量少,翻转率也低

从技术演进来看,SerDes经历了几个关键阶段:

时代 速率 调制方式 典型应用
早期(2000年前后) 1-3 Gbps NRZ 背板互联、光纤通道
中期(2010年前后) 10-28 Gbps NRZ PCIe 3.0/4.0、SAS 3.0
近期(2020年前后) 56-112 Gbps PAM4 400G/800G以太网、PCIe 5.0/6.0

我个人习惯把SerDes系统看作一个黑盒子,输入端是并行数据,输出端也是并行数据,中间是高速串行链路。这个链路的质量,直接决定了系统能不能正常工作。

核心观点:SerDes的本质是用时间换空间——用更高的速率换取更少的引脚。但代价是,信道建模的难度呈指数级上升。

1.2 信道模型核心参数:插入损耗、回波损耗与串扰

信道,说白了就是信号从发送端到接收端经过的所有路径。包括PCB走线、过孔、连接器、电缆、背板等等。这些路径对信号的影响,可以用三个核心参数来描述。

1.2.1 插入损耗(Insertion Loss, IL)

插入损耗,就是信号在信道中传输时损失的幅度。单位是dB,负值表示衰减。比如-3dB意味着信号功率损失了一半。

为什么会衰减?主要有几个原因:

  • 导体损耗:铜箔有电阻,高频时趋肤效应让电阻更大
  • 介质损耗:PCB板材的介电损耗,频率越高越严重
  • 辐射损耗:信号能量辐射到空间中

我做过一个项目,客户要求信道总损耗不超过-20dB @ 28GHz。结果第一次仿真出来是-25dB,怎么都优化不上去。后来发现是板材选错了,普通FR-4在这么高频下损耗大得离谱。换成Megtron 6之后,损耗降到了-18dB。嗯,选板材这事儿,真不能省。

插入损耗的典型曲线是这样的:

频率(GHz)   插入损耗(dB)
1             -0.5
5             -2.8
10            -6.2
20            -13.5
28            -20.1

你想想看,28GHz时信号已经衰减了100倍。接收端要能从这么弱的信号里恢复出数据,可不是件容易事。

1.2.2 回波损耗(Return Loss, RL)

回波损耗,描述的是信号在信道中遇到阻抗不连续时,被反射回来的比例。单位也是dB,但数值越大越好。比如-15dB意味着反射回来的能量只有3%。

阻抗不连续的地方很多:

  • 过孔:过孔本身有寄生电容和电感
  • 连接器:机械结构导致的阻抗突变
  • 走线拐弯:直角拐弯会引入额外电感
  • 线宽变化:从窄线到宽线,阻抗会跳变

我曾经遇到过一个案例,板子打样回来眼图质量很差。查了半天,发现是BGA焊盘区域的走线宽度从4mil突然变到8mil,阻抗从50Ω跳到了65Ω。反射回来的信号跟主信号叠加,直接把眼图搞塌了。后来在焊盘下方做了挖空处理,把阻抗调回50Ω,问题才解决。

避坑指南:我曾经在多个项目中发现,回波损耗的问题往往比插入损耗更隐蔽。插入损耗不够,你至少能看到眼图幅度变小。但回波损耗不好,眼图可能看起来幅度还行,但抖动大得离谱。所以,我建议你在仿真时一定要同时关注IL和RL。

1.2.3 串扰(Crosstalk, XT)

串扰,就是一根线上的信号干扰到另一根线上的现象。分为近端串扰(NEXT)和远端串扰(FEXT)。

串扰的产生机制:

  • 容性耦合:两根线之间的寄生电容,高频时耦合更强
  • 感性耦合:电流变化产生的磁场,在相邻线上感应出电压

我记得有一次做背板设计,16条SerDes通道并行布线。仿真时发现中间通道的眼图质量明显比两边差。一查,原来是中间通道受到两侧通道的双重串扰,总串扰量比边缘通道大了将近一倍。后来调整了线间距,从3W(线宽的3倍)增加到5W,串扰才降下来。

串扰的典型指标:

串扰类型 典型要求 影响因素
近端串扰(NEXT) < -40 dB 线间距、耦合长度
远端串扰(FEXT) < -35 dB 线间距、介质均匀性

注意:串扰在时域上表现为噪声,会叠加到信号上。如果串扰幅度超过信号幅度的10%,眼图质量就会明显恶化。我建议你在设计阶段就把串扰预算控制在-40dB以下。

1.3 眼图基本概念:衡量信号质量的黄金标准

眼图,是高速信号完整性分析中最直观、最常用的工具。说白了,就是把接收到的信号波形叠加在一起,形成一个类似眼睛的图案。

1.3.1 眼图是怎么生成的?

生成眼图需要三个要素:

  1. 数据信号:通常是伪随机二进制序列(PRBS)
  2. 时钟信号:用于触发示波器或仿真器
  3. 叠加显示:把每个比特周期的波形叠在一起

我刚开始学眼图时,总觉得这东西很玄乎。后来自己动手用Python画了一个,才真正理解。下面是一个简单的眼图生成代码:

import numpy as np
import matplotlib.pyplot as plt

# 生成PRBS数据
np.random.seed(42)
bits = np.random.randint(0, 2, 1000)
# 模拟信道响应(简单低通滤波)
def channel_response(signal):
    b, a = [0.1, 0.2, 0.3, 0.2, 0.1], [1]
    return np.convolve(signal, b, mode='same')

# 生成波形
samples_per_bit = 50
waveform = np.repeat(bits, samples_per_bit)
waveform = channel_response(waveform)

# 叠加眼图
plt.figure(figsize=(8, 6))
for i in range(0, len(waveform) - samples_per_bit, samples_per_bit):
    plt.plot(waveform[i:i+2*samples_per_bit], 'b', alpha=0.1)
plt.title('眼图示例')
plt.xlabel('时间 (UI)')
plt.ylabel('幅度 (V)')
plt.grid(True)
plt.show()

嗯,代码跑出来之后,你会看到一堆波形叠在一起,中间那个空白的区域就是「眼睛」。眼睛睁得越大,信号质量越好。

1.3.2 眼图的关键参数

眼图能告诉我们很多信息。我个人习惯看这几个参数:

  • 眼高(Eye Height):眼睛垂直方向的开度,单位mV。眼高越大,噪声容限越大。
  • 眼宽(Eye Width):眼睛水平方向的开度,单位UI或ps。眼宽越大,时序容限越大。
  • 抖动(Jitter):信号边沿的随机偏移,单位ps。抖动越小越好。
  • 眼图信噪比(Eye SNR):眼高与噪声的比值,通常要求大于6。

我做过一个项目,眼高只有80mV,但接收端的灵敏度是100mV。结果就是,板子常温下能工作,温度一高就丢包。后来优化了信道,把眼高提升到150mV,问题才解决。所以,眼图参数一定要留够裕量。

经验之谈:眼图是「结果」,不是「原因」。眼图不好,说明信道有问题。但眼图好,不代表系统一定没问题——因为眼图只反映了稳态特性,瞬态响应可能还有隐患。我建议你把眼图分析和时域反射(TDR)结合起来用。

1.3.3 眼图与信道参数的关系

眼图的质量,直接受信道参数影响:

信道参数 对眼图的影响 典型表现
插入损耗过大 眼高降低 眼睛变「矮」
回波损耗过大 抖动增加 眼睛变「窄」
串扰过大 噪声增加 眼睛变「模糊」
阻抗不连续 过冲/下冲 眼睛边缘有毛刺

你想想看,如果插入损耗太大,信号幅度不够,眼高自然就小。如果回波损耗太大,反射回来的信号跟主信号叠加,边沿位置就会抖动。如果串扰太大,噪声会把眼睛内部填满。所以,优化眼图,本质上就是优化这三个信道参数。

本章小结

好了,咱们把第一章的内容捋一捋:

  • SerDes技术从并行到串行,核心是用速率换引脚数
  • 信道模型的三个核心参数:插入损耗、回波损耗、串扰,一个都不能少
  • 眼图是衡量信号质量的直观工具,眼高、眼宽、抖动是关键指标

我个人觉得,信号完整性这东西,说难也难,说简单也简单。难在细节多,简单在核心逻辑就那么几条。你只要把信道参数搞明白了,眼图分析自然就通了。

嗯,这一章就到这里。下一章咱们聊聊信道建模的具体方法,包括S参数提取和时域仿真。到时候我会拿一个实际项目案例来演示,保证让你看得过瘾。


公众号:蓝海资料掘金营,微信deep3321