Menu Close

以太网PHY 之 MDIO接口及应用

MDIO 接口是以太网中MAC 层和 PHY 的控制/状态 的配置接口。 接口只是需要2根连线,MDIO, MDC 。 用来对PHY 芯片等物理层信息进行操作管理。

MDIO 定义:

MDIO(Management Data Input/Output) 接口是由MDIO,MDC 2根线组成的同步串行半双工接口。 用于对PHY 芯片的状态读取,和控制信息的写入。

管理数据输入/输出 (MDIO),也称为串行管理接口 Serial Management Interface (SMI) 或媒体独立接口管理 Media Independent Interface Management (MIIM),是在 IEEE 802.3 标准以太网系列定义的串行总线。

基本的拓扑结构为:

%title插图%num

 

图1

图1 :中显示的是最为普遍的以太网PHY 芯片的连接方式。 通常是以太网PHY 芯片连接FPGA, 或者连接CPU等。

MDIO :为双向的数据线,可以从MAC发送到PHY , 也可以从PHY 发送数据到MAC。

MDC   :为时钟线,从MAC层发出, PHY 芯片接收这个信号。

MDIO线上的数据和MDC 上的时钟同步, 一般情况下, MDC 的最高时钟为2.5M。

在硬件设计中(原理图)会为每个以太网PHY 芯片规定一个phy_addr ,用于MAC层和PHY 芯片进行通讯。

%title插图%num

图2

一对MDIO,MDC  接口可以连接一个以太网PHY ,或者连接多个以太网PHY ,由于协议中的地址位宽为5-bit, 所以最多连接31 个 物理外设(PHY )。在硬件设计中, 会为每个以太网PHY 片分配一个phy_addr ,这样可以保证MAC 和PHY 之间的通讯是可以区分的。

MDIO 协议用途:

MDIO串行通讯,主要用于MAC层(主机端)发送以太网PHY 相关的命令, 当然,也可以读取以太网PHY 的一些状态。 主要应用为:

  • 读取以太网PHY 芯片型号,确定哪一个厂家,什么型号的PHY 芯片,用于上层(软件等)根据不同的芯片,配置相关的驱动。一般来说, 所有的以太网PHY 都会遵循MDIO通讯协议,在PHY 芯片的寄存器地址2,3 保存PHY 的厂家,型号, 版本等信息
  • 配置以太网PHY 的工作模式, 主要是通过写入数据到PHY 芯片寄存器地址0,来控制PHY 芯片的工作模式, 包括reset, auto-negotiation,10M/100M/1000M,全双工/半双工等。
  • 读取当前以太网PHY 的工作状态,地址0x11 。包括当前以太网是否链接, 当前的以太网速度等等。
  • 产生中断通知MAC, MAC层接收到中断后, 可以查询中断状态寄存器, 看看到底发生什么样的事件,引起PHY 中断信号。包括断线,连接速度改变等。
  • 当然,不同的以太网芯片还有很多方面的控制,和状态信息,不同的PHY 芯片有所不同。

%title插图%num

图3

MDIO 数据协议:

MDIO 协议在 IEEE 802.3u Clause 22  和 Clause 45  中都有定义, 最普遍的是使用Clause (条款)22。 Clause 45 在兼容22的基础上,有所扩展。(除了兼容Clause 22 的读,写操作外, 又增加了其他命令)。Clause45有4种操作码(OpCode),比特“00”表示设置当前寄存器地址,比特“01”表示当前寄存器。比特“10”表示当前寄存器,比特“11”表示读当前寄存器完后把当前寄存器的值加1,用于顺序读。

这里我们主要是介绍Clause 22:

MDIO数据协议格式:

%title插图%num

图4

MDIO 帧结构:

命令/状态 CMD/STATE 值(value) 行为(behavior)
前置 Preamble

前导字

32个1

0xffff,32’hffff

32 Contiguous Logical 1’s Sent by the MAC on MDIO,

along with 32 Corresponding Cycles on MDC.

This provides synchronization for the PHY.

MAC发送32个连续的1作为同步信号。

帧启动 start of frame 01 Start of Frame 帧起始标志
读/写 OpCode 10 或 01 Operation Code. Read: 10 Write: 01
Phy地址 PHYAD 0-31 PHY芯片地址, 只有发送的地址数据与硬件设置的数据一致,

该芯片才会被选中,0地址一般作为广播地址。

寄存器地址 REGAD 0-31 Register Address.

This is a 5-bit field that sets which of the 32 registers of the PHY

this operation refers to.

PHY芯片内部总共32个寄存器,地址编码0-31

