第二章 差分信号与差分对介绍
你有没有想过——为什么高速信号很少用一根线走到底?
我刚开始做硬件那会儿,看到原理图上成对的走线,心里也犯过嘀咕。明明一根线能传的东西,干嘛非要绕两倍的路?后来吃过几次亏才明白:差分信号不是"多此一举",而是高速设计里绕不开的基石。今天咱们就把这块基石彻底啃透。
本章核心:搞懂差分信号的定义、它到底好在哪里、差分对长什么样。这些是后续用TDR做长度匹配判定的理论底子,底子不牢,后面全白搭。
2.1 从单端到差分——换个思路看信号
先说说我们最熟悉的单端信号。一根信号线,一个地平面,电平高低代表0和1。简单、直接、省线,对吧?但问题也出在这里:它太"依赖"地了。
地平面不是理想的。数字电路一翻转,地弹噪声就窜上来。信号频率越高,地回路上的压降越明显。我在项目中遇到过一块四层板,DDR时钟线走单端,结果地平面有0.3V的噪声,直接把时序吃掉了。那感觉,就像你跟人说话,背景噪音比你的声音还大。
那差分信号怎么解决的?它用了两根线——P(正)和N(负)——来传一个信号。P和N幅度相同、极性相反。接收端只看两者的差值:Vdiff = VP − VN。
说白了,地弹噪声同时耦合到P和N上,差值一减,噪声就抵消了。嗯,这就是差分信号最朴素、也最厉害的地方。
| 对比项 | 单端信号 | 差分信号 |
|---|---|---|
| 信号线数量 | 1根 + 地 | 2根(P/N) |
| 参考平面 | 地平面 | 互为参考 |
| 抗共模噪声 | 弱 | 强 |
| EMI辐射 | 较高 | 低 |
| 电压摆幅 | 通常3.3V/1.8V | 可低至350mV |
| 最大速率 | 受限于地噪声 | 可达数十Gbps |
小经验:并不是所有场合都适合用差分。低频模拟或者纯数字控制线,单端完全够用。我一般只在高频(>100MHz)或对噪声敏感的接口上才转差分,省成本也省布线空间。
2.2 差分信号到底好在哪?
上面提到了抗共模噪声,这只是开胃菜。差分信号还有几个硬核优势,我一个个说。
2.2.1 抗共模噪声——天生的免疫系统
任何外部噪声——电源抖动、地弹、电磁耦合——只要同时等量地出现在P和N上,就被差分接收端当成"共模成分"直接减掉。你想想看,这等于给信号装了个天然的共模滤波器,不花一分钱。
2.2.2 电磁辐射低——两根线的"互相救赎"
P和N电流方向相反,产生的电磁场在远场区域相互抵消。我测过同一个时钟信号在单端和差分两种走法下的辐射值:单端在300MHz处有12dB的超标尖峰,改成差分后直接降到限值以下。PCB厂的人看了都说省了屏蔽罩的钱。
2.2.3 低电压摆幅——又快又省
差分信号不需要大幅度的电压跳变。LVDS的典型摆幅才350mV,PCIe Gen5更是低到200mV左右。摆幅小,意味着充放电时间短、功耗低、信号边沿陡。这也是为什么差分能轻松做到几十Gbps的速率。
2.2.4 时序裕量更充裕
接收端通过比较P和N的交叉点来判断跳变时刻,而不是靠一个固定的阈值电平。这个交叉点对工艺、温度、电压的漂移不敏感。说白了,时序窗口更稳了。我做DDR5仿真的对比数据可以佐证:同一条走线,差分方案的建立/保持时间窗口比单端宽了约25%。
注意:差分信号的优势是有前提的——P和N必须严格对称。一旦两根线的长度、阻抗、耦合出现偏差,上面说的那些好处就会打折扣。严重时比单端还差。嗯,这就是我们这门课要解决的问题。
2.3 差分对的基本结构
差分信号需要用差分对来承载。差分对不是随便拉两根平行线就完事。它有三根"柱子":等长、阻抗控制、耦合方式。
2.3.1 等长走线——长度匹配是命门
P和N必须等长。为什么?因为不等长会导致信号到达接收端的时间错开,共模噪声无法抵消,还产生共模分量。这个共模分量反过来又会变成EMI辐射源。
我曾经吃过一次大亏:一块SATA 6Gbps的背板,差分对长度差了180mils,大概4.5mm。测试时眼图闭合得像荷包蛋,TDR一看,共模反射严重。后来把长度差修到20mils以内,眼图一下就睁开了。那次之后,我再也不信"差不多就行"这种鬼话。
长度匹配的典型要求:
- LVDS:±100mils以内
- USB 3.0:±50mils以内
- PCIe Gen4/5:±20mils以内
- HDMI 2.1:±15mils以内
我个人的习惯:在设计阶段就留好绕线空间,用的蛇形线补偿长度差。注意蛇形的间距至少要3倍线宽,否则耦合太强反而坏事。
2.3.2 阻抗控制——差分阻抗要管住
差分对的两根线各自有对地的单端阻抗,但作为差分对使用时,我们更关心差分阻抗Zdiff。它和单端阻抗Z0、耦合系数k的关系是:
Zdiff = 2 × Z0 × (1 - k)
主流差分接口的Zdiff标准值一般在90~100Ω。板厂通过调整线宽、线距、介质厚度来达到目标值。
下面这个简单的Python函数,可以在设计初期快速估算差分阻抗:
def estimate_diff_imp(single_end_imp, coupling_coeff):
"""
估算差分阻抗
:param single_end_imp: 单端阻抗(Ω)
:param coupling_coeff: 耦合系数(0~1)
:return: 差分阻抗(Ω)
"""
zdiff = 2 * single_end_imp * (1 - coupling_coeff)
return round(zdiff, 1)
# 示例:单端50Ω,耦合系数0.2
print(estimate_diff_imp(50, 0.2)) # 输出 80.0
print(estimate_diff_imp(50, 0.1)) # 输出 90.0
2.3.3 耦合方式——边缘耦合 vs 宽边耦合
| 耦合方式 | 结构 | 优点 | 缺点 | 常用场景 |
|---|---|---|---|---|
| 边缘耦合 | 两根线在同一层并排走 | 工艺简单,调试方便 | 占用面积大 | PCB表层走线 |
| 宽边耦合 | 两根线在相邻上下层 | 耦合强,面积小 | 过孔多,层间对准要求高 | 高密度互连(HDI) |
2.4 差分对的关键参数速览
做TDR检测时,你会反复跟这几个参数打交道。提前混个脸熟:
- 差分阻抗Zdiff:目标值通常90Ω或100Ω,TDR可以直接测量。
- 时延差Skew:P和N的传播时延之差,直接反映长度匹配程度。我们的课程核心就是怎么用TDR精准测这个值。
- 耦合系数k:影响阻抗和EMC,TDR共模测试可以反推。
- 共模阻抗Zcm:P和N对地的并联阻抗,反映共模回流路径质量。
避坑指南:我曾经见过一个项目,差分阻抗TDR测出来是98Ω,完全OK。但眼图就是打不开。后来才发现P和N的时延差了30ps,换算成长度差大约6mm。所以,阻抗合格不代表长度匹配合格。两个指标必须分开管控。
2.5 常见差分接口标准一览
下面这个表,覆盖了目前主流的差分接口标准。做TDR检测时,这些参数就是你的"靶子":
| 接口标准 | 差分阻抗(Ω) | 典型摆幅(mV) | 最大速率 | 长度匹配要求(典型) |
|---|---|---|---|---|
| LVDS | 100 | ±350 | 3.125 Gbps | ±100 mils |
| USB 2.0 | 90 | 400 | 480 Mbps | ±200 mils |
| USB 3.0 | 90 | 400 | 5 Gbps | ±50 mils |
| HDMI 2.1 | 100 | 400 | 48 Gbps | ±15 mils |
| PCIe Gen5 | 100 | 200 | 32 GT/s | ±20 mils |
| SATA 3.0 | 100 | 400 | 6 Gbps | ±30 mils |
一句话总结本章:差分信号用两根对称的线解决了单端信号的噪声瓶颈;差分对的核心是等长、阻抗、耦合;而我们这门课要做的,就是用TDR这把"尺子"精准测出长度匹配的好坏。这张知识框架图,帮你把本章内容串起来: