以太网传输速率从10兆发展到今天的100GMAC层和PHY层之间的硬件接口发生了很大的变化,但是其中用来管理PHY的物理引脚始终只有2个,即MDCMDIO引脚。随着PHY层变得越来越复杂,PHY寄存器的组织方式和寻址方式发生了变化,PHY管理接口的名称也从“MII管理接口”变为“MDIO接口”。千兆以太网之前,PHY管理接口称为“MII管理接口”;从10G以太网开始使用“MDIO接口”。有的千兆和百兆PHY支持一些扩展功能,也需要使用MDIO接口进行管理。

MII管理接口和MDIO接口

IEEE802.3标准的Clause22中描述了MII管理接口,而MDIO接口则在Clause45中进行说明。

PHY管理接口只有2个引脚,即MDCMDIOMDC用于传送时钟信号。在MII管理接口中,MDIO引脚只用作数据I/O通道;在MDIO接口中,则作为地址和数据通道使用。在电气特性方面,MDIO接口使用了更低的电压。

在产品硬件设计中,一台设备可能需要插多种型号的子卡,不同子卡上可能使用不同的PHY芯片,这意味着MAC芯片既要支持MII管理接口也要支持MDIO接口,并且可以在两种接口之间自由切换。

寄存器的组织方式

千兆以下的PHY比较简单,只有32个寄存器,MAC通过MII管理接口访问这些PHY寄存器。

10G以上的PHY比较复杂,PHY层被划分为多个子层,PCS子层、PMA子层、PMD等子层都有各自对应的MMD设备。MMD设备是MDIOManageableDevice的缩写,通过IEEE802.3标准Clause45规定的MDIO接口进行管理。10G以上的PHY的寄存器数量大大增加,寄存器的组织方式和千兆PHY也有明显的差异。

MII管理接口的寄存器

MII管理接口的寄存器列表:

地址

寄存器名称

说明

0

Control

基本寄存器

1

Status

基本寄存器

2,3

PHYIdentifier

扩展寄存器

4

Auto-NegotiationAdvertisement

扩展寄存器

5

Auto-NegotiationLinkPartnerBasePageAbility

扩展寄存器,用于自协商功能

6

Auto-NegotiationExpansion

扩展寄存器,用于自协商功能

7

Auto-NegotiationNextPageTransmit

扩展寄存器,用于自协商功能

8

Auto-NegotiationLinkPartnerReceivedNextPage

扩展寄存器,用于自协商功能

9

MASTER-SLAVEControlRegister

扩展寄存器,用于自协商功能

10

MASTER-SLAVEStatusRegister

扩展寄存器,用于自协商功能

11

PSEControlregister

扩展寄存器

12

PSEStatusregister

扩展寄存器

13

MMDAccessControlRegister

扩展寄存器

14

MMDAccessAddressDataRegister

扩展寄存器

15

ExtendedStatus

千兆以太网中,register15用作扩展的状态寄存器;百兆以太网中,保留未使用。

16~31

VendorSpecific

PHY厂商自定义。这也意味着,这些寄存器需要参考芯片手册才能了解具体的含义。

MDIO接口的寄存器

MDIO接口的定义中,PHY被划分为多个MMD设备(MDIOManagableDevice),每个MMD内部的寄存器的地址分配和MII管理接口中的地址类似,不过寄存器的数量多出很多。

IEEE802.3标准规定的MMD设备地址:

设备地址

设备名称

0

保留

1

PMA/PMD设备

10G以太网中,PMAPMA通常集成在一起。

2

WIS

3

PCS

4

PHYXS

5

DTEXS

6

TC

7

Auto-Negotiation

8

SeparatedPMA(1)

40G/100G以太网中,PMAPMD是分开的。

9

SeparatedPMA(2)

10

SeparatedPMA(3)

11

SeparatedPMA(4)

12~28

保留

29

Clause22扩展

30

VendorSpecific1。这意味着,device30的寄存器需要参考厂商的芯片手册才能了解具体的含义。

31

VendorSpecific2

管理帧的结构

MAC访问PHY时,需要向PHY发送特定格式的信号,这些信号称为“管理帧”。

MII管理接口的帧结构

通过MII管理接口访问PHY寄存器时,知道PHY地址和寄存器地址即可。MII接口管理帧的结构如下:

操作类型

PRE

ST

OP

PHYAD

REGAD

TA

DATA

读操作

1......1

01

10

AAAAA

RRRRR

Z0

DDDDDDDDDDDDDDDD

写操作

1......1

01

01

AAAAA

RRRRR

10

DDDDDDDDDDDDDDDD

1)PRE

PRE即preambleMAC访问PHY寄存器之前,连续发送32个“1”,用于和PHY进行同步。

2)ST

STStartofframe,是2个固定的比特01

3)OP

OPOperationCode。读操作的操作码是10,写操作的操作码是01

4)PHYAD

PHYADPHYaddress,表示5bit位的PHY地址。PHY地址是由硬件连接决定的。硬件设计时,把PHY芯片的引脚电平上拉或者下拉,就可以设定PHY的地址。

5)REGAD

REGADRegisterAddress,表示PHY内部的寄存器地址。MII管理接口中,寄存器地址是5位的。

6)TA

TATurnAround。读操作的TA域从高阻态变为0,写操作的TA域则是从1变为0

7)DATA

数据域为16bit,和PHY寄存器的宽度一致。读操作中,DATA域是从PHY层读到的数据;写操作中,DATA域是要写入PHY寄存器的值。

MDIO接口的管理帧

MDIO接口硬件上和MII管理接口一致,但是管理帧结构发生了变化。通过MDIO接口访问PHY寄存器时,需要知道端口地址、MMD设备地址和寄存器地址。

MDIO接口的管理帧如下:

操作类型

PRE

ST

OP

PRTAD

DEVAD

TA

ADDRESS/DATA

地址操作

1......1

00

00

PPPPP

EEEEE

10

AAAAAAAAAAAAAAAA

读操作

1......1

00

11

PPPPP

EEEEE

Z0

DDDDDDDDDDDDDDDD

Post-read-increment-address操作

1......1

00

10

PPPPP

EEEEE

Z0

DDDDDDDDDDDDDDDD

写操作

1......1

00

01

PPPPP

EEEEE

10

DDDDDDDDDDDDDDDD

MII管理接口相比,MDIO接口的读和写操作变复杂了,操作一个寄存器需要两步完成,首先要传送寄存器地址信息,然后才能读或者写对应的寄存器。

MII管理接口的管理帧相比,MDIO接口的管理帧的主要差异如下:

1)ST

STStartofframeMII接口的管理帧的ST域是01MDIO管理帧中ST域的值是00

2)PRTAD

PRTADPortAddressPRTADMII管理接口的管理帧的PHYaddress一致。

3)DEVAD

DEVADDeviceAddress,该域是MMD设备的5ID。这个域对应MII管理接口的管理帧的寄存器地址域。

4)ADDRESS/DATA

MDIO接口的地址操作中,这个域用来传送需要访问的寄存器的16位地址。MII管理接口中,寄存器地址只有5位;MDIO接口中,寄存器地址变为16位。

MDIO接口的读写操作中,这个域是读出或者待写入的数据。

----2013.11.03