了解与MDIO/MDC接口相关的22号、45号条款
时间:2023-02-28 06:00:00
MDIO接口
SMI:串行管理接口(Serial Management Interface),也被称作MII管理接口(MII Management Interface),包括MDC和MDIO两条信号线。MDIO是用来对PHY操作管理接口,如芯片。
MDIO的历史
MDIO是Management Data Input/Output 缩写有两条线,分别是双向的MDIO和单向的MDC,用于管理以太网设备中上层的物理层。管理这些的原因PHY芯片,因为它是对的PHY访问和修改各种芯片寄存器。
MDIO接口最初是由的IEEE RFC802.3中的22号条款
在最初的定义中,单独定义MDIO可访问32个不同的接口PHY设备中的32个寄存器提供状态和控制信息,如连接状态、传输速度能力、当前选择的传输速度、低压消耗、全双或半双工、自动协商、错误提示和反馈信息等。
为了满足10G以太网设备的普及发展,在IEEE 802.3ae 的45号条款
中为MDIO界面提供了额外的规范:
1)65536个寄存器可通过32个端口访问32个不同设备;
2)为访问10G以太网提供额外的OP码和ST可直接访问寄存器地址;
3)端到端报错信号;
4)环回模式控制;
5)低压电气标准。
MDIO数据传输协议
22号条款
Frame | Preamble (32bits) | Start (2bits) | OP Code (2bits) | PHYAD (5bits) | REGAD (5bits) | Turn Around (2bits) | Data (16bits) | Idle |
---|---|---|---|---|---|---|---|---|
Read | 1...1 | 01 | 10 | A4...A0 | R4...R0 | Z0 | D15...D0 | Z* |
Write | 1...1 | 01 | 01 | A4...A0 | R4...R0 | 10 | D15...D0 | Z* |
上图中*此时表示高阻态MDIO一个外部的1.5KΩ电阻决定。
Preamble Start:32bits前导码和2bit的开始位。
OP Code:2bits操作码,读10,写01。
PHYAD:5bits的PHY地址,一般PHY地址从0开始顺序编号,如6口switch中PHY地址为0-5。
REGAD:5bits寄存器地址,即读写寄存器。
Turn Around:2bits的TA,在阅读命令中,MDIO在此时由MAC驱动改为PHY驱动,等待一个时钟周期来发送数据。不需要写命令MDIO如果方向发生变化,只需等待两个时钟周期准备写入数据。
Data:16bits数据,在读命令中,PHY读取芯片的对应性PHYAD的REGAD写下寄存器的数据Data在写命令中,MAC写入对应PHYAD的REGAD寄存器的值写入Data中。
Idle:此时的空闲状态MDIO无源驱动,处于高电阻状态,但通常使用上拉电阻使其处于高电平。
帧格式中PHY寄存器的地址和地址都是5bit,这就限制了STA可连接的MMD数量。另外,22号条款只支持5V没有其他低压选项的设备。
45号条款
Frame | Preamble (32bits) | Start (2bits) | OP Code (2bits) | PHYAD (5bits) | DEVAD (5bits) | Turn Around (2bits) | Data (16bits) | Idle |
---|---|---|---|---|---|---|---|---|
Address | 1...1 | 00 | 00 | PPPPP | EEEEE | 10 | A15...A0 | Z* |
Write | 1...1 | 00 | 01 | PPPPP | EEEEE | 10 | D15...D0 | Z* |
Read | 1...1 | 00 | 11 | PPPPP | EEEEE | Z0 | D15...D0 | Z* |
Read Inc. | 1...1 | 00 | 10 | PPPPP | EEEEE | Z0 | D15...D0 | Z* |
上图中*此时表示高阻态MDIO一个外部的1.5KΩ电阻决定。
Preamble Start:32bits前导码和2bit开始。帧开始标志, 为了区别CL22,Clause45 比特00的开始标志。
OP Code:操作码,Clause45有四种操作代码。比特00表示设置当前寄存器地址,比特01表示写当前寄存器。比特10表示读取当前寄存器,比特11表示读取当前寄存器后,将当前寄存器值加1,用于顺序读取。
PRTAD:Port Address,端口地址, 又称物理地址。
DEVAD:器件地址,CL45新概念,各值与设备对应如下。
Value | Device |
---|---|
00000 | Reserved |
00001 | PMD/PMA |
00010 | WIS |
00011 | PCS |
00100 | PHY XS |
00101 | DTE XS |
------ | ------------------ |
REGAD:用来选MMD65536个寄存器中某个寄存器的地址。
Turn Around:2bits的TA,在阅读命令中,MDIO在此时由MAC驱动改为PHY驱动,等待一个时钟周期来发送数据。不需要写命令MDIO如果方向发生变化,只需等待两个时钟周期准备写入数据。
Data:16帧寄存器的数据域bits,若为读操作,则为MMD送到STA如果数据是写作操作,则为STA送到MMD数据。
Idle:
第45号条款的主要变化是如何访问寄存器。在第22中,一个单独的帧指定要读或写的地址和数据,同时完成了这些工作。45号中改变这种范式,第一个地址帧发送到指定的MMD和寄存器,然后发送第二帧来执行读或写。
添加这个依次循环访问的好处是45条款是向后兼容22条款的,允许设备的互操作。其次,通过创建一个框架的登记地址,地址空间从5位增加到16位,这使得STA访问65536个不同的寄存器。
为了做到这一点,在数据帧的组成部分进行了一些变化。定义了新的ST代码(00),用于标识第45号条款的数据帧。运算码扩展到指定地址帧,写帧,读帧,或读和读后增量地址帧。由于寄存器地址不再需要,这个字段被指定目标设备类型的内容代替。扩展后还允许STA接入除了PHY以外的其他设备。
读第45号条款的寄存器操作:
Write Address AAAAAAAAAAAAAAAA to Device VVVVV on Port PPPPP
Read Register From Device VVVVV on Port PPPPP
写第45号条款的寄存器操作:
Write Address AAAAAAAAAAAAAAAA to Device VVVVV on Port PPPPP
Write Register To Device VVVVV on Port PPPPP
每个操作都需要执行两个步骤。
如果STA只支持Clause22访问,但是PHY却是802.3ah PHY
802.3ah PHY 为了能支持Clause22 STA的访问。只预留的 Reg 13
和 Reg 14
。STA能通过Clause22 访问Reg 13和14间接访问Clause45寄存器。
用第22号条款访问第45号条款的寄存器读操作:
Write FN = Address & EEEEE to C22 Register 13 on Port PPPPP
Write Address AAAAAAAAAAAAAAAA to C22 Register 14 on Port PPPPP
Write FN = Data & EEEEE to C22 Register 13 on Port PPPPP
Read Register From C22 Register 14 on Port PPPPP
用第22号条款访问第45号条款的寄存器写操作:
Write FN = Address & EEEEE to C22 Register 13 on Port PPPPP
Write Address AAAAAAAAAAAAAAAA to C22 Register 14 on Port PPPPP
Write FN = Data & EEEEE to C22 Register 13 on Port PPPPP
Write Register To C22 Register 14 on Port PPPPP
每个操作都需要执行四个步骤。
参考文献:
pannell_1_1102 (ieee802.org)