物理层基础:差分信号、通道特性与速率等级
各位好,咱们继续往下聊。上一章我大概讲了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走线、连接器、线缆、焊盘等一系列物理介质。这些介质就像一条有损耗的信道,信号经过它之后会变形。
一个完整的SATA通道,实际上包含以下几个部分:
- 发送端TX——从SATA控制器输出差分信号
- 发送端AC耦合电容——用于隔直,典型值0.01μF~0.1μF
- PCB走线——差分微带线或带状线
- 连接器——SATA接口本身,包括信号针和壳体
- 接收端RX——SATA设备或主机的物理层接收器
影响信号质量的主要因素有:
- 衰减:高频信号的幅度会随着走线长度增加而降低。频率越高,衰减越严重。Gen3工作在6 Gbps,基频约3 GHz,这个频率下PCB介质的损耗相当可观。
- 串扰:相邻信号线之间的电磁耦合。SATA差分对本身抗串扰能力强,但如果在PCB上与其他高速信号靠得太近,照样会出问题。
- 阻抗不连续:差分阻抗要求100Ω±15%。过孔、换层、连接器焊盘等位置,很容易出现阻抗突变,造成反射。
- 码间干扰:前一个比特的残存能量影响后一个比特的判断。说白了,就是信号还没稳定下来,下一个比特又来了。
- 抖动:时钟和数据的边沿位置偏离理想时刻。抖动又分随机抖动和确定性抖动,后者往往跟电源噪声、串扰有关。
- 差分输出电压: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要求发送端具备去加重功能。简单说,就是发送第一个比特时用全摆幅,后续相同比特时降低摆幅,以此补偿高频衰减。嗯,这个在调试中容易被人忽略。
嗯,这里要注意:我们做调试时,不要上来就怀疑协议层。很多链路训练失败的原因,其实是通道损伤太大,接收端根本无法从信号中提取出有效的时钟和数据。我个人习惯先用示波器看眼图,如果眼图是闭合的,那就先别管协议逻辑,先把物理层搞定。
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信号下,损耗超标,眼图根本睁不开。
电气参数:关注这几个关键指标
做物理层调试时,经常关注以下几个电气参数:
物理层核心知识结构
下面这张图梳理了本章的内容框架,帮你建立整体印象:
讲到这里,物理层的基础内容差不多了。我个人觉得,物理层调试的核心就两条:一是理解差分信号的抗干扰原理,二是掌握通道损耗对高频信号的影响。至于Gen1、Gen2、Gen3的速率差异,说到底就是时间窗口不断缩小,对信号质量的要求逐步提高。你在实际项目中,只要抓住眼图和抖动这两个指标,90%的物理层问题都能定位出来。