3、100BASE-T1物理层:PAM3编码原理、单对差分线传输、链路分段与唤醒/睡眠机制

各位工程师,今天我们聊点硬核的——100BASE-T1的物理层。说实话,我刚接触车载以太网那会儿,看到PAM3和单对差分线,第一反应是“这玩意儿跟咱们办公室的百兆以太网差太多了”。后来踩了几个坑才明白,这些设计全是针对汽车环境量身定做的。

3.1 PAM3编码原理

先说说PAM3。全称是3级脉冲幅度调制,说白了就是用3种电压电平来传输数据。你可能会问:“为什么不用传统的NRZ(2电平)或者更复杂的PAM4(4电平)?”

嗯,这里有个平衡点。NRZ虽然简单,但100BASE-T1要在单对差分线上实现100Mbps,NRZ的符号率太高,EMI(电磁干扰)压不住。PAM4呢?符号率是降下来了,但信噪比要求更高,汽车线束那环境……你懂的。PAM3正好卡在中间——符号率比NRZ低,抗干扰比PAM4强。

PAM3编码核心参数:

  • 每个符号携带 log₂(3) ≈ 1.58 bit 信息
  • 符号率:66.7 MBaud(比NRZ的100 MBaud低33%)
  • 电平:+1V、0V、-1V(差分电压)
  • 编码效率:每3个符号编码4个数据位(3B4T)

我在项目中遇到过一个问题:某供应商的PHY芯片在低温下PAM3眼图闭合严重。排查下来,是发送端电平精度漂移了。PAM3对电平一致性要求很高,三个电平必须严格等间距,否则接收端判决器会出错。

3.1.1 3B4T映射表

100BASE-T1使用3B4T编码——3个二进制位映射成4个三进制符号。为什么是3B4T?因为 2³ = 8 种二进制组合,而 3⁴ = 81 种三进制组合,有足够的冗余做直流平衡和错误检测。

数据位 (3 bit) 三进制符号 (4个) 直流分量
000 +1, 0, -1, 0 0
001 0, +1, 0, -1 0
010 -1, 0, +1, 0 0
011 0, -1, 0, +1 0
100 +1, -1, +1, -1 0
101 -1, +1, -1, +1 0
110 +1, 0, +1, -1 +1
111 -1, 0, -1, +1 -1

注意看,大部分映射的直流分量是0。只有110和111有±1的直流偏差,但后续的扰码器会把这些偏差打散,保证长期直流平衡。我曾经在测试中遇到过直流不平衡导致的基线漂移,接收端眼图直接歪了——后来发现是扰码器初始化种子没配对。

3.1.2 PAM3发送端结构

发送端大致分三步:

  1. 数据加扰:用线性反馈移位寄存器(LFSR)打散数据,避免长串相同符号
  2. 3B4T编码:按上表映射成三进制符号序列
  3. 脉冲成形:通过滤波器限制带宽,减少EMI

我个人习惯在测试时先抓扰码后的数据,看有没有周期性模式。如果发现重复序列,说明LFSR可能没初始化好——这问题在实车上很难复现,但实验室里一抓一个准。

3.2 单对差分线传输

100BASE-T1只用一对差分线,不像传统以太网需要两对(TX/RX分开)。怎么做到的?答案是混合电路(Hybrid)和回波抵消(Echo Cancellation)。

说白了,就是发送和接收在同一对线上同时进行。发送端知道自己发了什么,所以可以从接收信号中减去自己的发送分量,剩下的就是对方发来的信号。这个思路跟电话线里的全双工传输一模一样。

避坑指南: 我曾经在测试混合电路回波损耗时,发现某个频点回波抵消效果很差。查了半天,原来是PCB上差分线的阻抗不连续——过孔没做回流路径优化。单对差分线对阻抗一致性极其敏感,建议在Layout阶段就做3D电磁仿真。

3.2.1 单对差分线的优势

  • 线束减重:少一对线,整车线束重量降低约30%
  • 成本降低:连接器引脚数减半,线缆成本下降
  • EMI更优:差分传输本身抑制共模噪声,单对线辐射更少

但代价也很明显——回波抵消电路的设计复杂度上去了。我见过不少PHY芯片在回波抵消算法上翻车,尤其是温度变化大时,混合电路的阻抗会漂,抵消效果就变差。

3.2.2 链路分段(Link Segment)

