第2章:高速互连系统模型:发射端、信道、接收端

做信号完整性分析,首先得把系统拆开看。

别看高速链路动辄几十Gbps,其实就三个部分:发射端(TX)、信道(Channel)、接收端(RX)。

这说法你可能听过无数次了。但说实话,很多工程师把这当成了“搭积木”——以为算好每段参数直接拼起来就行。我当年也这么想,结果第一次做16Gbps设计就栽了跟头,眼图闭合得一塌糊涂。

为什么会这样?因为这三部分之间不是线性叠加,而是相互耦合。你调TX的预加重,信道损耗变了,RX的均衡也得跟着动。说白了,这是一个系统,不是三个模块。

核心观点:高速链路建模的成败,在于你能不能把TX、Channel、RX当成一个有机整体来分析。任何一个环节的“完美”,都不能保证系统不出问题。

发射端(TX):信号的起点

发射端负责把数字信号变成物理波形,扔进信道里。

理想很丰满:0和1,方波,干净利落。现实很骨感:信号一出芯片,就被封装、PCB走线、过孔这些寄生参数“污染”了。

TX的核心功能

  • 预加重(Pre-emphasis):提高高频分量,补偿信道对高频的衰减。
  • 去加重(De-emphasis):降低低频分量,等效提高高频分量。很多协议里的“预加重”其实指的是这个,比如PCIe、SATA。
  • FFE(Feed Forward Equalization):有限冲击响应滤波器,通过预设的抽头系数来“预失真”信号,抵消信道影响。

我的经验:预加重不是越大越好。我曾经调一个项目,加了6dB预加重,结果眼图张开了,但噪声也大了。后来发现是信道里有个谐振点,预加重正好把那个频率的噪声也放大了。所以建议先扫一下信道的频域特性,再决定加多少去加重。

TX的输出指标,我跟你们列几个关键的:

参数 说明 典型范围(16Gbps级别)
差分摆幅(Vod) 输出信号的峰峰值电压 400mV ~ 1200mV(差分)
上升/下降时间(Tr/Tf) 20%-80%的切换时间 20ps ~ 40ps
预加重/去加重量 高频分量提升的dB数 3dB ~ 6dB
抖动(RJ/DJ) 随机抖动+确定性抖动 RJ ~0.5ps RMS,DJ ~5ps pk-pk

注意:软件里仿TX模型时,别只知道设眼图幅度。上升/下降时间对信号的影响非常大。我曾经见过一个案子,TX的Tr从30ps改成50ps,BER直接差了2个数量级。

信道(Channel):信号的通路

信道是从TX焊盘到RX焊盘之间的所有物理路径。

包括PCB走线、过孔、连接器、电缆、背板,甚至还有封装和BGA焊球。这些东西加在一起,就是信号的“绊脚石”。

你想想看,信号要在里面跑几十厘米,高频分量衰减得厉害,反射、串扰、损耗全来了。

信道的核心杀伤力

  1. 趋肤效应和介质损耗:频率越高,能量越集中在导体表面,电阻增大;介质分子高频震荡,产生热量。结果就是高频信号越来越弱。
  2. 反射:阻抗不连续处,信号一部分弹回来,一部分传过去。过孔、连接器、线宽变化都是“反射源”。
  3. 串扰(Crosstalk):相邻走线之间的电磁耦合。问题在于,设计时刻意加大线距可以减少串扰,但布线密度又上不去,这是工程上的取舍。

评估信道质量,一般看S参数。你可能会觉得S参数复杂,但咱做SI的,掌握几个常用的就够了:

S参数 含义 参考值(适用于16Gbps)
Sdd21(插损) 从TX到RX的差分传输信号损耗 在奈奎斯特频率处(8GHz),-10dB ~ -20dB 以内比较理想
Sdd11(回损) TX端口的反射 奈奎斯特频率处低于 -10dB
Sdd22(回损) RX端口的反射 奈奎斯特频率处低于 -10dB
ICR(综合串扰比) 评估串扰对信号的影响 奈奎斯特频率处大于 20dB 较好

