3. PHY芯片工作原理
搞车载以太网,绕不开PHY芯片。很多刚入行的工程师喜欢把PHY当作一个黑盒子,觉得配置一下寄存器就完事了。
我跟你说,这种想法很危险。
PHY芯片是连接数字世界和模拟世界的桥梁。它有三个核心模块:PMA、PCS和Auto-Negotiation。理解这三者,你才能看懂波形、读得懂日志、踩得了坑。
PMA(物理介质接入层)—— 管硬件的家伙
PMA全称Physical Medium Attachment。说白了,它就是PHY芯片里负责跟电缆/PCB走线直接打交道的模拟电路。
PMA干三件事:
- 信号编码/解码:把PCS交过来的数据比特流,编码成适合在差分线上传输的物理信号(比如PAM3)。
- 均衡/滤波:做模拟域的去加重和接收均衡,补偿线缆/PCB带来的损耗。
- 时钟恢复:从数据流里提取时钟(CDR),保持收发同步。
我之前遇到过一批板子,长线缆测试老间歇丢包。查了三天,结果发现是PMA的接收均衡参数没调对,高阻态对抗干扰失效。嗯,这种问题你用眼图扫描一看就能发现。
PCS(物理编码子层)—— 管数据的管家
PCS全称Physical Coding Sublayer。它不碰模拟信号,只处理数字逻辑。
PCS主要负责:
- 数据包对齐和定界:识别SFD(帧起始定界符)和帧间隙。
- 4B/5B或8B/10B编解码:维持DC平衡,提供足够的时钟跳变沿。
- 错误检测:通过CRC校验检查数据完整性。
Auto-Negotiation(自动协商)—— 谈判专家
Auto-Negotiation在车载以太网中是强制要求,不是可选项。
自动协商的目的是:连接建立时,双方交换能力,选一个都支持的最高性能配置。
协商的内容包括:
| 协商项 | 说明 |
|---|---|
| 速率能力 | 100Mbps / 1000Mbps 等 |
| 主/从时钟 | 确定谁提供主时钟源,避免时钟冲突 |
| 双工模式 | 全双工/半双工(车载一般全双工) |
| 休眠唤醒能力 | 是否支持EEE节能以太网 |
我的经验: 自动协商失败最典型的表现是——用示波器能看到Link脉冲在握手,但Link Status就是起不来。我曾经遇到过ECU升级后线束插拔顺序变化,导致SCR(信号编码规则)时序超容差,协商直接崩溃。后来加了软件复位时序,问题才解决。
三者协作流程图
为了让你更直观地理解整个过程,我画了一张图。它展示了从PMA接收模拟信号,到PCS处理数据帧,再到Auto-Negotiation完成握手和协商的完整路径。
常见的三大坑
你如果只看datasheet,会觉得一切都设计得很完美。但实际动手就不一样了。
- PMA偏置电压漂移:车载温度范围宽,PMIC输出的偏置电压会跟着飘,导致信号共模电压偏移。我之前遇到过冬天启动车辆,Link掉线,就是PMA的基准源没扛住低温。
- PCS的CRC误判:100BASE-T1的CRC是4字节的,短帧容易产生CRC错误。我记得某个项目,大量误帧率Failed,其实是PCS的CRC计算逻辑在复位后没正确初始化。
- Auto-Negotiation超时死锁:两端的PHY如果协商时序不一致,会出现反复重连。我建议你在调试阶段,把Auto-Neg的寄存器全部打印出来看看,尤其是
AN_STATUS和AN_LP_ADV。
一个实用技巧: 抓Auto-Negotiation的过程,可以使用PHY的内部回环模式。先让PHY自己跟自己握手,验证PMA/PCS链路没问题,再去排查物理层和线缆。我每次做稳定性测试都会先跑这一项,能排除掉80%的硬件虚焊问题。
小总结
PMA负责信号完整性和模拟特性,PCS处理数据帧格式和校验,Auto-Negotiation解决双方握手和配置同步。这三者任何一个出问题,PHY都起不来。
你想想看,如果你连PHY的内部结构都不清楚,怎么去查log里那些PHY寄存器异常?所以我才在第一堂课就这么强调基础知识的重要性。
下一课我们聊具体怎么用这些知识去排查物理层抖动问题。