2. 车载网络基础
100BASE-T1的物理层,说白了就是三个兄弟分工干活:PCS(物理编码子层)、PMA(物理介质附加子层)、PMD(物理介质相关子层)。
我刚接触这个架构时,总觉得分层太多,麻烦。后来调试一个信号完整性问题,才发现这分层设计简直是救命稻草——哪层出问题,直接定位,不用从头翻到尾。
2.1 三层架构总览
先看整体框架。下面这张图是我自己画的分层结构,你一看就明白。
核心要点:数据从 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 数据流全景
把三层串起来,看一个完整的数据发送过程:
- MAC 通过 MII 接口把数据包送给 PCS
- PCS 做 4B/5B 编码 + 加扰,生成 5 位码组流
- PMA 把 5 位并行码组转成串行比特流,并做信号整形
- PMD 把串行信号转成差分信号,驱动到双绞线上
- 信号在线缆上传输,接收端做逆过程
接收路径反过来:PMD 接收差分信号 → PMA 时钟恢复 + 串并转换 → PCS 解码 + 解扰 → MAC 拿到原始数据。
一句话总结:PCS 管编码,PMA 管时钟,PMD 管驱动。三层各司其职,通过标准接口紧密配合。搞懂这个架构,后面调试物理层问题就有方向了。