GTY收发器硬件架构:PCS、PMA与收发通道

这一章,我们来聊聊GTY收发器的「内脏」。你想想看,一条高速信号从FPGA内部逻辑出发,到变成差分对飞出去,中间到底经历了什么?搞懂这个,后面配置IP核时,你就能明白每个参数到底是干嘛用的。

说白了,GTY收发器的核心架构可以分成两大块:PCS(物理编码子层) 和 PMA(物理介质接入子层)。再加上配套的收发通道,就构成了完整的数据通路。

一句话总结: PCS负责「数字逻辑处理」,PMA负责「模拟信号转换」。中间夹着时钟和状态机,把数据从内到外干干净净地送出去。

2.1 PCS子层:数字域的大脑

PCS是我个人觉得最「好玩」的部分。它不涉及复杂的模拟电路,全是数字逻辑。但别小看它——好多项目出问题,都是PCS配置没搞对。

PCS的核心功能包括:

  • 编码/解码: 比如最常见的64B/66B、64B/67B编码。把用户数据变成适合高速传输的码流。
  • 通道绑定: 多个低速通道绑成一个高速通道。我在40G以太网项目里,就遇到过绑定没对齐,数据全是乱码的情况。
  • 时钟修正: 用弹性缓冲(Elastic Buffer)消除收发时钟之间的微小偏差。
  • CRC校验: 检查数据在传输中有没有出错。

你看下面这个表,常见GTY支持的编码方式,心里先有个底:

编码方式 效率 典型应用
64B/66B 96.97% 10G/40G/100G以太网
64B/67B 95.52% Interlaken、自定义高速协议
8B/10B 80% PCIe Gen3及以下、SATA
不做编码(Bypass) 100% 用户自定义协议、特殊数据格式
我的个人习惯: 除非你有特殊要求,否则强烈建议开启PCS的编码功能。裸数据直接扔给PMA,抗干扰能力只会更差。我曾经试过一次,眼图直接闭了。

2.2 PMA子层:模拟域的核心

PMA就是收发器里那部分「硬核」电路。它处理的是电流、电压、阻抗这些模拟量。

它的主要模块有:

  • 串化器(Serializer): 把并行数据变成高速串行数据。比如,32位并行数据,通过它变成1位串行。
  • 解串器(Deserializer): 反过来,把串行数据还原成并行。
  • 时钟恢复(CDR): 从接收到的串行数据里提取出时钟信号。这对抖动和锁相环(PLL)要求非常高。
  • 发送驱动器(TX Driver): 输出符合差分信号标准的电压摆幅和预加重。
  • 接收均衡(RX EQ): 补偿信号在PCB走线上的高频损耗。

嗯,这里要注意。PMA的工作模式可以切换。你可以把它配成以PCS为主的标准模式,也可以直接旁路PCS,由用户逻辑直接控制PMA。后者灵活性极高,但也意味着你要自己处理编码和时钟恢复,难度一下子就上去了。

2.3 收发通道的对称结构

GTY收发器最漂亮的一点,是它的收发通道完全对称。一条TX通道配一条RX通道,各走各的路,互不干扰。

收发通道的通路大致如下:

  1. FPGA逻辑通过内部总线把数据写入发送FIFO。
  2. 数据进入PCS,完成编码、加扰、通道绑定。
  3. 经过弹性缓冲和时钟域交叉,进入PMA。
  4. PMA的串化器把数据变成串行比特流,通过SerDes差分对发射。

接收端则是完全逆过程:

  1. 差分信号进入PMA接收器,先做均衡和时钟恢复。
  2. 解串器把串行数据变回并行。
  3. PCS解码、去扰、CRC校验。
  4. 数据进入接收FIFO,最终被FPGA逻辑读取。

把这个流程画成图,你看起来会更直观:

GTY收发器硬件架构框架图 GTY收发器硬件架构数据通路 FPGA逻辑 → TX FIFO PCS:编码 + 通道绑定 PMA:串化 + 发送驱动 SerDes差分对 TX (TXP / TXN) SerDes差分对 RX (RXP / RXN) PMA:CDR + 解串 + 均衡 PCS:解码 + CRC校验 RX FIFO → FPGA逻辑 发送路径(TX) ~~~ 接收路径(RX) 关键说明 1. PCS与PMA之间通过并行接口连接(通常是32位或64位)。 2. 收发通道完全独立,可配置为不同速率和编码方式。 3. 时钟域:FPGA逻辑在用户时钟域,PCS在内部参考时钟域,PMA在高速SerDes时钟域。 4. 阴影模块(如均衡、预加重)主要用于信号完整性补偿。 5. GTY支持旁路PCS,直接配置PMA寄存器,但需要用户自行处理编码和同步。
避坑指南: 我曾经在一个40G以太网项目里,发现链路怎么都锁不住。排查了好久,最后发现是PCS的弹性缓冲深度设错了。时钟域的微小偏差没法消除,数据包就一直错位。从那以后,我养成习惯:只要锁相环输出频率和参考源有微小偏差(哪怕只有200ppm),弹性缓冲就必须开启。

2.4 常见陷阱与建议

架构听起来简单,实际用起来,陷阱可不少。我总结几个常见的,你在做设计时一定要留心:

  • PCS和PMA的时钟必须匹配: 不可以给PCS配80MHz时钟,却让PMA工作在100MHz。后果嘛,数据全乱。
  • 差分对的方向不能搞反: 接收端必须是P到P、N到N。反了,信号相位刚好差180度,你眼图基本就是一团毛线。
  • 预加重和均衡别乱调: 默认值通常可以工作。除非你的PCB走线很长,或者板材很差,否则别一上来就动它。我见过有人调坏了,信号反射反而更严重。
重要提醒: GTY收发器有一个「复位顺序」的讲究。PMA必须先复位,然后才能复位PCS。顺序反了,PCS的状态机就跑飞了,链路永远起不来。这个坑,我踩过一次,折腾了整整一天。

所以,当你打开Vivado的Transceiver Wizard配置界面时,脑中要有上面那张图。哪些参数是给PCS的,哪些是给PMA的,一目了然。你不会再把编码类型和均衡系数搞混了。

嗯,到这里,GTY的硬件架构你应该清楚了。PCS处理数字、PMA处理模拟、收发通道各管各的。理解了这个,你已经超过了70%的初学者。后面的章节,我们就要在这个基础上,一步步把收发器跑起来。