2. 物理层架构:PCS层、PMA层、PMD层功能划分与接口关系

100BASE-T1的物理层,说白了就是三个兄弟分工干活:PCS(物理编码子层)、PMA(物理介质附加子层)、PMD(物理介质相关子层)。

我刚接触这个架构时,总觉得分层太多,麻烦。后来调试一个信号完整性问题,才发现这分层设计简直是救命稻草——哪层出问题,直接定位,不用从头翻到尾。

2.1 三层架构总览

先看整体框架。下面这张图是我自己画的分层结构,你一看就明白。

100BASE-T1 物理层三层架构 MAC 层(媒体访问控制层) PCS 层(物理编码子层) 数据编码 · 加扰 · 4B/5B 编码 · 链路状态管理 PMA 层(物理介质附加子层) 并串转换 · 时钟恢复 · 信号均衡 · 链路检测 PMD 层(物理介质相关子层) 差分驱动 · 接收器 · 共模抑制 · EMC 防护 非屏蔽双绞线(UTP) MII 接口 PCS-PMA 接口 PMA-PMD 接口 数据通路 MAC → PCS → PMA → PMD → 线缆 控制通路 链路状态 · 错误指示 · 配置管理

核心要点:数据从 MAC 层下来,经过 PCS 编码、PMA 串行化、PMD 驱动,最终变成差分信号在单对双绞线上跑。反过来,接收路径就是逆过程。

2.2 PCS 层——数据的"翻译官"

PCS 层是物理层里最"聪明"的一层。它干的事,说白了就是把 MAC 层送来的数据包,翻译成适合在物理介质上传输的码流。

2.2.1 PCS 的核心职责

  • 4B/5B 编码:每 4 位数据映射成 5 位码组。为什么多花 25% 的带宽?为了保证直流平衡和时钟同步。我见过有人想省带宽跳过这步,结果接收端时钟恢复一塌糊涂。
  • 数据加扰:用一个伪随机序列对数据做异或处理。目的是打散频谱,减少 EMI。嗯,这里要注意——加扰多项式是固定的,收发两端必须一致。
  • 链路状态管理:PCS 负责检测链路是否正常。比如发送 /I/ 空闲码组,接收端如果长时间收不到有效码组,就判定链路断开。

2.2.2 编码表速查

数据(4位) 码组(5位) 说明
0000 11110 数据 0
0001 01001 数据 1
... ... (共 16 个数据码组)
— 11000 空闲码组 /I/
— 10001 终止码组 /T/

个人经验:调试 PCS 层时,我最喜欢抓 /I/ 码组。如果空闲码组连续出错,基本可以断定是加扰器初始化不同步。我曾经花了两天查一个兼容性问题,最后发现是两边加扰种子没对上。

2.3 PMA 层——信号的"整形师"

PMA 层夹在 PCS 和 PMD 之间,干的是脏活累活。它不关心数据内容,只管把数字码流变成适合线缆传输的模拟信号雏形。

2.3.1 PMA 的主要功能

  • 并串转换:PCS 送来的并行数据(通常是 5 位一组),转成串行比特流。速率从 125 MHz 的并行时钟,变成 125 Mbps 的串行数据。
  • 时钟恢复(CDR):从接收到的串行数据里提取时钟。这是 PMA 最核心也最容易出问题的地方。我遇到过一例,板子布线长了 2 厘米,CDR 就锁不住——高频信号对走线长度太敏感了。
  • 信号均衡:线缆会衰减高频分量。PMA 的均衡器要补偿这个衰减。100BASE-T1 用的是自适应均衡,能根据实际线长自动调整增益。
  • 链路检测:PMA 会持续发送和检测链路脉冲。如果连续 4 个脉冲没回应,就上报"链路断开"。

2.3.2 PMA 的关键参数

参数 典型值 说明
串行数据速率 125 Mbps 4B/5B 编码后,有效数据 100 Mbps
时钟抖动 < 0.1 UI 单位间隔的 10% 以内
均衡范围 0 ~ 15 dB 对应 0 ~ 15 米线缆
链路检测周期 1 ms 每毫秒检测一次

