第4章:物理层分层结构(PCS、PMA、PMD)归纳总结
做1000BASE-T的物理层合规测试,你首先得搞明白一件事——这底下三层到底在干嘛。PCS、PMA、PMD,这三个缩写几乎每天都在测试规范里出现。我早期带项目的时候,有工程师问过我:“既然信号是双绞线上跑的,我直接测线对不就行了?”
嗯,想法很直接,但物理层没那么简单。
IEEE 802.3ab把物理层拆成三个子层,不是闲得没事。这一章咱们就把这三层的分工、接口、以及对测试的直接意义理清楚。
4.1 PCS——物理编码子层
PCS最核心的活是什么?说白了就是编解码。
你想想看,MAC层给你的是GMII接口上的并行数据,但这些数据没法直接扔到四对线上去。PCS要完成三件事:
- 8B/10B编码:把8位数据变成10位码组,保证DC平衡,方便时钟恢复。
- 扰码(Scrambling):用一种伪随机序列对数据进行加扰,避免长连0或长连1导致信号频谱集中在低频。
- 四维映射:把加扰后的数据分配到4个线对,同时生成PAM5符号。
测试要点:PCS的合规测试,重点在于验证编码是否正确、扰码器是否按规范启动。我在一个项目中遇到过某款芯片在特定温度下扰码器初始化序列异常——跑BERT没问题,但接上示波器看眼图,总能发现个别码组的失锁。如果不做PCS层的功能检查,这类问题很难定位。
PCS输出的已经不是GMII的数据了,而是五电平符号流。这就是PMA的输入。
4.2 PMA——物理介质接入子层
PMA就是PCS和PMD之间的桥梁。如果PCS是“脑袋”,负责数据怎么组织,PMA就是“肩膀”,负责数据怎么搬运。
PMA做的事情包括:
- 符号映射:把PCS来的四维符号流拆成每个线对独立的符号序列。
- 线对反转与极性控制:做自动交叉检测和极性校正。
- 时钟抖动缓冲:用FIFO消除PCS和PMD之间的时钟域差异。
- 信号质量监测(SQE):在发送端插入测试序列,或者在接收端监测信号质量。
我个人建议:在测试PMA时,重点关注抖动传递函数和符号映射的完整性。我曾经因为忽略了PMA层FIFO的深度配置,导致在长短包混合流量下出现了丢包——实际链路质量没问题,但FIFO在半满状态下对时钟偏差敏感,最终表现在合规测试里就是抖动指标超标。
4.3 PMD——物理介质相关子层
PMD是最贴近电缆的那一层。它的工作就是——把符号变成模拟信号,再从模拟信号里捞回数字符号。
PMD的职责我来列一下:
- 发送驱动器:产生符合1000BASE-T规范的PAM5信号,要求线性度、幅度、上升/下降时间都在限值内。
- 接收均衡器:做混合前端滤波、自适应均衡(DFE+FFE)、回波消除(Echo Cancellation)和近端串扰消除(NEXT Cancellation)。
- 时钟恢复(CDR):从接收信号中提取时钟,锁定数据眼图的中心位置。
- 链路协商(Auto-Negotiation):通过FLP Burst识别对端能力,完成主/从时钟选择。
我曾经犯过一个错:在刚开始做1000BASE-T测试时,只校准了发送端的幅度和抖动,觉得就好了。结果接收端测试始终过不了。后来查了一周才发现——CDR的锁定算法在特定码型下会偏移半个符号周期。所以PMD层的测试,千万不要只测发送,接收回环测试和CDR追踪能力是必须覆盖的。
4.4 三层之间的协作关系
为什么要这么分层?
你换个角度想:如果没有PCS,PMA直接处理MAC数据,那你每次换一个线缆传输介质,整个物理层都得重写。有了分层后,PCS只需管编码映射,PMD只管模拟接口,彼此独立升级。但对我们做测试的人来说,这意味着——
故障可能发生在任何一层,而表象可能出现在另一层。
举个例子:
- 如果眼图闭合,可能是PMD的发射驱动器有问题,也可能是PMA的预加重没配置对,归根到底要看PCS是否有扰码异常。
- 如果链路协商失败,PMD的FLP Burst不正常,但PCS的主从同步也参与决策。
核心认知:1000BASE-T物理层测试,不是逐层独立通过就完了。必须做跨层联合测试。比如用PRBS31码型验证PCS编码的同时,在PMA层测抖动,在PMD层看眼图。任何一层出问题,最终都会反映在物理层的参数上。
4.5 分层结构对测试的启示
我个人的测试习惯是这样:
- 先验证PMD:链路协商、信号幅度、眼图模板。这是最底层,如果这关过不了,上层测再多都没用。
- 再验证PMA:抖动传递、时钟恢复、FIFO稳定性。用专用码型和抖动注入来测。
- 最后验证PCS:扰码序列、编码完整性、MAC接口的握手时序。这部分可以结合BERT和协议分析仪来做。
这里有个坑:我建议不要等到最后才测PCS交叉功能。有些芯片在PCS层有bug——比如不同电压等级下编解码失锁。如果等到PMD和PMA全调完才发现PCS有问题,改板周期会很长。
4.6 测试关注点对照表
| 子层 | 关键模块 | 主要测试项目 | 常见失效率 |
|---|---|---|---|
| PCS | 8B/10B编码器、扰码器、四维映射 | 编码完整性、码组同步、扰码序列 | 约15% |
| PMA | 符号映射、FIFO、SQE | 抖动传递函数、符号映射时序 | 约25% |
| PMD | 发射驱动器、接收均衡、CDR、Auto-Neg | 功率模板、眼图、抖动容限、链路协商时序 | 约60% |
你看这个表,PMD的失效率最高,但它也是最容易被测试不充分掩盖的。我记得有一次,一款芯片PMD的所有发送参数都合规,眼图也是标准的菱形。但是一做长距离测试就断流——最后发现是接收均衡器在100米以上的电缆上,DFE收敛时间太长,超出了PCS的期望。所以你看,跨层联合测试真的不能偷懒。
4.7 综合测试建议
- 分层排查:当链路通但速率不达标时,优先锁定PMD眼图,再查PMA时钟,最后排查PCS配置。
- 先做功能再做性能:别一上来就用极限码型测抖动。先从Link OK认证,到误码率,再到抖动余量。
- 做回环测试:很多PMA和PMD的bug,用PMD回环+
PRBS9码型就能复现。
重要提醒:不要以为芯片厂商自带了测试模式就不用再测。我在调试某款方案时,发现厂商的测试模式跳过了PCS的扰码初始化步骤,导致实际业务场景下1000BASE-T无法建立稳定的链路——跑测试全过,但一接交换机就断。一定要用实际业务码型覆盖全链路。
上面这张图,把整个数据链路从MAC到双绞线的流向画出来了。你可以看到PCS、PMA、PMD是串联关系,每一层都对下一层有直接影响。我画这个图的时候刻意加了右侧的提示框——那些都是实际测试中容易被忽视的点。
讲到这里,你大概也感觉到了:1000BASE-T的物理层测试,核心是穿透这三个子层之间的接口,不只是看某一个子层自己的功能对不对。后面每个章节都会围绕具体测试项,联系这一章说的分层逻辑展开。你可以随时回头翻翻这张图,它是整个测试体系的骨架。