4. 多Lane通信系统架构(SerDes、PCIe、DDR等)归纳总结
搞清楚了Skew是什么,也知道了测量的基本思路。接下来咱们得看看这些“多Lane系统”到底长什么样。说实话,不同系统的Lane定义、时钟关系、Skew来源差别还挺大的。
我个人习惯把常见的多Lane系统分成三大类:高速串行接口(SerDes类)、并行总线(比如带Source-Sync的DDR)、以及像PCIe这种既串行又讲究Lane绑定的协议。它们的Skew特性完全不在一个量级上,补偿策略也天差地别。
4.1 SerDes系统架构
SerDes可以说是我调试最头疼的系统之一。每个Lane都有独立的PLL、CDR和均衡器。你想想看,如果8个Lane共用同一个时钟源,按说Skew只来自走线。但实际每个Lane的CDR恢复时钟相位是独立的,PLL的抖动、分频器的状态都可能不同。
具体的架构特点我列一下:
- 每Lane独立时钟域:即使共用输入参考时钟,CDR恢复后的数据时钟也不同
- TX端可能有固定Skew:串化器内的触发器摆放、PLL输出分布网络都会引入
- 通道Skew主导:10Gbps速率下,1inch FR4走线差约等于50ps Skew
- RX端均衡器引入可变延迟:CTLE、DFE的适应过程会改变有效延时
4.2 PCIe系统架构
PCIe可以说是踩坑重灾区。尤其是Gen3之后的协议,要求Lane之间Skew小于若干个UI。但这里的“Skew”定义和SerDes还不完全一样。PCIe在RX端有弹性缓冲,允许每个Lane独立做位级和符号级对齐。
我记得有一次调试PCIe Gen3 x4链路,眼图测试每条Lane都很好,但LTSSM就是无法从Recovery进入L0。后来发现是PCH那端4个Lane的De-Skew步进锁定时间不同,导致协议层的SKP Ordered Set对齐失败。嗯,协议层的问题往往最隐蔽。
| PCIe世代 | Lane速率 | Lane间Skew容限 | 去偏斜方法 |
|---|---|---|---|
| Gen1/2 | 2.5/5 GT/s | ≤ 20 ns(符号级) | 弹性缓冲 + De-Skew序列 |
| Gen3 | 8 GT/s | ≤ 6 ns(块级) | Lane Deskew + 块对齐 |
| Gen4/5 | 16/32 GT/s | ≤ 3 ns(符号级) | 动态去偏斜 + 自适应 |
4.3 DDR系统架构
DDR本质上是个源同步系统。每个字节通道(Byte Lane)有专用DQS信号作为时钟参考。我见过不少把DDR Skew和SerDes Skew混为一谈的设计,两个完全不是一个概念。
写操作时,DQ和DQS由主控同步发出,DRAM内部通过DQS锁存DQ。读操作时,DRAM会把DQS和DQ边沿对齐后再发回。这里的Skew主要来自两个方面:
- Write-Leveling时的Per-Lane延时调谐:主控和DDR颗粒之间因为Fly-By拓扑导致DQS和CLK有相位差
- Read DQS门控:每颗颗粒的Read DQS输出时间窗口不同,必须在CA侧做门控调谐
我曾经在DDR3调试中碰到过一个诡异的读错误。6层板设计,4片颗粒共用DQS。板厂报告说Lane3和Lane4走线长度差20mil。我以为这点差别的Skew不会出问题。结果在DDR3-1866时序下,那根最长的Lane在读毛刺调谐窗口范围内总是抓不到有效数据。最后不得不把CA延时字调高了一档,问题才解决。
关键对比:
- SerDes Skew:每Lane独立CDR → 需要Cross-Lane去偏斜训练
- PCIe Skew:协议层弹性缓冲 → 自动恢复,但需注意SKP有序集对齐
- DDR Skew:源同步时钟 + Write/Read调谐 → Per-Lane延时步进补偿
4.4 核心归纳与实战对比
讲到这里,我想你可能已经发现了——不同系统的Skew补偿手段,本质上都是在“训练阶段”通过硬件或固件去对齐Lane之间的相位差。但量级和实现方式完全不同。
我个人喜欢用一张表格把几个核心维度列出来,做方案选型时非常有用:
| 维度 | SerDes(通用) | PCIe | DDR |
|---|---|---|---|
| 典型Lane数 | 1~80 | 1/2/4/8/16 | 8/16/32(x8颗粒) |
| 时钟架构 | 每Lane独立CDR | 共享RefClk+独立CDR | 源同步DQS |
| Skew主要来源 | 走线长度、PLL相位 | 协议对齐、弹性缓冲 | 走线延时、颗粒工艺 |
| 典型Skew量级 | 20~100 ps | 1~6 ns | 50~200 ps |
| 补偿方式 | 去偏斜码型+均衡 | LTSSM+弹性缓冲 | Write/Read延时调谐 |
| 是否协议内置 | 看具体标准 | 是(LTSSM) | 是(JEDEC训练) |
为什么这个归纳重要?因为后面我们讲具体测量方法时,你得先选对“靶心”。SerDes你要盯着CDR输出测试点去抓Cross-Lane延迟;PCIe你得关注SKP有序集的到达时间差;DDR你就老老实实对应Write Levelling和Read DQS门控的延时字去量。