2. SATA物理层基础:差分信号、Gen1/Gen2/Gen3速率、眼图与信号完整性概念
要做SATA链路Bring-up,物理层是绕不开的第一道坎。说白了你得先搞清楚信号是怎么在线上跑的,才能谈得上把它“拉起来”。这一节我们就扒一扒SATA物理层的几个核心概念。
2.1 差分信号:为什么SATA不用单端?
SATA用的是差分信号传输,也就是一对线(A+ 和 A-)来传一个信号。你可能要问:明明一根线就能传,为什么非得用两根?
抗共模噪声是核心原因。外部干扰会同时叠加在两根线上,接收端只认两根线的差值,干扰就被抵消了。我在项目中遇到过强电磁干扰环境下,单端信号眼图完全闭合的情况,换成差分对立马就干净了。
| 特性 | 单端信号 | 差分信号 (SATA) |
|---|---|---|
| 线数 | 1根信号线 + 1根地 | 2根信号线 (A+, A-) |
| 抗干扰 | 弱,噪声直接叠加 | 强,共模噪声被抵消 |
| EMI | 较大 | 较小,辐射互相抵消 |
| 电压摆幅 | 大 (通常3.3V/5V) | 小 (典型800mV~1.2V差模) |
| 参考点 | 地平面 | 相互参考 |
SATA差分对的电气规范要求阻抗控制在100Ω±15%。这个阻抗匹配一旦偏了,信号反射就会让眼图质量直线下降。嗯,后面调试眼图时会反复遇到这个问题。
2.2 Gen1/Gen2/Gen3速率:不是简单的乘法
SATA三代速率——1.5Gbps、3.0Gbps、6.0Gbps,乍看是翻倍关系。但实际工程中,每代速率带来的挑战完全不是一个量级。
| 代际 | 线速率 | 数据吞吐 | 编码方式 | 有效带宽 |
|---|---|---|---|---|
| Gen1 | 1.5 Gbps | 150 MB/s | 8b/10b | 120 MB/s |
| Gen2 | 3.0 Gbps | 300 MB/s | 8b/10b | 240 MB/s |
| Gen3 | 6.0 Gbps | 600 MB/s | 8b/10b | 480 MB/s |
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本身就是差分对,抗串扰能力较强,但差分对之间的间距不够也会出问题。
- 损耗:高频信号在PCB介质中的衰减。Gen3的6GHz信号损耗比Gen1的1.5GHz大得多。走线越长,损耗越严重。
下面是SATA物理层知识体系的一个快速概览图,帮你建立整体结构感。
关键点:SATA物理层Bring-up的核心就是验证差分信号是否能以目标速率、在满足信号完整性要求的前提下,从发送端无误地传到接收端。眼图是最终的检验标准。
2.4 实际操作中怎么拿到好眼图?
这里分享几个我在调试中总结下来的实操点:
- 检查差分对的直流耦合:SATA是交流耦合的,中间有隔直电容。电容放错位置或者容值不对都会影响低频分量。
- 确认参考时钟:SATA的参考时钟精度要求±350ppm。时钟抖了,数据信号必然跟着抖。
- 用码型发生器发COM/ALIGN原语:这类特定码型能帮你在示波器上快速观察到重复的眼图。
- 看模板(mask)测试:不要只看眼图“有个眼睛”,要用模板去套。SATA Gen3的模板非常严格,稍微超一点就要排查。
这节的内容够实用了。把差分信号、速率等级、眼图这些物理层底子打好,后面讲OOB训练和链路协商时你就能更快上手。做Bring-up,物理层是地基,地基不稳上层全白搭。