【科普贴】MDIO接口详解

这篇具有很好参考价值的文章主要介绍了【科普贴】MDIO接口详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 MDIO接口介绍

MDIO是Management Data Input/Output的缩写。MDIO接口包含在IEEE802.3协议中,是专用于MAC与PHY管理的串行总线接口。主要用于配置PHY芯片状态、读取寄存器、读取PHY地址、获取LINK状态等操作。与网口MII、RMII(TX_CLK、RX_CLK)等数据通讯无关。MDIO接口最多可以挂载32个PHY设备。

二、MDIO接口信号定义

MDIO接口是实时、半双工、串行的数据接口。MDIO接口由MDIO(Management Data Input/Output)线和MDC(Management Data Clock)线组成。

1、 MDC信号特点

单向传输:由MAC芯片驱动给PHY芯片,在MDC上升沿时对MDIO进行数据采样
信号要求:MDC可以是非周期性信号。协议对MDC的高低电平的最大宽度并没有限制,仅限制了MDC的最小高低电平宽度不能小于160ns,最小周期不能小于400ns。这意味着MDC最高频率不能超过2.5MHz(协议要求)
【科普贴】MDIO接口详解

PS:当前很多PHY芯片为追求更高通讯速率,提高了MDC频率。如IP101实际要求的MDC最小周期为300ns,最高频率达到3.3MHz。

2、 MDIO信号特点

双向传输:MDIO为双向信号,MAC和PHY均可以接管。用来在MAC和PHY芯片之间的传递控制和状态信息。写寄存器是MAC驱动,读寄存器时PHY驱动。
数据传输:先传高位(MSB),后传低位(LSB)。
输出采用三态电路设计:MDIO需要接1.5K~10K的上拉电阻。
MAC芯片内部下拉MDIO:通过MDIO线上是否有上拉电阻,来检测MDIO接口是否连接到PHY芯片上。

3、 MDIO 接口时序

以MDC上升沿为基准。当MDIO由MAC(STA)输出时,需要满足建立时间、保持时间均大于10ns。当MDIO由PHY输出时,需要满足输出延迟不超过300ns。
【科普贴】MDIO接口详解

如下是RTL的PHY芯片的手册关于时序的要求,可做参考。
【科普贴】MDIO接口详解

三、MDIO接口通讯帧定义

MDIO接口用于MAC与PHY之间进行通讯,根据IEEE802.3协议中将MDIO分为两种帧格式分别是Clause22和Clause45。其中 Clause22帧格式,主要应用于千兆/百兆的以太PHY,Clause45定义帧格式,主要用于千兆以上的以太PHY。

1、帧格式Clause22

【科普贴】MDIO接口详解

IDLE:空闲域。无MDIO帧发送时,MDIO接口输出高阻(外部有上拉电阻,总线上看到的是高电平)。
PRE:Preamble,前导。每帧发送前,MAC通过MDIO连续发送32个MDC周期的高电平,同时通过MDC输出32个时钟周期。前导的作用是为PHY建立同步提供时间。如果STA能够确定PHY可以接收管理帧,可以压缩前导的发送。
ST:2bit,Start of Frame。帧起始符,2’b01代表帧起始。
OP:2bit,操作码。2’b10代表读,2’b01代表写。
PHYAD:5bit,PHY地址。因此1个MDIO最多管理32个PHY。MDIO在访问PHY之前,需要提前知晓各个PHY的地址。所有PHY均需要对地址0进行响应。
REGAD:5bit,寄存器地址。总共32个寄存器地址,协议对前16个寄存器地址进行了详细的定义。其中地址0为控制寄存器,地址1为状态寄存器,其他14个地址为扩展寄存器。
TA:2bit,Turnaround。TA是地址传输和数据传输转换时的空闲时间。因为读操作的时候,地址传输和数据传输控制方不同,设置2bit TA的目的就是为了防止MDIO总线上产生竞争。
读情形,TA第1bit,PHY和MAC均释放总线控制输出高阻。TA第2bit,总线交由PHY控制,输出0,即读操作时TA为2‘bZ0(由于总线有上拉电阻存在,从总线上看到的依然是2’b10)。写情形,TA由MAC输出2‘b10。
DATA:16bit,数据域。写操作的时候,MAC用来发送写数据。读操作的时候,PHY用来发送读数据。

2、帧格式Clause45

【科普贴】MDIO接口详解

MDIO Clause45在Clause22基础上做了一些扩展,目的是为了访问更多的寄存器。相对于Clause22帧格式而言,Clause45做了如下修改:
1)ST由01修改为00
2)OP进行了重新定义。00:地址帧 01:写 11:读 10:增量读(Post-read-increment-address)
3)PHYAD域修改名称为PRTAD,端口地址但仍代表PHY地址
4)REGAD修改为DEVAD,Clause45将PHY内部子模块的地址进行细分,这些子模块用DEVAD寻址。子模块内部的寄存器则使用地址帧进行寻址。

四、MDIO逻辑分析仪测试实例

