物理层基础:差分信号、通道特性与速率等级

各位好,咱们继续往下聊。上一章我大概讲了SATA协议的整体架构,今天咱们扎进物理层,看看最底层的信号长什么样。

很多人觉得物理层就是一堆枯燥的电气参数,背下来就行。其实不是这样。我在调试SATA链路时,有一半的问题都出在这层。你想想看,协议再复杂,最终都得靠一对铜线上的电平变化来传递。这层如果没搞明白,后面链路训练出问题时,你连从哪下手都不知道。

差分信号:为什么是两根线?

SATA的物理层用的是差分信号传输。所谓差分,就是用两根线(T+和T-)来传输一个比特信息。发送端在T+和T-上输出幅度相等、极性相反的信号;接收端看的是两根线之间的电压差,而不是对地的电压。

核心公式:Vdiff = VT+ – VT-

当Vdiff > 0 时表示逻辑1,Vdiff < 0 时表示逻辑0。

好处很明显:抗共模噪声。外界的电磁干扰通常同时作用在两根线上,差分对一减,干扰就抵消了。我记得刚接触SATA时,总觉得差分信号是多余的——单端信号不是更简单吗?直到有一次在产线上看到,某个电源噪声大的平台,单端信号的眼图已经塌成一片,而差分信号还能正常跑。从那以后,我再也不敢小看差分对。

此外,差分信号的电压摆幅小,功耗更低。SATA Gen3的差分峰值摆幅只有400~600 mV,比传统的单端TTL信号动辄3.3 V要小得多。

避坑指南:我曾经在PCB布局时,把差分对的两根线走成了不对称的长短。结果眼图质量一塌糊涂,链路训练经常失败。后来才发现,差分对的等长要求非常严格,Gen3要求内部长度偏差不超过5 mil。差之毫厘,谬以千里啊。

通道特性:信号在路上经历了什么?

信号从发送端到接收端,经过PCB走线、连接器、线缆、焊盘等一系列物理介质。这些介质就像一条有损耗的信道,信号经过它之后会变形。

一个完整的SATA通道,实际上包含以下几个部分:

  1. 发送端TX——从SATA控制器输出差分信号
  2. 发送端AC耦合电容——用于隔直,典型值0.01μF~0.1μF
  3. PCB走线——差分微带线或带状线
  4. 连接器——SATA接口本身,包括信号针和壳体
  5. 接收端RX——SATA设备或主机的物理层接收器

影响信号质量的主要因素有:

  • 衰减:高频信号的幅度会随着走线长度增加而降低。频率越高,衰减越严重。Gen3工作在6 Gbps,基频约3 GHz,这个频率下PCB介质的损耗相当可观。
  • 串扰:相邻信号线之间的电磁耦合。SATA差分对本身抗串扰能力强,但如果在PCB上与其他高速信号靠得太近,照样会出问题。
  • 阻抗不连续:差分阻抗要求100Ω±15%。过孔、换层、连接器焊盘等位置,很容易出现阻抗突变,造成反射。
  • 码间干扰:前一个比特的残存能量影响后一个比特的判断。说白了,就是信号还没稳定下来,下一个比特又来了。
  • 抖动:时钟和数据的边沿位置偏离理想时刻。抖动又分随机抖动和确定性抖动,后者往往跟电源噪声、串扰有关。
  • 嗯,这里要注意:我们做调试时,不要上来就怀疑协议层。很多链路训练失败的原因,其实是通道损伤太大,接收端根本无法从信号中提取出有效的时钟和数据。我个人习惯先用示波器看眼图,如果眼图是闭合的,那就先别管协议逻辑,先把物理层搞定。

    Gen1/Gen2/Gen3 速率等级

    SATA协议定义了三个速率等级,对应的速度如下:

    参数 Gen1 (SATA 1.5G) Gen2 (SATA 3.0G) Gen3 (SATA 6.0G)
    比特率 1.5 Gbps 3.0 Gbps 6.0 Gbps
    差分峰值摆幅 400~600 mV 400~600 mV 400~600 mV
    单位间隔 (UI) 666.67 ps 333.33 ps 166.67 ps
    编码方式 8b/10b 8b/10b 8b/10b
    有效数据带宽 150 MB/s 300 MB/s 600 MB/s
    眼图模板 (UI内) 0.35 UI 0.35 UI 0.28 UI

    看出来了吗?从Gen1到Gen3,速率翻倍,但单位间隔时间压缩了一半。Gen3的UI只有166.67 ps,意味着每个比特只有不到170 ps的时间窗口。这对信号完整性的要求极高。

    我记得有个项目,主机端支持Gen3,但硬盘端只支持Gen1。链路训练时,双方会通过协商机制确定最终跑Gen1。你如果不知道这个速率回退机制,光看眼图觉得Gen3也能跑,那就白费功夫了。实际上,有些老旧的线缆和连接器,到了Gen3的6 Gbps信号下,损耗超标,眼图根本睁不开。

    电气参数:关注这几个关键指标

    做物理层调试时,经常关注以下几个电气参数:

    • 差分输出电压:VTX-diff,通常在400~600 mV。电压太低,接收端信噪比不够;电压太高,EMI问题严重。
    • 共模电压:VTX-cm,典型值为0V (以差分信号的地为参考)。AC耦合电容将直流分量隔断,接收端偏置由内部生成。
    • 上升/下降时间:20%~80%的过渡时间。Gen3要求小于100 ps。过慢会导致符号间干扰,过快会产生更多高频分量,增加EMI。
    • 总抖动:TJ @ BER=10-12。Gen3要求的眼图开口为0.28 UI,也就是46.67 ps。抖动如果超过这个值,眼图就闭合了。
    • 去加重:Gen3要求发送端具备去加重功能。简单说,就是发送第一个比特时用全摆幅,后续相同比特时降低摆幅,以此补偿高频衰减。嗯,这个在调试中容易被人忽略。
    重要提醒:电气参数不是光看规格书就够的。我曾经遇到一个案例,Gen2链路训练成功,但Gen3就是上不去。示波器一测,眼图闭合。最后发现是连接器插座内部的焊盘寄生电容过大,导致阻抗不连续。这种问题,规格书里根本不会写,只能靠实际测量。

    物理层核心知识结构

    下面这张图梳理了本章的内容框架,帮你建立整体印象:

    物理层核心知识结构 SATA 物理层 差分信号结构 通道特性 速率等级 电气参数 共模抑制 小摆幅低功耗 等长布线要求 衰减与串扰 阻抗不连续 码间干扰ISI Gen1 1.5Gbps Gen2 3.0Gbps Gen3 6.0Gbps 差分输出电压 上升/下降时间 总抖动TJ 物理层是链路训练成功的前提条件 差分对等长、阻抗连续、AC耦合电容位置、眼图模板合规 是物理层调试时需要重点检查的四项

    讲到这里,物理层的基础内容差不多了。我个人觉得,物理层调试的核心就两条:一是理解差分信号的抗干扰原理,二是掌握通道损耗对高频信号的影响。至于Gen1、Gen2、Gen3的速率差异,说到底就是时间窗口不断缩小,对信号质量的要求逐步提高。你在实际项目中,只要抓住眼图和抖动这两个指标,90%的物理层问题都能定位出来。