发送端PMA详解:Serializer、差分驱动与预加重/去加重
咱们开始聊GTY发送端的核心部分——PMA。很多人一看到PMA就觉得是纯模拟电路,敬而远之。其实你把它拆开看,主要就三块:并串转换(Serializer)、差分输出驱动、以及信号调理(预加重/去加重)。我当年刚接触高速串行设计时,就是卡在这三者的配合上,吃了不少苦头。
Serializer结构:并到串的硬功夫
Serializer,说白了就是把PCS送过来的并行数据,变成一对高速差分信号。GTY的Serializer速率能跑到32.75Gbps,这个速度下,时序窗口小得可怜。
咱们先看看它的基本架构:
- 输入:来自PCS的并行数据,通常是8B/10B或64B/66B编码后的数据宽度(常见40位、80位或160位)
- 核心:多级级联的并串转换树(PISO结构)
- 输出:一对差分信号,速率等于并行时钟频率 × 并行数据宽度
我记得有一块板子,Layout没控制好Serializer的时钟域,结果在10Gbps速率下误码率高得离谱。后来发现是并行时钟和串行时钟的相位关系没处理好,Serializer在边界采样时送出了毛刺。
核心结构是这样一个多级树:
| 级数 | 输入宽度 | 输出宽度 | 时钟频率(GHz) |
|---|---|---|---|
| 第1级 | 40b | 20b | 时钟/2 |
| 第2级 | 20b | 10b | 时钟/4 |
| 第3级 | 10b | 5b | 时钟/8 |
| 第4级 | 5b | 1b | 时钟/40 |
差分输出驱动:把电信号送上通道
Serializer输出的是单端小信号,这玩意儿在板上跑不了几厘米。差分输出驱动的作用就是把这小信号变成大摆幅的差分电流,驱动PCB走线。
GTY采用CML(Current Mode Logic)架构驱动。特点就是:
- 输出共模电压固定(通常是GND + 一个电平)
- 输出阻抗匹配50Ω(单端到地)
- 摆幅可通过寄存器调节(400mV~1000mV峰峰值,差分)
你可能会问,为什么不直接用LVDS?嗯,LVDS摆幅太小了,在长距离背板上不够用。CML能提供更大的驱动电流,适合更长的通道。
我曾经遇到过一个坑:输出摆幅设太大,导致近端串扰严重。当时调试一块16口的PCIe Gen4交换机,信号质量死活过不去。后来发现是TX摆幅设到了最大值,串扰把相邻通道全覆盖了。降到800mV之后,一切都好了。
这里有组经验数据:
| 通道长度(英寸) | 建议摆幅(mV,差分) | 预加重设置 |
|---|---|---|
| <5 | 500~600 | 关闭或低档 |
| 5~15 | 600~800 | 轻档 |
| 15~30 | 800~1000 | 中档 |
| >30 | 900~1000 | 高档 |
预加重与去加重:给信号打上补丁
高速信号在PCB走线上跑,会有个叫“趋肤效应”的东西——高频损耗严重。同样跳变的信号,从0到1比从0到0损耗大得多。这就导致你这个“1”到了接收端,可能已经瘪成了“0”。
预加重和去加重,就是专门对付这个问题的。嗯,我先说白了一句话:
- 预加重:在信号的跳变沿,额外多给一点能量
- 去加重:在信号的平稳段,稍微压低一点
这两个技术听起来名字相反,但目的一样——让接收端看到的眼图“睁”得更大。
预加重的原理:
假设我要发送一个“00111100”的序列。第一个“1”从“0”跳变过来,通道损耗最大。预加重会在这一拍多输出一个大的摆幅,后续连续的“1”则恢复正常摆幅。这样接收端看到的“1”幅度均匀了。
去加重的原理:
去加重正好相反。我不主动加强跳变,而是压低连续的“1”或“0”。这样,在接收端看来,跳变沿的幅度没变,但平稳段的幅度低了,相对而言跳变就更突出了。
GTY系列推荐使用去加重——因为它在低功耗下获得更好的信号质量。我个人也用它多一些。
举个例子:
假设基本摆幅是800mV。去加重设为-3dB:
- 跳变沿:输出800mV(全摆幅)
- 后续连续位:输出800mV × 10^(-3/20) ≈ 566mV
这样在接收端,跳变沿和连续位之间的幅度差更大,眼图更清晰。
我曾经调试过一块背板,走线长36英寸,怎么调都过不了误码率。后来试着把去加重从-3dB调到-6dB,眼高瞬间从5%提升到15%。嗯,这个世界就是那么魔幻。
预加重 vs 去加重
| 对比项 | 预加重 | 去加重 |
|---|---|---|
| 实现方式 | 增加跳变沿幅度 | 降低平稳段幅度 |
| 功耗 | 略高(增加输出摆幅) | 较低(压低输出幅度) |
| 适用场景 | 通道损耗极严重 | 一般高速链路 |
| GTY支持 | 部分优化 | 主要模式 |
这图展示了PMA发送端的完整数据流。从PCS的并行数据进来,经过Serializer变成串行,再经过预加重/去加重调理,最后由CML驱动送出去。下方的眼图对比说明:去加重后,眼图质量明显提升。
总结下来,发送端PMA就这么三块东西。理解它们,你就能搞定GTY的发送链路了。嗯,千万别小看这些细节,我当年花了整整两周才把一条链路的信号质量调到能过一致性测试。