SATA 接口简介

做信号完整性的人,逃不开 SATA。不管是硬盘还是 SSD,你打开产品手册,第一眼看到的就是 SATA 接口。我个人习惯先搞清楚一个接口的来龙去脉,再看眼图才有底。这一节我们就聊聊 SATA 协议怎么一步步走到今天,物理层有哪些硬指标,以及那些你调试时不得不盯死的电气参数。

SATA 协议发展历程

SATA 从 2000 年提出到现在,基本经历过三代大版本。

  • SATA 1.0(2003 年):替代 PATA 的第一步。速率 1.5 Gbps,单通道。我记得当时最大的卖点是热插拔和更细的线缆。嗯,当年做主板测试,最头疼的就是兼容老硬盘,很多早期盘对信号质量特别敏感。
  • SATA 2.0(2004 年):速率翻倍到 3 Gbps,增加了 NCQ 和端口选择器。其实眼图裕量开始紧张了,我在项目里遇到过升速后眼高不够的案例,最后靠调整预加重才过。
  • SATA 3.0(2009 年):6 Gbps,一直用到现在。关键是引入了等长设计和更严格的抖动规范。你想想看,6 Gbps 下一个 UI 只有 166 ps,稍微一点 ISI 就把眼图关上了。
  • SATA 3.1 / 3.2 / 3.3:在 6 Gbps 基础上做功能修补,比如 DevSleep、ReBuild Assist。速率没变,但协议层加了省电和错误恢复逻辑,物理层测试方法反而更复杂了。

为什么没往 12 Gbps 走?说白了,消费级市场转向了 PCIe(NVMe),SATA 12 Gbps 被 SAS 4 继承了。不过在实际产品中,SATA 6 Gbps 仍然大量存在,尤其嵌入式存储和工业级 SSD。

SATA 物理层特性

物理层说白了就是信号怎么从主控到设备,以及设备怎么应答。我们做测试最关心的几个点:

  • 差分传输:SATA 用一对差分线 Tx+/Tx- 和一对 Rx+/Rx-,共 4 根信号线。差分阻抗 100 Ω ±15%。我在产线上测过不少劣质线缆,差分阻抗偏到 85 Ω,眼图直接塌了。
  • AC 耦合电容:发送端要求串接 0.01 µF ~ 0.1 µF 的电容。这个电容不能随便选。我曾经遇到一批电容 ESR 偏大,导致低频增益不足,眼图底部出现“鼓包”。
  • 预加重与去加重:SATA 2.0 以后,发送端必须支持至少 3 级去加重。你在调试眼图时,如果发现眼部上下不对称,十有八九是去加重没配好。
  • OOB 信号:带外信号用来做设备检测和唤醒。它的电压幅度比正常数据小很多,但时序要求很严。嗯,这里要注意,很多眼图误码都是在 OOB 切换瞬间出现的。

SATA 信号速率及电气参数

直接上表格,这些参数你调试时必须背下来:

参数 SATA 1.0 SATA 2.0 SATA 3.0
信号速率 1.5 Gbps 3.0 Gbps 6.0 Gbps
单位间隔 (UI) 666 ps 333 ps 166 ps
发送端差分电压 400~600 mVpp 400~600 mVpp 400~600 mVpp
接收端差分灵敏度 ≥ 50 mV ≥ 50 mV ≥ 35 mV
抖动容限 (TJ) ≤ 0.30 UI ≤ 0.30 UI ≤ 0.25 UI
随机抖动 (RJ) ≤ 0.05 UI rms ≤ 0.05 UI rms ≤ 0.03 UI rms
码间干扰 (ISI) ≤ 0.15 UI ≤ 0.15 UI ≤ 0.10 UI

关键理解:SATA 3.0 的 UI 只有 166 ps,抖动允许 0.25 UI 也就是 41.5 ps。这意味着你的整个通道串扰、反射、电源噪声加起来不能超过 40 ps。稍微一个过孔阻抗不连续,眼图就闭合了。

我建议你把这张表打印出来贴在工位旁边。每次测眼图之前,先核对一下规格再下结论。

SATA 物理层知识结构

下面这张图把 SATA 物理层的主要知识点串在一起。你可以在调试时当作检查清单用。

SATA 物理层知识结构图 SATA 物理层知识结构 协议版本 SATA 1.0 / 2.0 / 3.0 速率 1.5 / 3.0 / 6.0 Gbps 物理层特性 差分对 100 Ω ±15% AC 耦合电容 0.01~0.1 µF 预加重 / 去加重 ≥ 3 级 OOB 带外信号 关键电气参数 差分电压 400~600 mVpp 抖动容限 0.25~0.30 UI ISI ≤ 0.10 UI (3.0) 接收灵敏度 ≥ 35 mV 最终目标:通过眼图验证所有指标在模板内 眼高 ≥ 200 mV、眼宽 ≥ 0.40 UI、抖动 ≤ 规格

个人小技巧:我一般在设计阶段就把上图的几个参数做成 Excel 模板,每到一个节点就填实际测量值。如果发现 ISI 接近 0.10 UI,我就提前加大去加重,避免后期改板。这招救过我至少三次项目延期。

电气参数细说——你真正要盯死的东西

参数表看起来简单,但实际调试时坑很多。我挑几个容易出问题的讲讲。

发送端差分电压:400~600 mVpp

这个范围看似宽松,但你得考虑损耗。如果通道插损超过 10 dB,到了接收端可能只剩 200 mV 不到。我建议在连接器出口测电压,如果低于 450 mV,赶紧检查预加重设置和线缆质量。

抖动容限:0.25 UI (SATA 3.0)

0.25 UI 在 6 Gbps 下是 41.5 ps。但这是总抖动(TJ)。随机抖动(RJ)只给了 0.03 UI rms 约 5 ps。实际项目中,电源纹波造成的确定性抖动(DJ)很容易吃掉 20 ps。我曾经遇到一个案子,DCDC 开关频率刚好落在数据模式重复频率上,抖动直接超标。最后换了低纹波电源芯片才过。

码间干扰 (ISI):≤ 0.10 UI

ISI 是眼图闭合的最大元凶。说白了,就是前面几个比特影响了当前比特的幅度和相位。原因通常是阻抗不连续、via stub 太长或线宽变化。怎么判断?看眼图顶部和底部是否有“尾巴”。如果眼高还行但眼宽不够,加去加重;如果眼宽够但眼高偏低,试试加接收均衡。

重要提醒:不要只看眼图模板的通过/不合格结果。我在项目里见过模板过但批量误码率高的案例。一定要结合误码率测试(BERT)做对比。如果误码率 > 1e-12,即使眼图模板通过,也要回头查抖动分离。

嗯,这一章的内容如果全消化了,你对 SATA 物理层的骨架就心里有数了。接下来我们要正式搭建眼图模板,所有的参数都会反复用到。希望你把这些数字刻在脑子里——它们就是你调试时的救命系数。