GTY Transceiver 概述
各位同学好。今天咱们正式进入GTY的世界。
GTY是什么?说白了,它是Xilinx高端FPGA里负责高速串行通信的那个核心硬核。我这两年调试过不少100G光模块,可以很负责地跟你说:没有GTY,那些动辄上百G的接口根本没法实现。
GTY在Xilinx FPGA中的角色
FPGA内部处理的是并行数据,而外部——比如光纤、背板、PCIe链路——传输的是串行信号。GTY的角色,就是做并行到串行、串行到并行的转换,同时保证信号完整性。
你想想看,一个100G Ethernet接口,内部逻辑跑的是64位或者256位并行总线,频率几百兆。但线缆上跑的却是25Gbps甚至53Gbaud的差分串行信号。这个跨越,就是GTY完成的。
我习惯把GTY称为FPGA的「高速门面」:
- 速率上限:GTY支持高达32.75Gbps的线速率。UltraScale+器件里,GTY能做到。
- 电气标准兼容:支持NRZ和PAM4两种调制方式。PAM4是56Gbps以上必用的,我踩过坑,后面细讲。
- 协议内置:PCIe Gen4、100G Ethernet、Interlaken的PCS层功能,GTY内部直接硬核实现,不消耗逻辑资源。
我有个经验:评估项目能不能用某款FPGA,先看GTY数量和速率。不够的话,后期加外置PHY芯片,成本翻倍不说,走线也头疼得很。
PMA/PCS 分层架构总览
GTY内部架构,可以往上往下拆分。向上对接FPGA内部逻辑(比如DMA、MAC模块),向下连接差分IO引脚。这个分层的核心,就是PMA和PCS。
为什么要分层?
- PMA:Physical Media Attachment。它是纯模拟+高速数字电路。负责串行信号的收发、时钟恢复、均衡、CDR。说白了就是「搬砖」的,只关心信号长什么样,不关心数据是什么内容。
- PCS:Physical Coding Sublayer。它是数字逻辑。负责8B/10B编码、64B/66B编码、弹性缓冲、时钟修正、加扰/解扰。它才关心数据内容——比如是不是IDLE字符、有没有错误。
我记得第一次调试GTY时,发现信号质量没问题,但链路始终不通。最后追根溯源,问题出在PCS层的弹性缓冲溢出。这就好比快递员(PMA)把货准时送到了仓库(PCS),但仓库来不及上架,货堆在门口就丢了。从那以后我就记住了:PMA负责「送到」,PCS负责「接好」。
来看一个具体的速率映射关系:
| 线速率 (Gbps) | PCS编码 | 有效数据速率 (Gbps) | 典型协议 |
|---|---|---|---|
| 10.3125 | 64B/66B | 10 | 10G Ethernet |
| 25.78125 | 64B/66B | 25 | 25G Ethernet |
| 32.75 | NRZ或PAM4 | 约32.75 | PCIe Gen4 |
| 53.125 | PAM4 + RS-FEC | 约50 | 100G Ethernet (2x50G) |
这张表可以理解为:物理层跑得越快,PCS的处理开销就越大。你看PAM4还得额外配FEC(前向纠错),这是由信号质量妥协出来的。
典型应用场景
我主要接触三个方向,给各位拆开讲一讲。
100G Ethernet
一个100G接口,通常由4个25Gbps通道(CAUI-4)或2个50Gbps通道组成。每个通道对应一个GTY。GTY内部的PCS负责64B/66B编码、加扰、通道绑定和初始对齐。我在调试100G光模块时,遇到过通道偏移问题。一个通道比另一个晚到了几十纳秒,结果数据流乱套了。解决方法是利用PCS的「通道绑定」和「SKP补齐」机制。嗯,这块内容后面会单独讲。
PCIe Gen4
PCIe Gen4的单通道速率是16GT/s,双向。GTY在这个场景下扮演的是PHY层。PCS部分(由内置的PCIe硬核接管)负责8B/10B编码(Gen4及以前还是8B/10B)、加扰、链路训练状态机。我曾经掉进过一个坑:PCIe链路训练失败,原因是GTY的Tx预加重参数没调好。后来在Vivado的线束向导里手动调整了Tx FIR系数,问题才解决。那个下午花了6个小时,想想都胃疼。
Interlaken
Interlaken是芯片间互联协议,常见于交换机和网络处理器。它不需要MAC层,直接用PCS的64B/67B编码。GTY配合Interlaken硬核,能实现远距离高速可靠连接。我建议刚接触Interlaken的同学,先关注它的协议元组格式(metadata + payload),这是和Ethernet最大的区别。
一张图看清 GTY 内部结构
我画个整体框图,先看一眼全局。
好了,第一章就到这里。你对GTY的整体定位、PMA/PCS分工和典型应用场景应该有概念了。后面我们会逐层拆解,先从PMA的SerDes讲起,再到PCS的编码和弹性缓冲。慢慢来,别急。