PHY寄存器概述:分类、地址映射与访问协议

做信号完整性分析,迟早要跟PHY寄存器打交道。说白了,寄存器就是PHY芯片的“控制面板”和“状态显示屏”。你调驱动、查链路、抓异常,最后都得回到寄存器值上找答案。

我个人习惯,拿到一块新PHY,第一件事不是看数据手册的电气参数,而是翻它的寄存器映射表。为啥?因为寄存器值的变化,直接反映了物理层信号的健康状况。这一章,咱们就把PHY寄存器的家底翻一翻。

PHY寄存器知识框架 PHY寄存器体系 寄存器分类 地址映射 访问协议 基本控制(0/1) 基本状态(2/3) 扩展寄存器 标准IEEE映射 厂商私有映射 MDIO读操作 MDIO写操作 CLAUSE 45 💡 解读寄存器 = 读懂PHY的“心电图” 分类->映射->协议,三步掌握寄存器调试核心

寄存器分类:不只是“读”和“写”

PHY寄存器一般分成三类。第一类是基本控制寄存器和状态寄存器,地址0-3。这是IEEE 802.3规定的标准寄存器,所有PHY都得支持。我在项目中见过有人连地址0的复位位都找不到,翻半天手册——其实就在bit 15。

第二类是扩展寄存器,地址4-31。厂家在这里塞各种私有功能,比如EEE节能、交叉检测、信号质量指示。你想想看,同一个地址在不同厂商的PHY里,意思可能完全不同。

第三类叫做“页寄存器”(Page Register)。有些PHY地址空间不够用,就用页选择寄存器来做“翻页”,类似“bank切换”。我踩过这个坑——调试半天读不到期望值,结果是页没切对。

💡 我的小习惯: 拿到新PHY,先把地址0-3的复位值读出来。如果全0或全1,大概率是MDIO时序有问题,不是芯片本身坏。

地址映射:一张表看透PHY的“内心”

地址0-15是标准寄存器区,也叫“基本寄存器集”。IEEE 802.3规定得很清楚,哪怕不同厂家的PHY,地址0的bit 15都是软件复位,bit 13都是速度选择。好处是驱动通用性很强。

地址16-31是“扩展寄存器区”,也叫“厂商特定寄存器”。这个区域才是信号完整性关注的战场。比如链路质量指示、CRC错误计数、信号幅度调整,都在这个区域。

寄存器地址寄存器名称关键bit信号完整性相关
0基本控制15(复位), 13(速度)复位时序影响链路恢复
1基本状态5(链路up), 2(链路中断)直接指示物理层状态
2-3PHY标识符厂商OUI + 型号确认芯片版本
4-15扩展标准寄存器自动协商、MDI/MDIX交叉检测影响信号路径
16-31厂商特定信号幅度、EQ、CRC直接反映信号完整性
🔑 关键结论: 地址16-31才是信号完整性调试的主战场。比如你看到CRC错误计数蹭蹭涨,十有八九是信号质量问题。

访问协议:MDIO和MDC的“握手”规则

PHY寄存器通过MDIO接口访问。MDIO是双线制:一条时钟线MDC,一条数据线MDIO。读和写都有固定的帧格式。

一次MDIO读操作的帧结构是这样:

读帧: | PRE(32个1) | SFD(01) | OP(10) | PHY_ADDR(5bit) | REG_ADDR(5bit) | TA(ZZ) | DATA(16bit) |
写帧: | PRE(32个1) | SFD(01) | OP(01) | PHY_ADDR(5bit) | REG_ADDR(5bit) | TA(10) | DATA(16bit) |

嗯,这里要注意:TA(Turn Around)在读取时,PHY会在第二个周期释放总线。如果MDIO上拉电阻没选对,TA阶段读到的数据全是错的。我曾经因为一个4.7kΩ的上拉电阻用成了10kΩ,导致读回来的寄存器值总是0xFFFF,查了大半天。

写操作相对简单,驱动直接输出数据。但写操作对时序要求也很高,MDC频率一般不能超过2.5MHz(Clause 22标准)。有些高速PHY支持Clause 45,频率能跑到12.5MHz,但兼容性要注意。

⚠️ 避坑指南: 我曾经接手一个项目,板子上PHY寄存器死活写不进数据。用示波器抓MDIO波形,发现MDC时钟上有毛刺。这不是协议问题,是信号完整性问题——MDC走线过长,串扰导致的。加了个根电阻匹配就好了。

访问时序:信号完整性从这里开始影响

你想想看,MDIO和MDC都是低速信号,为什么还会出问题?

问题出在PCB走线上。MDC虽然是时钟,但频率不高,一般也就2.5MHz。可如果走线太长,或者参考平面不连续,反射和串扰照样能把波形搞坏。MDIO数据一旦错位,读回来的寄存器值就全乱了。

我建议做PHY寄存器读写调试时,先检查MDIO信号质量:

  • 高电平是否接近3.3V?——太低说明驱动弱或上拉不合适
  • 上升沿是否干净?——有台阶说明存在反射
  • TA周期的数据是否稳定?——抖动可能表示时序裕量不足

说白了,寄存器值不对,不一定是PHY的锅。先检查MDIO信号完整性,往往能省下很多冤枉时间。

🔑 核心思路: PHY寄存器是信号完整性的“传感器”。读懂它,你就能定位80%的物理层问题。