MDIO
总线容易弄错的地?/p>
MDIO
不像
I2C
总线数据总是在时钟下降沿变化?/p>
MDIO
?/p>
802.3
标准里面定义。标准没?/p>
要求数据在时钟的哪个沿变化,
但是?/p>
PHY
驱动
MDIO
总线时要?/p>
MDIO
必须?/p>
MDC
上升沿后
0~300ns
内发生变化。这就隐含了
PHY
?/p>
MDC
的上升沿时打出数据。所以在
MAC
通过
MDIO
?/p>
PHY
信息时,
前面
MAC
驱动
MDIO
部分是在
MDC
下降沿打出数据,
后面
PHY
驱动
MDIO
部分
是在
MDC
上升沿打出数据?/p>
还有一个容易引起误解的问题是由
MAC
转向
PHY
驱动
MDIO
时的
TA
阶段,也?/p>
Turn
Around
阶段。这部分时序比较特殊。在写操作时?/p>
MAC
始终驱动
MDIO
?/p>
TA
阶段是完整的两个时钟
周期,并且都?/p>
MDC
下降沿时
MDIO
发生变化。但是在读操作时,由于涉及到驱动源切换,
TA
阶段就不是完整的两个时钟周期。严格来说,读时
TA
是一个半时钟周期。开始时
PHY
一
直输出高阻,
MAC
驱动
MDIO
?/p>
MDC
下降沿变化直到最后一个周期,?/p>
REGAD
最低位那个?/p>
期的
MDC
下降沿,
MAC
?/p>
MDIO
输出高阻?/p>
然后
MDIO
总线进入
TA
阶段?/p>
MAC
输出高阻一直到
整个读操作结束,
PHY
在进?/p>
TA
阶段的半个周期后,也就是?/p>
TA
阶段的第一?/p>
MDC
上升?/p>
时把
MDIO
拉低,并持续一个周期,
TA
阶段结束?/p>
下图标明了读操作?/p>
MAC
?/p>
PHY
的输出状态?/p>
下图是另一个示意图,可以看出数据在时钟哪个沿变化?/p>
