MDIO总线容易弄错的地方 下载本文

内容发布更新时间 : 2024/9/27 7:21:54星期一 下面是文章的全部内容请认真阅读。

MDIO总线容易弄错的地方

MDIO不像I2C总线数据总是在时钟下降沿变化。MDIO在802.3标准里面定义。标准没有要求数据在时钟的哪个沿变化,但是在PHY驱动MDIO总线时要求MDIO必须在MDC上升沿后0~300ns内发生变化。这就隐含了PHY在MDC的上升沿时打出数据。所以在MAC通过MDIO读PHY信息时,前面MAC驱动MDIO部分是在MDC下降沿打出数据,后面PHY驱动MDIO部分是在MDC上升沿打出数据。

还有一个容易引起误解的问题是由MAC转向PHY驱动MDIO时的TA阶段,也叫Turn Around阶段。这部分时序比较特殊。在写操作时,MAC始终驱动MDIO,TA阶段是完整的两个时钟周期,并且都是MDC下降沿时MDIO发生变化。但是在读操作时,由于涉及到驱动源切换,TA阶段就不是完整的两个时钟周期。严格来说,读时TA是一个半时钟周期。开始时PHY一直输出高阻,MAC驱动MDIO在MDC下降沿变化直到最后一个周期,即REGAD最低位那个周期的MDC下降沿,MAC的MDIO输出高阻。然后MDIO总线进入TA阶段。MAC输出高阻一直到整个读操作结束,PHY在进入TA阶段的半个周期后,也就是在TA阶段的第一个MDC上升沿时把MDIO拉低,并持续一个周期,TA阶段结束。 下图标明了读操作时MAC和PHY的输出状态。

下图是另一个示意图,可以看出数据在时钟哪个沿变化。

下面是实测波形,右边那个半个周期的尖就是TA前半个周期的高阻。

由上述分析可知,看一个完整的MDIO波形图,如果MDIO都是在MDC下降沿变化,那么就是写。如果MDIO先在MDC下降沿变化,再在上升沿变化,那么就是读。MDIO第一次从MDC下降上升到高电平,半周期后在MDC上升沿变低,这个过程就是TA的前半个周期。此后一个周期是TA的最后一个周期,往后就是读到的数据了。