一、 MDIO接口介绍
MDIO是Management Data Input/Output的缩写。MDIO接口包含在IEEE802.3协议中,是专用于MAC与PHY管理的串行总线接口。主要用于配置PHY芯片状态、读取寄存器、读取PHY地址、获取LINK状态等操作。与网口MII、RMII(TX_CLK、RX_CLK)等数据通讯无关。MDIO接口最多可以挂载32个PHY设备。
二、MDIO接口信号定义
MDIO接口是实时、半双工、串行的数据接口。MDIO接口由MDIO(Management Data Input/Output)线和MDC(Management Data Clock)线组成。
1、 MDC信号特点
单向传输:由MAC芯片驱动给PHY芯片,在MDC上升沿时对MDIO进行数据采样
信号要求:MDC可以是非周期性信号。协议对MDC的高低电平的最大宽度并没有限制,仅限制了MDC的最小高低电平宽度不能小于160ns,最小周期不能小于400ns。这意味着MDC最高频率不能超过2.5MHz(协议要求)
PS:当前很多PHY芯片为追求更高通讯速率,提高了MDC频率。如IP101实际要求的MDC最小周期为300ns,最高频率达到3.3MHz。
2、 MDIO信号特点
双向传输:MDIO为双向信号,MAC和PHY均可以接管。用来在MAC和PHY芯片之间的传递控制和状态信息。写寄存器是MAC驱动,读寄存器时PHY驱动。
数据传输:先传高位(MSB),后传低位(LSB)。
输出采用三态电路设计:MDIO需要接1.5K~10K的上拉电阻。
MAC芯片内部下拉MDIO:通过MDIO线上是否有上拉电阻,来检测MDIO接口是否连接到PHY芯片上。
3、 MDIO 接口时序
以MDC上升沿为基准。当MDIO由MAC(STA)输出时,需要满足建立时间、保持时间均大于10ns。当MDIO由PHY输出时,需要满足输出延迟不超过300ns。
如下是RTL的PHY芯片的手册关于时序的要求,可做参考。
三、MDIO接口通讯帧定义
MDIO接口用于MAC与PHY之间进行通讯,根据IEEE802.3协议中将MDIO分为两种帧格式分别是Clause22和Clause45。其中 Clause22帧格式,主要应用于千兆/百兆的以太PHY,Clause45定义帧格式,主要用于千兆以上的以太PHY。
1、帧格式Clause22
IDLE:空闲域。无MDIO帧发送时,MDIO接口输出高阻(外部有上拉电阻,总线上看到的是高电平)。
PRE:Preamble,前导。每帧发送前,MAC通过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和MAC均释放总线控制输出高阻。TA第2bit,总线交由PHY控制,输出0,即读操作时TA为2‘bZ0(由于总线有上拉电阻存在,从总线上看到的依然是2’b10)。写情形,TA由MAC输出2‘b10。
DATA:16bit,数据域。写操作的时候,MAC用来发送写数据。读操作的时候,PHY用来发送读数据。
2、帧格式Clause45
MDIO Clause45在Clause22基础上做了一些扩展,目的是为了访问更多的寄存器。相对于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寻址。子模块内部的寄存器则使用地址帧进行寻址。
四、MDIO逻辑分析仪测试实例
使用逻辑分析仪实际分析MAC与SOC之前的通讯,对接口协议加深理解。
如下图是MAC与SOC之前MDIO的通讯波形(Clause22)。
文章来源:https://www.toymoban.com/news/detail-411914.html
1)START 01 确定使用Clause 22帧格式
2)OP 10 进行读的操作
3)PHY地址0X03
4)读寄存器0X01的值
5)TA 10 进行读操作
6)PHY发送0X786D值文章来源地址https://www.toymoban.com/news/detail-411914.html
到了这里,关于【科普贴】MDIO接口详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!