2. SATA链路简介
SATA 这个接口,做 SI 的人几乎天天见。但它这些年到底变了多少,物理层又藏着哪些坑,很多人其实没仔细捋过。今天咱们就把它掰开看看。
2.1 SATA 标准演进:从 1.5G 到 6G 再到其他
SATA 标准最早是 2003 年定下来的,当时叫 SATA 1.5Gbps,信号速率 1.5 GT/s,用的是 8b/10b 编码。我那时候刚入行,觉得这速度挺快,做个仿真也就看看时域反射。后来 SATA 2 出来,速率翻倍到 3 Gbps,大家才开始重视通道损耗。
到了 SATA 3(6 Gbps),是个分水岭。速率再翻倍,但电压摆幅从原来 ±400 mV 降到了 ±200 mV 左右。信号更弱,抖动更敏感,通道损耗成了瓶颈。说白了,SATA 6G 之前的链路设计经验,到这儿基本作废了。
下面是几代 SATA 的关键参数对比,你看着记一下:
| 世 代 | 信号速率 | 编码方式 | 电压摆幅(典型) | 主要变化 |
|---|---|---|---|---|
| SATA 1.5G | 1.5 GT/s | 8b/10b | ±400 mV | 替代 PATA |
| SATA 3G | 3.0 GT/s | 8b/10b | ±400 mV | 加入 NCQ、波特率翻倍 |
| SATA 6G | 6.0 GT/s | 8b/10b | ±200 mV | 降低摆幅、增加预加重/均衡 |
| SATA Express | 8 GT/s 起 | 128b/130b | ±200 mV 以下 | 基于 PCIe 3.0 物理层 |
还有一点,mSATA 和 M.2 只是物理形态,电气上仍然是 SATA 6G 协议。我见过有人把 M.2 通道当成 PCIe 去仿真,结果 SATA 眼图怎么都打不开——那就是搞错了协议层。
2.2 物理层结构归纳:PIPE 接口与子层分工
SATA 的物理层参考了 PCIe 的 PIPE 架构(PHY Interface for PCI Express)。整个物理层从上到下分成两大部分:PCS(物理编码子层) 和 PMA(物理介质适配层)。再往下就是连接器、线缆和 PCB 走线——这些属于 PMD(介质相关子层),通常不在芯片内部。
我个人习惯把物理层拆成三个功能块:发送端、接收端、链路训练与状态机(LTSSM)。你拿具体芯片的 datasheet 一对照,基本都能对上。
- PCS 层:负责 8b/10b 编解码、弹性缓冲(处理时钟频率差)、链路状态机控制。这块主要跑数字逻辑。
- PMA 层:串行化 / 解串行化、时钟恢复(CDR)、预加重 / 去加重、接收均衡(CTLE/DFE)、摆幅控制。这些都是模拟电路,对 SI 影响最大。
- LTSSM:控制链路从复位到正常工作的状态转换,包括检测、校准、电气空闲等等。调试时经常要看它卡在哪个状态。
一个实用的避坑指南:我曾经遇到一个 SATA 6G 项目,眼图在 SS 角下怎么也过不了,CTLE 调到最大也没用。后来查 LTSSM 日志,发现链路在接收端自动均衡阶段反复失败,原因是板级回损太大,导致均衡器收敛到错误系数。从那以后,我养成习惯——先看回损 S11 再做眼图仿真。
另外,PIPE 接口把物理层抽象成一组状态信号,比如 TXelecidle、RxValid、RxStatus 等。做仿真的时如果只看差分 S 参数,不关注这些状态时序,很容易漏掉链路训练阶段的瞬态问题。嗯,这里要提醒一句:SATA 的物理层并不是一直稳定工作,它有很多状态切换,频率变化也不小,S 参数在窄带内测出来好看,不代表全链路能跑起来。
2.3 S 参数在 SATA 链路中的价值
之所以要在 SATA 链路里引入 S 参数,核心原因只有一个:6 Gbps 速率下,通道的频域特性直接决定眼图能否张开。时域反射(TDR)只能看阻抗不连续的位置,但没法量化损耗和反射对不同频率分量的影响。
SATA 协会给了一套基本要求,拿 SATA 6G 来说:
| 参数 | 要求(典型) | 影响 |
|---|---|---|
| S21 插损 @ 3 GHz | ≥ -12 dB | 幅度衰减,眼高变小 |
| S11 回损 @ 0~3 GHz | ≤ -10 dB | 反射导致码间干扰 |
| 通道内抖动 | ≤ 0.25 UI | 随机+确定性抖动压缩眼宽 |
这些数字只是最低门槛。实际项目里,我建议把 S21 余量做到 3 dB 以上,否则温度、电压一波动,眼图可能直接关掉。还有,别只看插损曲线,S11 的谐振尖峰经常是导致误码的隐形杀手。
一个小技巧:仿真 SATA 6G 通道时,把 S 参数 S2P 文件导入仿真器后,先扫一下群延迟。群延迟波动超过 ±100 ps,说明通道有严重的相位非线性,均衡起来非常吃力。我个人优先检查这个,比直接看眼图快得多。
物理层与标准演进的关系图
下面这张图总结了 SATA 标准从 1.5G 到 6G 再到 SATA Express 的演进路径,以及物理层的分层结构。你一看就能理解它们之间的对应关系。
从图里可以看到,SATA Express 已经改用 128b/130b 编码,物理层实质上就是 PCIe 3.0 那一套。单独的 SATA 6G 短期内仍然是主流,不会马上消失。做好 SATA 6G 的 S 参数分析,就能覆盖市面上 80% 的场景。
建议:如果你们项目里同时使用 SATA 和 PCIe,可以共用 PIPE 接口的仿真平台,只需要换一下 LTSSM 的状态机和编码方式。我亲自试过,这样复用能省掉一半的仿真模型开发时间。