使用逻辑分析仪实际分析MAC与SOC之前的通讯,对接口协议加深理解。
如下图是MAC与SOC之前MDIO的通讯波形(Clause22)。
【科普贴】MDIO接口详解

1)START 01 确定使用Clause 22帧格式
2)OP 10 进行读的操作
3)PHY地址0X03
4)读寄存器0X01的值
5)TA 10 进行读操作
6)PHY发送0X786D值文章来源地址https://www.toymoban.com/news/detail-411914.html

到了这里,关于【科普贴】MDIO接口详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • systemverilog中的参数传递——ref、input、output

    sv中的静态数组、动态数组、队列都是用一块内存存放,而他们的名字作为该内存的地址,这点和c一致,但sv中没有指针的概念。 传递这种大片内存的值一般只有两种规则: 1.地址传递,函数内部修改可以改变函数调用的值。 2.值传递,将整片空间复制一份,函数内部修改不

    2024年02月15日
    浏览(45)
  • linux 服务器出现 Input/output error 处理

    今天突然出现 ls、ss 、 lsof 等命令报错 -bash: /bin/ss: Input/output error 其中有一个服务器上出现提示 *** System restart required *** Last login: Thu Sep 15 12:02:09 2022 from 192.168.0.135 .ssh/rc: 12: .ssh/rc: cannot create /var/log/zabbix-agent/ssh.log: Read-only file system reboot 之后,OK 另一个服务器上更严重 $ sudo

    2024年02月06日
    浏览(58)
  • verilog基础语法,wire,reg,input,output,inout

    概述: 输入输出是模块的端口,寄存器是数据存储介质,线用于把各个电路关联起来,形成一个数据流通通道,进行形成具有具体功能的电路模块。线是信息关联与传递的介质,也是可以称为信息流通的管道。在FPGA中的基本定义为wire,reg,input,output,inout。只有正确的认识到

    2024年04月24日
    浏览(43)
  • 千兆以太网(二)——MDIO接口协议

      MAC和PHY芯片有一个配置接口,即MDIO接口。可以配置PHY芯片的工作模式以及获取PHY芯片的状态信息。PHY芯片内部有一系列寄存器。用户通过配置寄存器来配置PHY芯片的工作模式。   FPGA通过MDIO接口对PHY芯片的内部寄存器进行配置。通常情况下芯片在默认情况下也可以工作

    2024年01月20日
    浏览(55)
  • 零基础学习CANoe Panel(8)—— 开关/显示控件(Input/Output Box )

    🍅 我是 蚂蚁小兵 ,专注于车载诊断领域,尤其擅长于对CANoe工具的使用 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】 🍅 零基础学习CANoe Panel设计目录汇总,点击跳转👉 🍅 Input/Output Box 控件也是一个常用控件,用来作为 单行 输入和输

    2024年02月12日
    浏览(62)
  • 以太网——MDIO(SMI)接口的FPGA实现

      在 MAC 与 PHY 之间,有一个配置接口,即 MDIO(也称 SMI,Serial Management Interface),可以配置 PHY 的工作模式、获取 PHY 芯片的工作状态等。本文以 PHY 芯片 B50610 为例,实现 MDIO 接口,以实现对传输速度、接口类型的自协商。   MDIO 包含 2 根信号线: MDC,由 MAC 侧提供给

    2024年02月16日
    浏览(49)
  • 【C语言】编写input()和output()函数输入,输出5个学生的数据记录

    以下代码定义了一个结构体 student ,具有姓名、学号和成绩三个成员,并先声明了一个存放5个学生信息的 struct student 类型的数组 stu 。my_ input() 函数通过循环提醒用户输入每个学生的信息,并将输入的数据存储到 struct student 类型的数组stu中去。my_ output() 函数用来输出这个数组

    2024年02月02日
    浏览(66)
  • Linux 磁盘坏块修复处理(错误:read error: Input/output error)

    当磁盘出现坏块时,你对所关联的文件进行读取时,一般会出现 read error: Input/output error 这样的错误。 反过来讲,当你看到 read error: Input/output error 这种错误时,很大可能就是磁盘出现了坏块问题。 解决步骤: 1、检测磁盘 我这个磁盘就出现了8个坏块,其中 /dev/sda 是你的磁

    2024年01月17日
    浏览(45)
  • FPGA 20个例程篇:12.千兆网口实现MDIO接口读写

           千兆网口是我们日常生活中经常见到的外设接口,在后面三个例程中,我们将会一起去动手实现千兆网口实现MDIO接口读写、ARP通信协议、ICMP和UDP通信协议等,这三个例程有一定的难度,通过实际分析、动手编码、模块划分、上板调试大家可以学到很多内容,涵盖了

    2024年02月01日
    浏览(90)
  • 简单科普Ethereum的Transaction Input Data

    这里跟大家分享一下十六进制数据调用合约背后的原理,希望对大家有所帮助。 大家知道每次和以太坊网络交互,不管是直接转账还是调用合约其实都是向以太坊网络发起了一笔Transaction,这个Transaction通过Metamask签名并发送至以太坊节点后,以太坊的矿工就会执行这笔trans

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包