MDIO时序图分析

这是我个人做的学习笔记,方便以后自己回顾,主要介绍时序图的分析,如有不对的地方请指教。
MDIO是为MII总线接口定义的,MII用于连接MAC和PHY。其中FPGA内部设计MAC为主,片外PHY为从。MDIO为数据总线。
MDC是芯片产生的一个时序,通过这个时序来控制MDIO。

1、读时序
通过MAC发送PHY Address(芯片地址)及Reg Address(芯片上寄存器的地址)来驱动PHY芯片,读取PHY芯片的这个指定地址上的值(即Reg Data部分),然后释放总线。
MDIO时序图分析_第1张图片
tip:MDIO时序图分析_第2张图片
我的理解为左边FPGA内部为MDIO总线的MAC部分,右边FPGA外部为MDIO总线的PHY部分。

//图中data相当于mdio,wr_en相当于mdo_en,wr_data相当于mdo,rd_data相当于mdi
	assign mdi = mdio;
	assign mdio = mdo_en ? mdo : 1'bz;
//此程序的三态门只定义了读,没有定义写

2、写时序
在MAC直接发送总线上的数据(Reg Data),到指定的外部芯片地址PHY Address 中的指定寄存器(Reg Address)中。
MDIO时序图分析_第3张图片

3、状态分析
在Idle状态下,为高阻即释放总线。
在Pre状态下,接收32个bit的1时进入Start状态。
在Start状态下,出现一个2bit的数据01开始进入OP状态,读/写模式。
在OP状态下,读写模式下,若接收2bit信号01则判断为写,10则判断为读,然后进入PHY Address状态。
在PHY Address状态下,出现一个5bit标识的PHY地址,然后进入Reg Address状态。
在Reg Address状态下,出现一个5bit表示的寄存器地址,然后进入TA状态。
在TA状态下,经过一个2bit数据的访问时间,10则为写,z0则为读,然后进入Reg Data状态。
在Reg Data下,串行读/写这个16bit的数据,然后进入idle状态。

附上我的工程文件:
MDIO工程等相关文件

你可能感兴趣的:(FPGA,笔记,Verilog,FPGA,MDIO,MDC,Verilog)