ZDS2024 plus示波器MDIO解码/触发实战

MDIO是一个以太网控制器的传输协议,广泛用于以太网控制器和PHY之间的数据通讯,接下来,让我们详细了解一下MDIO协议。

MDIO(Management Data Input/Output),管理数据输入输出总线。它是由IEEE802.3定义的以太网行业标准,它承载着MAC层和物理层通信的重任。MDIO接口包括两跟信号线:MDC和MDIO,,MAC层芯片(或其他控制芯片)可以通过它们访问物理层芯片的寄存器,并通过这些寄存器来对物理芯片进行控制和管理。

MDC:管理接口的时钟,是一个非周期信号,信号的最小周期为400ns,最小正电平时间和负电平时间为160ns,最大正负电平时间无限制。

MDIO:是双向的数据线,用来传送MAC层的控制信息和物理层的状态信息。它与MDC时钟同步,在MDC上升沿有效。


现在我们就来看一下MDIO在ZDS2024 plus示波器上的表现:

打开Decode菜单,我们可以看到MDIO已经加入其中了。

选择MDIO协议,可以看到,MDIO的参数设置非常简单,只需要设置MDC,MDIO通道,以及数据传输模式即可。

将探头接入MDIO总线捕获数据,因为MDIO传输的波特率较高,我们需要将探头衰减比打到x10的档位上,减少波形失真。我们看到MDIO的解码已经开始了,结果准确无误。

此处,我们通过事件表看到解码出来的这一帧PHYAD是0x12,那么我们是否从数据的洪流中捕捉到这一帧呢?实际上是可以的,MDIO协议不仅实现了解码功能,它还具备强大的触发功能,我们可以通过MDIO协议触发将这一帧单独捕捉出来。

我们首先将触发参数设置好,如下图所示,我们将OP类型设置成:读,芯片地址设置为:0x12。

接入信号,触发立马响应,触发点稳定在值为0x12的PHYAD段后面,特定帧捕获成功!

除了PHYAD触发外,MDIO触发还可以根据ST,OP,REGAD和DATA段进行触发,功能非常实用。

至此,MDIO协议的演示就到这里了,你的开发是否需要用到MDIO总线呢,是否也跃跃欲试想要窥探总线上出现的各种问题呢,ZDS2022 plus与ZDS2024 plus目前都已支持MDIO协议,赶紧升级你的示波器,将MDIO加入其中吧。

附:MDIO的帧结构

一个标准的MDIO帧包括PRE,ST,OP,PHYAD,PEGAD,TA和DATA段,如下图所示。

PRE:帧前缀域,为32个连续“1”比特,这帧前缀域不是必要的,某些物理层芯片的MDIO操作就没有这个域。

OP:帧操作码,比特“10”表示此帧为一读操作帧,比特“01”表示此帧为一写操作帧。

PHYAD:物理层芯片的地址,5个比特,每个芯片都把自己的地址与这5个比特进行比较,若匹配则响应后面的操作,若不匹配,则忽略掉后面的操作。

REGAD:用来选择物理层芯片的32个寄存器中的某个寄存器的地址。

TA:状态转换域,若为读操作,则第一比特时MDIO为高阻态,第二比特时由物理层芯片使MDIO置“0”。若为写操作,则MDIO仍由MAC层芯片控制,其连续输出“10”两个比特。

DATA:帧的寄存器的数据域,16比特,若为读操作,则为物理层送到MAC层的数据,若为写操作,则为MAC层送到物理层的数据。

IDLE:帧结束后的空闲状态,此时MDIO无源驱动,处高阻状态,但一般用上拉电阻使其处在高电平,即MDIO引脚需要上拉电阻。