避坑指南:我曾经见过一个项目,仿真插损Sdd21挺好,-12dB@8GHz。但实际测试时收端眼图很差。查了好久才发现,板子中间有过孔换层,那段过孔的回损Sdd11很大(-5dB),信号反射回来跟主信号叠加了。所以只看插损不够,回损也要盯紧。

接收端(RX):信号的终点

接收端最麻烦,因为信号到这里已经变得像被揉过的纸条——幅度小、抖动大、时序乱。

RX得把这些“残废”信号救回来,恢复成干净的0和1。

RX的三大核心模块

  • CTLE(Continuous Time Linear Equalizer):模拟均衡器,补偿高频损耗。它本质上是个高通滤波器,提升高频幅度,压低低频。CTLE有增益和零点/极点设置,要根据信道长度调整。
  • DFE(Decision Feedback Equalizer):数字均衡器,消除码间干扰(ISI)。它利用前几次判决结果,反馈回来抵消当前比特受到的干扰。DFE的“抽头数”决定了它能消除多少ISI。
  • CDR(Clock and Data Recovery):从数据流中恢复出时钟,然后跟数据对齐。CDR的好坏直接影响系统的抖动容限。

我个人的习惯:在板级验证时,先看CTLE能不能把眼图打开到一定程度(比如至少打开到50%眼高)。如果CTLE调到极限还不行,再打开DFE。还有,CDR的环路带宽要跟数据速率匹配,太高了容易抖,太低了锁不住。你想想看,调均衡像煲汤,得一步一步来。

// 一个实用的均衡器自适应算法片段(以MATLAB思路示意)
// 从信道冲击响应出发,训练CTLE+FFE+DFE配置
// 注意:实际芯片内部的硬件自适应算法要更复杂

%% 步骤1:获取信道S参数,转成时域脉冲响应
channel = s2p2impulse('channel.s4p');
h = channel(:,1); % 取差分模式的主路径

%% 步骤2:设置初始TX的FFE系数(3-tap为例)
tx_tap = [0.15, -0.75, 0.10]; % 预置系数
tx_out = conv(tx_tap, h);     % TX预加重+信道

%% 步骤3:设置CTLE(极点/零点)增益调整
CTLE_gain = 6; % dB
CTLE_pole = 2e9; % Hz
rx_ctle_out = ctle_filter(tx_out, CTLE_gain, CTLE_pole);

%% 步骤4:开启DFE自适应训练,收敛5-tap DFE系数
dfe_taps = dfe_adapt(rx_ctle_out); 

%% 步骤5:评估收敛后EI眼图高度/宽度
eye_metrics = eye_analysis(dfe_taps, rx_ctle_out);
disp(['眼图高度:', num2str(eye_metrics.height), ' mV']);

警告:千万别以为调好CTLE和DFE就万事大吉。我曾经在16Gbps设计里吃过亏:CTLE增益拉到了10dB,DFE开了8 taps,眼图倒也睁开了,但接收机功耗太高,芯片烫得不行。均衡器性能跟功耗往往是跷跷板,设计时别忘了看热预算。

系统模型一图看

下面这张图帮你理清三个模块之间的逻辑关系,以及它们各自最关键的指标。

高速互连系统模型:TX → 信道 → RX 发射端(TX) 预加重/去加重 FFE均衡 上升时间控制 (Vod / Tr/Tf / 抖动) 信道 插损 / 回损 反射 / 串扰 有损传输线 (S参数 / 阻抗控制) 接收端(RX) CTLE均衡 DFE决策反馈 CDR时钟恢复 (自适应 / 抖动容限) 设计要点:三部分必须整体优化 • TX预加重和FFE:抵消信道高频损耗的“第一道防线” • 信道S参数:插损、回损必须同时达标,尤其注意过孔和连接器处的反射 • RX均衡:CTLE打基础(至少开50%眼高),DFE扫除残余ISI • CDR时序:环路带宽和数据速率匹配,影响整体抖动

好了,模型搭起来,下一节咱们就可以拿着这个框架,详细聊聊均衡器的微观设计。

这三个部分你记住了:TX是“演员”,信道是“沙尘暴”,RX是“救火队员”。你要是能把它们的耦合关系吃透,高速互联设计里的坑,基本都能提前避开。