4、自动协商的时钟与时序

自动协商能跑通,背后其实是时钟和时序在撑着。你想想看,链路两端要是时钟对不上,哪怕协议栈再完美也是白搭。这一节咱们就聊聊时钟容差、定时器参数,还有100BASE-T和100BASE-TX(哦,这里其实是100BASE-T与1000BASE-T)那些时序差别。

4.1 时钟容差要求

先说说时钟精度。IEEE 802.3里写得明明白白:发送端时钟频率容差必须在±50 ppm以内。100BASE-T和1000BASE-T都适用这个标准。什么叫ppm?百万分之一。50 ppm就是0.005%,换算下来,100 MHz的时钟允许偏差只有5 kHz。

我早年调试一块百兆网卡,发现偶尔丢包。抓波形一看,时钟偏差跑到了75 ppm。嗯,当时用的是廉价的RC振荡器,换了个有源晶振立马就稳了。说白了,时钟精度直接决定链路能不能长期锁定。

速率标准标称时钟频率容差要求典型晶振精度
100BASE-TX125 MHz±50 ppm±25 ppm 或 ±50 ppm
1000BASE-T125 MHz(4对线同时)±50 ppm±50 ppm(常用)

注意,接收端PLL的捕获范围通常要比±50 ppm更宽一点,留出余量。但发送端必须严格遵守规范,否则对方PLL可能无法锁定。

踩坑提醒: 我曾经碰到一个案例,客户用内部RC振荡器代替外部晶振,宣称可以省钱。结果在高温下时钟漂移超过100 ppm,自动协商频繁失败。后来还是乖乖换回有源晶振。

4.2 定时器参数:Link Fail、Break Link 等

自动协商过程中,有好几个关键定时器。它们的值如果设错了,轻则协商时间变长,重则直接断链。我习惯把这三个定时器叫作“三剑客”:

  • Link Fail 定时器(Break Link 检测)
  • Break Link 定时器(即强制断链时序)
  • Auto-Negotiation 完整超时

咱们逐个看。

Link Fail 定时器

用来判断物理链路是否失效。在100BASE-T里,一般设置为 750 μs ~ 1000 μs。当接收端连续这么长时间没收到有效信号,就认为链路断开。

我为啥强调这个值?因为在恶劣的EMI环境中,偶尔有短时脉冲干扰。如果定时器设得太短,比如300 μs,正常信号丢了一小段就会误判为链路失效,导致频繁重协商。我个人建议按规范上限设置,留出抗扰余量。

Break Link 定时器

这是手动断开链路的“核按钮”。PHY可以通过发送特定的Break Link信号(通常是连续的低电平或特殊码型)强制对端进入断链状态。Break Link 信号宽度一般要求 ≥ 1500 μs,对端检测到后立即停止协商。

你可能要问:什么时候用这个?比如系统进入低功耗模式,主动切断PHY链路。我在项目中设计过睡眠唤醒方案,就是先发Break Link信号,然后关掉时钟,让设备进入深度睡眠。

Auto-Negotiation 完整超时

整个协商过程不能无限等下去。规范规定:FLP Burst 的发送间隔是 16 ms ± 8 ms,每轮协商最多等待 150 ms 没收到有效FLP就超时。

记住口诀:50 ppm守时钟,1 ms防误判,150 ms定成败。实际调试时用示波器抓一下FLP波形,测测实际定时器周期就知道有没有跑偏了。

4.3 100BASE-T 与 1000BASE-T 时序差异

别看都是125 MHz的符号率,100BASE-T和1000BASE-T的时序细节差别很大。我整理了一张对比表,你对照着看会更清楚:

维度100BASE-TX1000BASE-T
信号编码MLT-3(三电平)PAM-5(五电平)
每对线速率125 MBaud125 MBaud
同时使用线对数1对(另1对用于接收)4对全双工
时钟恢复方式从单一数据流提取从4对线分别恢复,再同步
Link Fail 检测时长750 μs ~ 1000 μs750 μs ~ 1000 μs(基本相同)
自动协商 FLP 编码基础页 + 自定义页基础页 + next page 扩展(更丰富)
时钟抖动容忍典型 0.7 ns RMS更严,要求 ≤ 0.35 ns RMS

你注意到没——1000BASE-T的时钟抖动容忍只有百兆的一半。为什么会这样?因为千兆采用四对线同时传输,每对线之间的相对时延必须严格控制,否则解串器会出现skew。我当年调千兆板子时,遇到过PCB走线不等长导致抖动超标,换了好几版layout才搞定。

知识架构:时钟与时序全景

下面这张SVG图把这一节的核心逻辑串了起来。你顺着时钟容差→定时器→不同速率时序差异这条线看,就比较清晰了:

自动协商时钟与时序知识架构 自动协商的时钟与时序知识地图 时钟容差 ±50 ppm 发送端晶振要求 接收端PLL捕获范围 关键定时器参数 Link Fail (1ms) Break Link (1.5ms) Auto-Neg 超时 (150ms) 100BASE-T vs 1000BASE-T 编码差异 (MLT-3 / PAM-5) 线对数 & 时钟恢复 核心:时钟精度保障链路锁定,定时器控制状态迁移,速率差异影响PHY设计

实战要点:

  • 调试自动协商时,先测时钟频率偏差,确认在±50 ppm以内。
  • 用示波器抓FLP Burst间隔,看看是否严格在16 ms ± 8 ms范围。
  • 遇到千兆链路不稳定,重点量每对线的skew和时钟抖动,往往问题出在PCB走线不等长。