1. 认识高速收发器:GTH/GTY/GTP 到底是什么?
做 FPGA 设计的朋友,迟早会跟高速收发器打交道。我第一次接触这东西是在一个 10G 光通信项目上,当时看着原理图上一堆 GTX、GTH 的引脚,说实话有点懵。后来踩了不少坑,才慢慢摸清楚门道。
今天咱们就来聊聊高速收发器的基础。说白了,它就是 FPGA 里专门负责高速串行通信的硬核模块。Xilinx 家把这玩意儿分成了好几种:GTP、GTH、GTY、GTM 等等。名字看着花哨,但核心原理是一样的。
1.1 为什么需要 SerDes?
传统的并行总线,比如你熟悉的 LVDS,数据线一多,问题就来了。信号偏移、PCB 布线困难、功耗大。我做过一个 32 位并行总线,跑 500MHz,光是等长布线就折腾了两周。
SerDes 就是来解决这个问题的。它把并行数据转成串行,用一对差分线传输。你想想看,32 根线变成 2 根,PCB 走线瞬间清爽了。而且串行信号频率高,但抗干扰能力反而更强。
核心思想: SerDes = Serializer(串化器)+ Deserializer(解串器)。发送端并转串,接收端串转并。
1.2 GTH/GTY/GTP 的区别
很多新手会问:GTH 和 GTP 到底差在哪?我简单总结一下:
| 类型 | 最大线速率 | 适用场景 | 我常用的器件 |
|---|---|---|---|
| GTP | 6.6 Gbps | 千兆以太网、SATA | Artix-7、Spartan-7 |
| GTX | 12.5 Gbps | PCIe Gen2、10G 以太网 | Kintex-7、Virtex-7 |
| GTH | 16.3 Gbps | PCIe Gen3、25G 以太网 | Kintex UltraScale |
| GTY | 32.75 Gbps | 100G 以太网、Interlaken | Virtex UltraScale+ |
| GTM | 112 Gbps | 800G 以太网 | Versal |
嗯,这里要注意:速率越高,功耗越大,设计难度也越大。我建议新手先从 GTP 或 GTX 入手,别一上来就搞 GTY。
1.3 SerDes 的基础原理
SerDes 的工作流程,我用一个简单的图来说明:
发送端这边,PLL 把参考时钟倍频到高速率,Serializer 把 n 位并行数据逐位串行输出。接收端更复杂一些,CDR(时钟数据恢复)要从数据流里提取时钟,然后 Deserializer 再把串行数据转回并行。
我的经验: 刚开始做 SerDes 设计时,总觉得 CDR 很神秘。后来发现它就是个锁相环,只不过参考时钟是从数据边沿提取的。说白了,就是让接收端的时钟跟发送端同步。
1.4 PMA 与 PCS 层功能划分
高速收发器内部,分成了两个逻辑层:PMA 和 PCS。我习惯把它们比作「物理层」和「链路层」。
PMA 层(物理介质适配层)
PMA 是真正跟物理信号打交道的部分。它负责:
- 串化/解串: 并串转换的核心工作
- 时钟生成: PLL 倍频、分频
- 时钟恢复: CDR 从数据中提取时钟
- 预加重/均衡: 补偿高频损耗
- 差分驱动/接收: 物理电平转换
我记得有个项目,板子走线长了点,信号眼图都闭上了。后来调整了 PMA 的预加重参数,眼图立马打开了。所以说,PMA 层的参数调优,是硬件工程师的必修课。
PCS 层(物理编码子层)
PCS 层在 PMA 之上,负责数据的编码和协议适配:
- 8B/10B 或 64B/66B 编码: 保证 DC 平衡,提供时钟信息
- 通道绑定: 多通道对齐
- 时钟修正: 消除时钟域间的频率差异
- PRBS 生成/校验: 用于链路测试
避坑指南: 我曾经在一个项目中,PCS 层的时钟修正没配好,导致数据偶尔丢包。查了两天才发现是弹性缓冲区的深度设置不对。记住:PCS 层的配置,直接影响链路的稳定性。
1.5 收发器的典型应用
高速收发器能干的事太多了。我列几个常见的:
- 以太网: 10G/25G/100G,用 GTH/GTY 实现
- PCIe: Gen2/Gen3/Gen4,FPGA 做端点或交换
- 视频传输: DisplayPort、HDMI 的物理层
- JESD204B: 高速 ADC/DAC 接口
- 自定义协议: Aurora、Interlaken 等
你想想看,一个 GTH 收发器能跑到 16Gbps,四个绑一起就是 64Gbps。这在十年前是想都不敢想的。
1.6 小结
这一章咱们把高速收发器的基本概念捋了一遍。GTP/GTH/GTY 的区别,说白了就是速率等级不同。SerDes 的核心就是并串转换加时钟恢复。PMA 管物理信号,PCS 管编码协议。
下一章我会深入讲收发器的时钟架构。嗯,那个才是真正让人头疼的地方。到时候我会分享一些我在时钟设计上踩过的坑,保证对你有用。
一句话总结: 高速收发器 = SerDes + PMA + PCS。搞懂这三块,收发器设计就入门了。