100BASE-T1的链路分段概念,很多人一开始不理解。它指的是:一条物理链路被分成多个段,每段之间通过中继器或交换机隔离。

为什么要分段?两个原因:

  1. 信号完整性:单对差分线在汽车线束中传输距离有限(最大15米),分段后每段长度可控
  2. 故障隔离:一段短路或断路,不影响其他段

我在做某车型的以太网拓扑测试时,发现后视摄像头链路经常丢包。分段测试后发现,是线束经过车门铰链处时,弯曲半径太小导致特性阻抗突变。后来把那段线束换成柔性同轴结构才解决。

3.3 唤醒/睡眠机制

汽车电子最头疼的问题是什么?功耗。ECU在休眠时电流要控制在微安级,但以太网PHY如果一直跑着,功耗根本压不下去。所以100BASE-T1定义了完善的唤醒/睡眠机制。

3.3.1 睡眠状态(Sleep Mode)

PHY进入睡眠状态的条件:

  • 链路上连续检测到至少20ms的静默(无有效信号)
  • 上层协议栈指示进入低功耗模式

睡眠状态下,PHY关闭发送器,接收器进入低功耗监听模式。功耗从正常工作时的几百毫瓦降到几十微瓦。

注意: 睡眠状态不是立即进入的。PHY会先发送一个“睡眠通知”帧,告诉对端“我要睡了”。如果对端没收到这个通知就直接断链,唤醒时可能会重新训练,增加延迟。我遇到过某Tier1的PHY芯片,睡眠通知帧的发送功率设置太低,在长线缆上对端收不到——结果每次唤醒都要花200ms重训练。

3.3.2 唤醒过程(Wake-up)

唤醒分两步:

  1. 唤醒脉冲(Wake Pulse):发送端在差分线上施加一个特定模式的脉冲序列,持续约1ms
  2. 链路训练(Link Training):对端检测到唤醒脉冲后,双方开始自动协商和链路训练

唤醒脉冲的模式是固定的:交替的+1V和-1V电平,频率约1MHz。为什么用这个模式?因为它在频域上能量集中,容易被低功耗接收器检测到,同时不会误触发电磁阀等敏感设备。

我记得有一次在EMC实验室做测试,发现唤醒脉冲的谐波干扰了收音机AM频段。后来调整了脉冲的上升沿斜率,把高频分量压下去才过测。

3.3.3 状态机转换

PHY的状态机大致如下:

100BASE-T1 PHY 唤醒/睡眠状态机 100BASE-T1 PHY 唤醒/睡眠状态机 正常工作 睡眠通知 睡眠(低功耗监听) 唤醒脉冲 链路训练 链路空闲 >20ms 通知发送完成 检测到唤醒请求 脉冲发送完成 训练成功 关键时序参数 • 睡眠通知:20ms • 唤醒脉冲:~1ms • 链路训练:<100ms • 总唤醒时间:<150ms

这个状态机看起来简单,但实际测试中坑不少。我遇到过最典型的问题:某个ECU在睡眠状态下,接收器灵敏度设置太低,对端发来的唤醒脉冲检测不到。结果就是——该醒的时候醒不过来,整车网络拓扑里这个节点就“失踪”了。

3.4 一致性测试要点

讲完原理,说说测试。100BASE-T1物理层一致性测试,我建议重点关注这几个项目:

测试项目 测试内容 常见失败原因
PAM3电平精度 +1V、0V、-1V电平偏差 < ±5% 发送端电源纹波、温度漂移
眼图模板 眼图开度 > 60%,抖动 < 0.2UI PCB阻抗不连续、串扰
唤醒脉冲检测 脉冲幅度 > 200mV,脉宽 > 500ns 接收器灵敏度、线缆衰减
睡眠电流 PHY睡眠电流 < 100μA 漏电流、未关闭的偏置电路
回波损耗 混合电路回波损耗 > 15dB 阻抗匹配网络设计

我的测试习惯: 每次做PAM3眼图测试前,先跑一遍DC电平校准。很多PHY芯片内部有自校准寄存器,但默认值不一定准。我习惯在常温、高温(85°C)、低温(-40°C)三个点各做一次校准,然后锁存校准值。这样能避免温度变化导致的电平漂移。

好了,这一章的内容就到这里。PAM3编码、单对差分线、唤醒睡眠机制,这三个东西是100BASE-T1物理层的核心。理解透了,后面做一致性测试才能有的放矢。