避坑指南:我曾经在 PMA 布局上吃过亏。时钟恢复电路的电源滤波没做好,导致 CDR 锁定后频繁失锁。后来在 VCO 供电脚加了一个 10 μF 钽电容 + 100 nF 陶瓷电容的组合,问题才解决。记住——PMA 的电源噪声容忍度极低。

2.4 PMD 层——线缆的"接口员"

PMD 层是物理层最靠近线缆的一层。它直接和差分对打交道,负责把信号送出去、收回来。

2.4.1 PMD 的核心电路

  • 差分驱动器:把 PMA 送来的单端信号转成差分信号,驱动到线缆上。输出摆幅典型值 1 V 峰峰值。
  • 差分接收器:从线缆上接收差分信号,转回单端信号送给 PMA。接收灵敏度一般在 50 mV 以内。
  • 共模抑制:汽车环境噪声大,PMD 必须能抑制共模干扰。共模抑制比(CMRR)要求至少 40 dB。
  • ESD 防护:线缆接口直接暴露在外,必须能承受 ±8 kV 接触放电。

2.4.2 PMD 的接口定义

引脚 信号 说明
MDI_P 差分正端 连接到双绞线的正极
MDI_N 差分负端 连接到双绞线的负极
BIAS 偏置电压 为驱动器提供共模偏置

设计要点:PMD 的布局布线直接影响 EMC 性能。差分对走线必须等长、等距,阻抗控制在 100 Ω ± 10%。我见过一个项目,因为差分对绕线没对称,辐射超标 6 dB,最后只能改板。

2.5 层间接口关系

三层之间不是各干各的,它们通过标准接口交换数据和状态。

2.5.1 MII 接口(MAC ↔ PCS)

MII 是 MAC 和 PCS 之间的标准接口。100BASE-T1 用的是简化版 MII(RMII),只需要 4 根数据线。

  • TXD[3:0]:发送数据总线
  • RXD[3:0]:接收数据总线
  • TX_CLK:发送时钟(25 MHz)
  • RX_CLK:接收时钟(25 MHz)
  • TX_EN:发送使能
  • RX_DV:接收数据有效

2.5.2 PCS-PMA 接口

这个接口在芯片内部,通常是并行总线。PCS 把编码后的 5 位码组送给 PMA,PMA 把恢复的 5 位码组送回 PCS。

  • TX_DATA[4:0]:发送码组
  • RX_DATA[4:0]:接收码组
  • TX_CLK:125 MHz 发送时钟
  • RX_CLK:125 MHz 接收时钟(从数据恢复)
  • LINK_STATUS:链路状态指示

2.5.3 PMA-PMD 接口

这个接口最"物理"。PMA 把串行数据送给 PMD 驱动,PMD 把接收信号送回 PMA 做时钟恢复。

  • TX_OUT:串行发送数据(单端)
  • RX_IN:串行接收数据(单端)
  • TX_CLK:125 MHz 发送时钟
  • RX_CLK:恢复的接收时钟

调试技巧:我习惯在 PMA-PMD 接口上加测试点。用示波器看 TX_OUT 和 RX_IN 的限图,能快速判断问题出在 PMA 还是 PMD。如果 TX_OUT 限图很好但 RX_IN 很差,问题大概率在线缆或连接器上。

2.6 数据流全景

把三层串起来,看一个完整的数据发送过程:

  1. MAC 通过 MII 接口把数据包送给 PCS
  2. PCS 做 4B/5B 编码 + 加扰,生成 5 位码组流
  3. PMA 把 5 位并行码组转成串行比特流,并做信号整形
  4. PMD 把串行信号转成差分信号,驱动到双绞线上
  5. 信号在线缆上传输,接收端做逆过程

接收路径反过来:PMD 接收差分信号 → PMA 时钟恢复 + 串并转换 → PCS 解码 + 解扰 → MAC 拿到原始数据。

一句话总结:PCS 管编码,PMA 管时钟,PMD 管驱动。三层各司其职,通过标准接口紧密配合。搞懂这个架构,后面调试物理层问题就有方向了。