MDIO概述
MDIO接口,是Management Data Input/Output的缩写。MDIO接口包含在IEEE802.3协议中,是专用于以太PHY的管理的串行总线接口。
MDIO应用框图
图1 MDIO应用框图
图1为MDIO应用框图。STA设备通过MDIO接口与PHY通信。STA(StaTIon Management)为主控设备,比如MCU、MAC、ONU等。PHY为从设备。一个STA最多管理32个PHY。MDC信号由STA控制,MDIO信号根据通信方式的不同可以由STA或者PHY接管控制。通常MDIO会通过电阻上拉至接口电源。
MDIO接口信号
如表1所示,MDIO接口包含两根信号线,一根时钟线,一根数据线。
表1 MDIO接口信号
MDC为MDIO接口时钟信号,来自STA,用来对MDIO的数据采样。MDC可以是非周期性信号。协议对MDC的高低电平的最大宽度并没有限制,仅限制了MDC的最小高低电平宽度不能小于160ns,最小周期不能小于400ns。这意味着MDC最高频率不能超过2.5MHz。
MDIO为MDIO接口数据信号,为双向信号,STA和PHY均可以接管。用来在PHY控制芯片和PHY芯片之间的传递控制和状态信息。
图2 MDIO接口时序
协议对MDIO接口时序进行了定义。如图2所示,以MDC上升沿为基准。当MDIO由STA输出时,需要满足建立时间、保持时间均大于10ns。当MDIO由PHY输出时,需要满足输出延迟不超过300ns。
MDIO帧格式
MDIO有两种模式:俗称1G MDIO和XG MDIO。1G MDIO由IEEE 802.3 Clause22定义,主要应用于千兆/百兆的以太PHY,XG MDIO由IEEE 802.3 Clause45定义,主要用于千兆以上的以太PHY。下面以Clause22为例介绍MDIO帧格式,如图3所示。
图3 MDIO Clause22帧格式
IDLE:空闲域。无MDIO帧发送时,MDIO接口输出高阻(外部有上拉电阻,总线上看到的是高电平)。
PRE:Preamble,前导。每帧发送前,STA通过MDIO连续发送32个MDC周期的高电平,同时通过MDC输出32个时钟周期。前导的作用是为PHY建立同步提供时间。如果STA能够确定PHY可以接收管理帧,可以压缩前导的发送。
ST:2bit,Start of Frame。帧起始符,2’b01代表帧起始。
OP:2bit,操作码。2’b10代表读,2’b01代表写。
PHYAD:5bit,PHY地址。因此1个MDIO最多管理32个PHY。MDIO在访问PHY之前,需要提前知晓各个PHY的地址。所有PHY均需要对地址0进行响应。
REGAD:5bit,寄存器地址。总共32个寄存器地址,协议对前16个寄存器地址进行了详细的定义。其中地址0为控制寄存器,地址1为状态寄存器,其他14个地址为扩展寄存器。
TA:2bit,Turnaround。TA是地址传输和数据传输转换时的空闲时间。因为读操作的时候,地址传输和数据传输控制方不同,设置2bit TA的目的就是为了防止MDIO总线上产生竞争。
读情形,TA第1bit,PHY和STA均释放总线控制输出高阻。TA第2bit,总线交由PHY控制,输出0,即读操作时TA为2‘bZ0(由于总线有上拉电阻存在,从总线上看到的依然是2’b10)。写情形,TA由STA输出2‘b10。
DATA:16bit,数据域。写操作的时候,STA用来发送写数据。读操作的时候,PHY用来发送读数据。
注:MDIO发送bit序为高比特先传。
图4 MDIO Clause45帧格式
MDIO Clause45在Clause22基础上做了一些扩展,目的是为了访问更多的寄存器。Clause45帧格式如图4所示。相对于Clause22帧格式而言,Clause45做了如下修改:
1、ST由01修改为00
2、OP进行了重新定义。00:地址帧 01:写 11:读 10:增量读(Post-read-increment-address)
3、PHYAD域修改名称为PRTAD,端口地址但仍代表PHY地址
4、REGAD修改为DEVAD,Clause45将PHY内部子模块的地址进行细分,这些子模块用DEVAD寻址。子模块内部的寄存器则使用地址帧进行寻址。
Clause45的修改大大扩展了访问地址范围,但是由于地址和读写操作的分离,导致访问效率降低一半。为了解决该问题,Clause45新增了增量读模式,允许先发送一次地址帧,后续仅发送增量读操作。在每次读完成后,PHY会自动将地址移动到下一个相邻的寄存器地址,这样就能完成从指定地址开始顺序读取设备内部的寄存器,而无需重新发送地址帧,访问效率可以和Clause22相当。
后记
MDIO接口不仅定义了帧格式,还对其访问空间的寄存器进行了详细的定义,因此它只能应用于以太PHY的管理接口。对于MDIO寄存器详细定义感兴趣的同学,可以参考IEEE802.3 22.2.4(Clause22)和45.2(Clause45)中的描述。
Clause22和Clause45是不能共存的,如果应用时存在共存的情况,可以参考IEEE 802.3 Annex45A中关于Clause22 PHY,Clause45 PHY混合组网时的解决方案描述。简单说就是通过协议转换芯片进行混合组网。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』