MDIO接口

MDIO接口介绍

MAC 和PHY 芯片有一个配置接口,即MDIO 接口,可以配置PHY 芯片的工作模式以及获取PHY 芯片的若干状态信息。PHY 芯片内部包含一系列寄存器,用户通过这些寄存器来配置PHY 芯片的工作模式以及获取PHY 芯片的若干状态信息,如连接速率、双工模式、自协商状态等。

MDIO 接口也称为SMI 接口(Serial Management Interface,串行管理接口),包括ETH_MDC(数据管理时钟)和ETH_MDIO(数据管理输入输出)两条信号线。ETH_MDC 为ETH_MDIO 提供时钟,ETH_MDC的最大时钟不能超过12.5Mhz。ETH_MDIO 为双向数据引脚,既用于发送数据,也用于接收数据。

MDIO接口协议

MDIO接口的协议如下:

Preamble:32 位前导码,由MAC 端发送32 位逻辑“1”,用于同步PHY 芯片。
ST(Start of Frame):2 位帧开始信号,用01 表示。
OP(Operation Code):2 位操作码,读:10 写:01
PHYAD(PHY Address):5 位PHY 地址,用于表示与哪个PHY 芯片通信,因此一个MAC 上可以连接多个PHY 芯片。
REGAD(Register Address):5 位寄存器地址,可以表示共32 位寄存器。
TA(Turnaround):2 位转向,在读命令中,MDIO 在此时由MAC 驱动改为PHY 驱动,在第一个TA位,MDIO 引脚为高阻状态,第二个TA 位,PHY 将MDIO 引脚拉低,准备发送数据;在写命令中,不需要MDIO 方向发生变化,MAC 固定输出2’b10,随后开始写入数据。
DATA:16 位数据,在读命令中,PHY 芯片将读到的对应PHYAD 的REGAD 寄存器的数据写到DATA中;在写命令中,PHY 芯片将接收到的DATA 写入REGAD 寄存器中。需要注意的是,在DATA 传输的过程中,高位在前,低位在后。
IDLE:空闲状态,此时MDIO 为无源驱动,处于高阻状态,但一般用上拉电阻使其上拉至高电平。

MDIO读时序

MDIO 接口读时序图如下图所示:

         上图是以PHY 地址为0x01,从寄存器地址0x00 读出数据为例。

        需要注意的是,在读时序整个过程中,MDC 时钟由MAC侧发出。

        整个读时序可以分为三个部分

1.  MDIO上MAC发出,PHY读入

        MAC控制发出前导码(32位1)+帧开始(01)+操作码(10)+PHY地址+寄存器地址。

此时PHY 在MDC的上升沿采集MDIO数据,为了保证数据的稳定性,MAC在MDC的下降沿更新MDIO数据。(上图中的竖线对应的即是采集时间)

2. Turn around   MDIO上PHY发出,MAC读入

        在Turn around 部分时,MDIO由MAC控制改为PHY 控制,此时MAC 在MDC的上升沿采集MDIO数据,为了保证数据的稳定性,PHY在MDC的下降沿更新MDIO数据。(刚好反过来)。在第一个TA 位,MDIO 引脚为高阻状态,第二个TA 位为低电平,表示PHY 芯片成功响应,并且接下来会输出16 位寄存器数据;而如果第二个TA 位处于高电平,则PHY 芯片响应失败,有可能PHY 地址不正确或者其它时序的错误。

3. PHY发送从指定寄存器读出的数据  MDIO上PHY发出,MAC读入

        PHY输出16 位寄存器数据 。

       在读操作结束后,MAC 将MDIO 引脚输出高阻,此时MDIO 引脚的外部上拉电阻会将MDIO 引脚拉高,此时MDIO 接口处于空闲状态。

MDIO写时序

         写时序相对简单一些,MDIO 接口写时序图如下图所示:

        上图是以PHY 地址为0x01,向寄存器地址0x00 写入0x1340 为例。

        在整个写操作过程中,MDC 时钟和MDIO 引脚一直由MAC 端驱动,按照MDIO 接口写通信协议开始传输数据。需要注意的是,PHY 在MDC 时钟的上升沿采集数据,为保证数据的稳定传输,MAC 在MDC 的下降沿将数据更新至MDIO 引脚。在写操作结束后,MAC 将MDIO 引脚输出高阻,此时MDIO 引脚的外部上拉电阻会将MDIO 引脚拉高,此时MDIO 接口处于空闲状态。      

注:文章参考正点原子FPGA教程,本人正在学习FPGA相关知识,在此记录一下~~  

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值