3. 收发器物理层架构:PMA层、PCS层与TX/RX通道

好,咱们今天聊聊收发器物理层的内部结构。说实话,很多工程师刚开始接触高速收发器时,都被那一堆缩写搞晕了——PMA、PCS、PLL、CDR……其实没那么复杂。我个人习惯把收发器物理层拆成两大部分来看:模拟前端(PMA)和数字逻辑(PCS)。这两部分分工明确,配合起来才能完成高速数据的收发。

3.1 PMA层:模拟前端,负责“硬”活

PMA层,全称Physical Media Attachment,物理介质连接层。说白了,它就是收发器里负责处理模拟信号的那部分。我经常跟团队里的新人说:“PMA是收发器的肌肉,PCS是大脑。”肌肉要够强壮,信号才能传得远、传得准。

PMA层主要包含以下几个关键模块:

  • 发送端(TX PMA):包括串行器(Serializer)、预加重/去加重电路、输出驱动器。它的任务是把并行数据变成高速串行比特流,然后通过差分对送出去。
  • 接收端(RX PMA):包括输入缓冲器、均衡器(CTLE/DFE)、时钟数据恢复(CDR)。它的任务是从收到的模拟信号里恢复出时钟和数据。
  • 时钟生成:通常由锁相环(PLL)提供多相时钟,用于串行化和采样。

嗯,这里要注意:PMA层的设计直接决定了收发器的信号完整性。我在项目中遇到过一块板子,眼图总是张不开,折腾了两周才发现是PMA的预加重设置不对。后来调整了抽头系数,眼图立马就打开了。所以,PMA的参数配置千万别马虎。

3.2 PCS层:数字逻辑,负责“软”活

PCS层,全称Physical Coding Sublayer,物理编码子层。它处理的是数字域的逻辑,负责把数据“包装”成适合在物理链路上传输的格式。

PCS层的主要功能包括:

  • 8B/10B或64B/66B编码:保证DC平衡,提供足够的跳变沿用于时钟恢复。
  • 通道绑定(Channel Bonding):把多个通道的数据对齐,实现更高的吞吐量。
  • 时钟修正(Clock Compensation):通过插入/删除空闲字符,消除收发两端时钟频率的微小差异。
  • 加扰/解扰(Scrambling/Descrambling):避免长串的0或1导致CDR失锁。

你想想看,如果没有PCS层做这些编码和修正,PMA层直接裸传数据,那误码率会高得吓人。我曾经调试过一个PCIe Gen3的链路,老是出现链路训练失败,最后发现是PCS层的加扰器初始化顺序不对。改了一行代码,问题就解决了。

3.3 TX/RX通道结构:数据流怎么走?

理解了PMA和PCS的分工,咱们再看看数据在TX和RX通道里是怎么流动的。我画了一张图,帮你理清这个流程。

收发器物理层数据流架构 TX路径 TX PCS 编码 · 加扰 · 通道绑定 TX PMA 串行化 · 预加重 · 驱动 差分对 RX路径 RX PMA 均衡 · CDR · 解串 RX PCS 解码 · 解扰 · 对齐 时钟生成(PLL) 为TX/RX提供多相时钟 时钟 时钟

从图上可以看得很清楚:

  1. 发送方向:数据先进入TX PCS进行编码和加扰,然后交给TX PMA串行化并驱动到差分线上。
  2. 接收方向:差分信号进入RX PMA,经过均衡和CDR恢复出时钟和数据,再解串成并行数据,最后送到RX PCS解码和解扰。
  3. 时钟源:PLL为整个收发器提供稳定的多相时钟,TX和RX各取所需。

关键点:PMA和PCS之间的接口通常是并行数据总线,位宽取决于编码方式。比如8B/10B编码时,内部数据位宽一般是10位或20位。这个接口的时序约束非常严格,我在调试时经常用ChipScope抓这里的信号,看有没有setup/hold违例。

3.4 避坑指南:PMA/PCS调试经验

做收发器设计,有几个坑我踩过,分享给你:

  • CDR锁定问题:我曾经遇到一块板子,RX的CDR死活锁不住。查了半天,发现是PCS层的加扰器没使能,导致数据流里出现连续32个0,CDR直接失锁。所以,加扰器一定要开,除非你的协议明确要求关闭。
  • 预加重过度:预加重不是越大越好。我见过一个项目,工程师把预加重开到最大,结果眼图反而更差了。因为过度的预加重会引入高频噪声。正确的做法是:根据通道损耗曲线,选择合适的抽头系数。
  • 通道绑定对齐:多通道绑定时,每个通道的PCS层必须使用相同的时钟修正策略。否则,通道间的skew会越来越大,导致绑定失败。

个人建议:在项目初期,先用IP自带的回环测试(Loopback)验证PMA和PCS的基本功能。回环测试通过后,再接入实际通道。这样可以快速定位问题是出在芯片内部还是外部通道上。

3.5 不同协议下的PMA/PCS配置差异

不同的高速协议,对PMA和PCS的配置要求是不一样的。我整理了一个表格,方便你对比:

协议 PCS编码 PMA速率 典型预加重 均衡方式
PCIe Gen3 128B/130B 8 GT/s 3-tap CTLE + DFE
10G Ethernet 64B/66B 10.3125 Gbps 2-tap CTLE
SATA Gen3 8B/10B 6 Gbps 1-tap CTLE
JESD204B 8B/10B 12.5 Gbps 3-tap CTLE + DFE

看到没?PCIe Gen3和10G Ethernet都用了更高效的编码(128B/130B和64B/66B),而SATA和JESD204B还在用8B/10B。原因很简单:8B/10B有20%的开销,但实现简单、DC平衡好。我个人做JESD204B项目时,就特别喜欢8B/10B,因为调试起来省心。

注意:不同厂商的FPGA,其PMA/PCS的寄存器映射和配置方式差异很大。Xilinx的GTH和Intel的Transceiver PHY,虽然功能类似,但底层控制逻辑完全不同。换平台时,一定要重新阅读对应的用户手册,别凭经验硬套。

好了,关于收发器物理层架构,咱们就聊到这儿。PMA和PCS的分工协作,是理解高速收发器的基础。你只要记住:PMA管模拟、PCS管数字,两者通过并行接口配合,就能搞定高速数据的收发。下次调试时,遇到问题先判断是PMA还是PCS的锅,能省不少时间。