2. SATA物理层基础:差分信号、Gen1/Gen2/Gen3速率、眼图与信号完整性概念

要做SATA链路Bring-up,物理层是绕不开的第一道坎。说白了你得先搞清楚信号是怎么在线上跑的,才能谈得上把它“拉起来”。这一节我们就扒一扒SATA物理层的几个核心概念。

2.1 差分信号:为什么SATA不用单端?

SATA用的是差分信号传输,也就是一对线(A+ 和 A-)来传一个信号。你可能要问:明明一根线就能传,为什么非得用两根?

抗共模噪声是核心原因。外部干扰会同时叠加在两根线上,接收端只认两根线的差值,干扰就被抵消了。我在项目中遇到过强电磁干扰环境下,单端信号眼图完全闭合的情况,换成差分对立马就干净了。

单端 vs 差分信号对比
特性单端信号差分信号 (SATA)
线数1根信号线 + 1根地2根信号线 (A+, A-)
抗干扰弱,噪声直接叠加强,共模噪声被抵消
EMI较大较小,辐射互相抵消
电压摆幅大 (通常3.3V/5V)小 (典型800mV~1.2V差模)
参考点地平面相互参考
个人习惯:做Bring-up时我会先用示波器看A+和A-的单端波形,确认两个波形幅度一致、相位相反。如果看到幅度不一致,多半是PCB走线不等长或者耦合出了问题。

SATA差分对的电气规范要求阻抗控制在100Ω±15%。这个阻抗匹配一旦偏了,信号反射就会让眼图质量直线下降。嗯,后面调试眼图时会反复遇到这个问题。

2.2 Gen1/Gen2/Gen3速率:不是简单的乘法

SATA三代速率——1.5Gbps、3.0Gbps、6.0Gbps,乍看是翻倍关系。但实际工程中,每代速率带来的挑战完全不是一个量级。

SATA各代速率参数
代际线速率数据吞吐编码方式有效带宽
Gen11.5 Gbps150 MB/s8b/10b120 MB/s
Gen23.0 Gbps300 MB/s8b/10b240 MB/s
Gen36.0 Gbps600 MB/s8b/10b480 MB/s
注意:8b/10b编码意味着每传10bit实际只携带8bit数据,20%的带宽开销。所以表里的有效带宽不是简单地等于线速率/8。

Gen3到6.0Gbps是一个分水岭。1.5Gbps的上升沿时间大概在200ps左右,到了6.0Gbps就只有50ps了。你想想看,50ps的边沿意味着PCB上1cm的走线偏差就会造成明显时序偏移。我以前调一个Gen3链路,就因为连接器到芯片的走线差了5mm,眼图直接打到0.3UI以下。

速率协商是Bring-up的关键环节。上电后主机和设备会在物理层做速率协商——从Gen1开始尝试,匹配后锁定。如果协商失败,链路会回退到更低速率或者直接挂死。我个人习惯先把Gen1跑通,再逐级往上升,不要一上来就冲Gen3。

2.3 眼图与信号完整性:物理层的“体检报告”

眼图是信号质量的直接体现。你把示波器接到差分对上,用时钟触发累加显示,就会看到一个像眼睛一样的图案。这个眼睛开得越大,信号质量越好;眼睛闭得越小,问题越严重。

眼图里能读出什么?

  • 眼高:信号幅度的裕量。Gen3要求眼高不低于300mV。
  • 眼宽:采样窗口的宽度。Gen3要求眼宽不低于0.4UI。
  • 抖动 (Jitter):信号的时序偏移。分随机抖动和确定抖动。
  • 过冲/下冲:信号超过或低于稳态值的幅度。
我曾经在项目中遇到眼图上有一个明显的“模棱两可”区,排查到最后发现是SATA连接器虚焊导致阻抗不连续。换个连接器,眼图就正常了。所以Bring-up时遇到眼图不好,优先检查物理连接。

信号完整性的三大杀手

  1. 反射:阻抗不匹配造成。典型场景是过孔、连接器、走线分支。解决办法是优化阻抗、加端接。
  2. 串扰:相邻信号线间互相耦合。SATA本身就是差分对,抗串扰能力较强,但差分对之间的间距不够也会出问题。
  3. 损耗:高频信号在PCB介质中的衰减。Gen3的6GHz信号损耗比Gen1的1.5GHz大得多。走线越长,损耗越严重。

下面是SATA物理层知识体系的一个快速概览图,帮你建立整体结构感。

SATA物理层知识体系 SATA物理层知识体系 差分信号 A+ / A- 差分对 抗共模噪声 100Ω±15% 阻抗 低EMI辐射 速率标准 Gen1: 1.5 Gbps Gen2: 3.0 Gbps Gen3: 6.0 Gbps 8b/10b 编码 信号完整性 眼图分析 反射 / 串扰 / 损耗 抖动 (RJ/DJ) 过冲 / 欠冲 Bring-up 关键动作 速率协商 (OOB信号) 阻抗匹配检查 调试工具 示波器 + 差分探头 TDR 时域反射仪 常见问题 连接器虚焊 / 断裂 走线不等长 核心思路 速率越高,对差分信号质量和信号完整性的要求越苛刻

关键点:SATA物理层Bring-up的核心就是验证差分信号是否能以目标速率、在满足信号完整性要求的前提下,从发送端无误地传到接收端。眼图是最终的检验标准。

2.4 实际操作中怎么拿到好眼图?

这里分享几个我在调试中总结下来的实操点:

  • 检查差分对的直流耦合:SATA是交流耦合的,中间有隔直电容。电容放错位置或者容值不对都会影响低频分量。
  • 确认参考时钟:SATA的参考时钟精度要求±350ppm。时钟抖了,数据信号必然跟着抖。
  • 用码型发生器发COM/ALIGN原语:这类特定码型能帮你在示波器上快速观察到重复的眼图。
  • 看模板(mask)测试:不要只看眼图“有个眼睛”,要用模板去套。SATA Gen3的模板非常严格,稍微超一点就要排查。
我曾经碰到过一个诡异的问题:眼图模板测试总是fail在某个特定区域,但各种器件和走线都测过没问题。最后发现是电源纹波太大,耦合到了SATA链路上。加了一颗去耦电容就解决了。所以眼图不好,不要只盯着信号路径,电源也要查。

这节的内容够实用了。把差分信号、速率等级、眼图这些物理层底子打好,后面讲OOB训练和链路协商时你就能更快上手。做Bring-up,物理层是地基,地基不稳上层全白搭。