反转 TA Z0–读 写 Turnaround. This is a 2-bit-ime spacing between the register

address and the data field of a frame to avoid contention

during a read transaction. For a read transaction, both the

STA and the PHY remain in a high-impedance state for the

first bit time of the turnaround.

The PHY drives a zero bit during the second bit time of the

turnaround of a read transaction

读:MAC端的MDIO此刻起到帧结束一直为高阻态,PHY的MDIO

改为输出

写:始终由MAC的MDIO控制,整个帧可以认为都是

写的过程。

数据 DATA These are the 16 bits of data. 16bits数据
空闲 IDLE Idle Condition. Not truly part of the management frame.

This is a high impedance state. Electrically, the PHY’s pull-up resistor will pull the MDIO line to a logical ‘1’.

空闲可以认为不是帧的部分,空闲时MAC的MDIO为高阻,

由于有上拉电阻,总线上为高电平,PHY的MDIO为输入

 

1)MDIO的数据协议格式为: Preamble + Start of Frame + OpCode + PHYAD + REGAD + TA + DATA + IDLE

  • Preamble: 在读写操作之前, 需要在MDC时钟控制下 , MDIO 连续输出 32个1(由MAC发出)。
  • Start of Frame: 规定的控制字, 代表数据包的开始,为 2-bit数据 ,该数据固定为01(由MAC发出)。
  • OpCode:操作码,表示接下来的操作类型,为 2-bit数据 。其中 2’b01 代表MAC数据到PHY的操作, 2’b10代表从PHY中取数据到MAC的操作。
  • PHYAD:以太网PHY地址(5-bit), 表示MAC要和哪个以太网PHY进行通讯(由MAC 发出)。
  • REGAD:PHY 芯片中的寄存器地址( 5-bit),当选择PHY芯片后(phy_addr) , 具体要和芯片中的哪个寄存器操作(由MAC发出)。
  • TA: MDIO 数据线上的input 、output 转换位 ( 2-bit)。读操作时, 为2’bz0;  写操作时, 为 2’b10 (由MAC发出)。
  • DATA:MAC 写入PHY的数据(由MAC发出),或者是从PHY读出的数据 (由PHY发出),数据长度为16-bit。
  • IDLE:空闲状态, 没有强制规定多少bit, 一般来说需要至少 1 bit。IDLE期间, MAC和PHY都处于高阻状态。

2)MDIO读操作

读操作的OpCode 为 10。具体操作方式见图5。

%title插图%num

图5

图5中显示的是MDIO中的读操作数据格式,其中: MDC 只由MAC端发出;MDIO(STA) 由MAC端发出,PHY接收;MDIO(PHY) 由PHY发出,MAC接收。

当MAC发送数据时, 一般需要在MDC时钟的下降沿后发送,(可以允许延迟一定的时间, 但是要保证在MDC 时钟上升沿到来之前处于稳定状态,具体的时间参数,可以参照PHY的芯片手册)。

当MAC接收数据时, 使用MDC 时钟的下降沿采样MDIO(PHY) 上的数据。

 

3)MDIO写操作

写操作的OpCode 为 01。具体操作方式见图6。

%title插图%num

图6

从图6中可以看出, 在MAC写数据到PHY的操作中(写操作), MAC 层发送MDC 时钟及MDIO(STA)数据。 没有数据从PHY芯片发出。

所有的数据都是MAC层在MDC 时钟下降沿之后发送, PHY芯片端在MDC时钟上升沿时接收。

 

原理图连接实例:

以FII-PRX100-D开发板为例:

%title插图%num

图7

从图7中可以看出, FII-PRX100-D开发板使用的是RTL8211E (48-pin)的以太网PHY芯片。其中pin 13,34,35 用来控制以太网PHY芯片的物理地址。

%title插图%num

图8

%title插图%num

图9

从图8, 图9中可以看出,物理地址的连接为 {phy_AD2, phy_AD1, phy_AD0 } = 3’b001。

 

%title插图%num

图10

图10 中可以看出, RTL8211E 芯片可以配置7个物理地址 PHYAD[2:0] ,其地址范伟为 1 – 7 。 地址0 用于特殊用途(广播操作) 。如果MAC层发送的地址为5’b0_0000,所有的PHY都需要响应这个操作(广播)。

RTL8211E MDIO 时序:

%title插图%num

图11

 

具体关于MDIO通讯的讲解, 请参照视频讲解。

 

Posted in FPGA, FPGA 教材教案, Verilog, 教材与教案, 文章

发表回复

相关链接