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 PCS进行编码和加扰,然后交给TX PMA串行化并驱动到差分线上。
- 接收方向:差分信号进入RX PMA,经过均衡和CDR恢复出时钟和数据,再解串成并行数据,最后送到RX PCS解码和解扰。
- 时钟源: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的锅,能省不少时间。