MDIO/MDC接口

http://xiaominwzj.blog.163.com/blog/static/24192202220153201132715/

MDIO接口,MAC与PHY间的管理接口(MII是数据接口),有2根线:时钟线MDC,数据线MDIO(双向)

 MDIO工作流程: 
1、Preamle(PRE):在没有传输数据的空闲状态时,数据线MDIO处于高阻态(一直为1)。 
2、Start of Frame(ST):MAC驱动MDIO线,出现一个2bit的开始标识码(01)。 
3、Operation Code(OP):MAC驱动MDIO线,出现一个2bit数据来标识是读操作(10)还是写操作(01)。 
4、PHY Address(PHYAD):MAC驱动MDIO线,出现一个5bit数据标识PHY的地址。 
5、Reg Address(REGAD):AC驱动MDIO线,出现一个5bitPHY寄存器地址。 
6、Turnaround(TA):写操作的话,MAC驱动MDIO线,出现10,读操作的话,
MDIO pin of MAC must be put in high-impedance state,第二个周期,PHY驱动MDIO线,出现0; 
7、Data:MDIO串行读出/写入16bit的寄存器数据。 
8、MDIO恢复成空闲状态,同时MDIO进入高阻状态。

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

你可能感兴趣的:(MDIO/MDC接口)