0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的MDIO接口读写测试方案

CHANBAEK 来源:FPGA Zone 作者:FPGA Zone 2023-10-01 09:46 次阅读

本文开源一个FPGA项目:MDIO接口读写测试。以太网通信模块主要由 MAC (Media Access Control)控制器和物理层接口 PHY (Physical Layer)两部分构成。其中,MAC控制器和PHY可以整合到同一芯片内,也可以分开,即MAC控制器由FPGA实现,PHY由以太网芯片实现。PHY芯片内部寄存器数据读写是通过MDIO接口实现的,可以对PHY芯片工作模式进行配置并获取PHY芯片工作状态。

01PHY芯片

PHY芯片发送数据时,将MAC控制器发来的数据转化为串行数据流,按照物理层编码规则把数字信号转化为模拟信号发出去,接收数据反之。

另外,PHY芯片具有自协商功能。当连接好网线时,PHY芯片会自动检测对端设备,并通过协商确定连接速度、双工模式等。最终确定两个设备同时支持的最大数据传输速度和最佳双工模式。

PHY地址

本文以YT8511 PHY芯片为例。其PHY地址由LED_ACT和RXD[1:0]决定。PHY地址一共有5位,高2位固定为0,LED_ACT和RXD[1:0]表示低3位,可以通过硬件电路进行配置。即地址范围从00001到00111。

复位

PHY芯片支持软硬件复位,硬件复位是通过将ETH_RST_N引脚拉低10ms实现,软件复位是通过向地址0x00寄存器的bit[15]写入1进行复位,复位完成后,该位会自动清零。

寄存器

YT8511共有22位寄存器,常用的就只有控制寄存器、基本状态寄存器、和PHY芯片特定状态寄存器:

控制寄存器用于控制芯片复位、内部回环模式、选择网速、自协商等功能;

基本状态寄存器用于获取PHY芯片自协商状态、连接状态;

PHY芯片特定状态寄存器用于获取PHY芯片连接速度。

02MDIO接口

MAC和PHY芯片之间有一个配置接口,FPGA通过MDIO接口对PHY芯片内部寄存器进行配置,一般来讲PHY芯片在默认寄存器配置下就可以正常工作。

图片

MDIO接口也被成为SMI接口,即串行管理接口。具体包括时钟(ETH_MDC)和数据输入输出(ETH_MDIO)信号接口。其中,时钟信号频率应低于12.5Mhz。

通信协议

图片

MDIO接口通信协议如上图所示,其中:

Preamble :32位前导码,用于同步PHY芯片;

ST :2位帧开始信号;

OP :2位操作码,读10,写01;

PHYAD :5位PHY地址,用于确定与那个PHY芯片进行通信;

REGAD :5位寄存器地址;

TA (Turnaround):2位转向。在读命令中,MDIO在此时由MAC驱动改为PHY驱动,在第1位,MDIO引脚为高阻状态,第2位,PHY将MDIO引脚拉低,准备发送数据;在写命令中,不需要MDIO方向发生变化,MAC固定输出10,随后开始写入数据;

DATA :16位数据;

IDLE :空闲状态,此时MDIO为无源驱动,处于高阻状态,但一般用上拉电阻使其上拉至高电平。

读时序

图片

MDIO接口读时序如上图所示,以读取0x00地址下寄存器数据为例。整个读操作过程的MDC时钟由MAC驱动,同时MAC驱动MDIO引脚输出前导码+帧开始+操作码+PHY地址+寄存器地址,随后MDIO引脚切换至PHY驱动。在第一个TA位,MDIO引脚为高阻状态,第二个TA位为低电平,表示PHY芯片成功响应,并且接下来会输出16位寄存器数据;而如果第二个TA位处于高电平,则PHY芯片响应失败,有可能PHY地址不正确或者其它时序的错误。

需要注意的是,PHY在MDC时钟的上升沿采集数据,为保证数据的稳定传输,MAC在MDC的下降沿更新MDIO引脚的数据。当MDIO引脚切换至PHY驱动时,MDIO数据在MDC时钟的下降沿更新,因此MAC在MDC时钟的上升沿采集数据。在读操作结束后,MAC将MDIO引脚输出高阻,此时MDIO引脚的外部上拉电阻会将MDIO引脚拉高,此时MDIO接口处于空闲状态。

写时序

图片

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

03实现功能

本文开源的MDIO读写模块实现的功能主要是:FPGA通过MDIO接口每隔一定时间循环读取PHY芯片各个寄存器的值,并通过MDIO接口对PHY芯片进行软复位。其中,mdio_dri实现了MDIO接口数据读写驱动,mdio_ctrl实现了MDIO读写控制功能。使用Vivado软件仿真结果如下图所示:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1621

    文章

    21517

    浏览量

    599327
  • 接口
    +关注

    关注

    33

    文章

    8279

    浏览量

    150054
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1083

    浏览量

    51184
  • PHY
    PHY
    +关注

    关注

    2

    文章

    297

    浏览量

    51574
  • MDIO
    +关注

    关注

    0

    文章

    12

    浏览量

    11187
收藏 人收藏

    评论

    相关推荐

    通过MDIO接口管理PHY芯片的验证设计方案

    无法破解。不同厂家之间无法移植,而且为了通用性考虑牺牲了效率,因此自己动手写一个以太网MAC是个不错的选择。 本博文讨论通过MDIO接口管理PHY芯片来验证其正确工作,为在此基础上设计MAC逻辑开个头。PHY芯片采用RTL8211EGVB,选用GMII
    的头像 发表于 12-29 14:17 7220次阅读
    通过<b class='flag-5'>MDIO</b><b class='flag-5'>接口</b>管理PHY芯片的验证设计<b class='flag-5'>方案</b>

    基于DWC_ether_qos的以太网驱动开发-MDIO驱动编写与测试

    本文转自公众号欢迎关注 基于DWC_ether_qos的以太网驱动开发-MDIO驱动编写与测试 一.前言 以太网驱动的编写与调试往往从MDIO接口开始,
    的头像 发表于 08-30 09:37 3334次阅读
    基于DWC_ether_qos的以太网驱动开发-<b class='flag-5'>MDIO</b>驱动编写与<b class='flag-5'>测试</b>

    请问C6748芯片中MDIO读写速率分别最大是多少?

    您好: 现在使用C6748芯片的MDIO模块进行数据的读写,MDC速率现在设置为50MHz;想请教下:现在MDIO读写速率分别最大是多少?在手册上没找到。谢谢!
    发表于 07-25 07:00

    请教关于c6748的MDIO接口读写phy的问题

    你好: 使用C6748的MDIO接口读写Lan8700,RMII模式,时钟信号为50MHz。参照C6748_Startware_1_20_04_01/examples/evm6748
    发表于 07-25 07:38

    ADSP 21489使用ami接口fpga连接如何编写测试程序进行读写验证

    购买了adsp-21489处理器 。现在有两个问题。一:使用ami接口fpga连接,如何编写测试程序进行读写验证;二:如何配置dai下的pdap
    发表于 01-08 09:55

    基于ARM和FPGA的环形缓冲区接口设计方案

    摘要:目前,基于ARM和FPGA架构的嵌入式系统在通信设备中得到广泛的应用。文章提出了一种基于ARM和FPGA的环形缓冲区接口设计方案,从而实现了ARM和
    发表于 05-30 05:00

    【正点原子FPGA连载】 第二十四章MDIO接口读写测试实验-领航者ZYNQ之FPGA开发指南

    原子公众号,获取最新资料第二十四章MDIO接口读写测试实验在以太网通信中,设备之间的物理层链路均由PHY芯片(物理层芯片,本文指B50610)建立。PHY芯片有一个配置
    发表于 09-27 18:05

    【正点原子FPGA连载】 第二十四章MDIO接口读写测试实验-领航者ZYNQ之FPGA开发指南

    原子公众号,获取最新资料第二十四章MDIO接口读写测试实验在以太网通信中,设备之间的物理层链路均由PHY芯片(物理层芯片,本文指B50610)建立。PHY芯片有一个配置
    发表于 09-29 18:10

    基于FPGAMDIO接口逻辑设计

    本文介绍了一种基于FPGA 的用自定义串口命令的方式实现MDIO 接口逻辑设计的方法,并对系统结构进行了模块化分解以适应自顶向下的设计方法。所有功能的实现全部采用VHDL 进行描
    发表于 12-26 16:48 103次下载

    应对多样化数字接口测试挑战的解决方案——基于可编程FPGA测试

    。专用测试仪器是非常昂贵的,通用数字I/O接口测试仪器仅试用部分方案并且需要大量编程/调试工作,最终也会增加成本。然而,基于可编程FPGA
    发表于 10-12 17:20 10次下载

    应对多样化数字接口测试挑战的解决方案——基于可编程FPGA测试仪器

    应对多样化数字接口测试挑战的解决方案——基于可编程FPGA测试仪器
    发表于 10-16 13:57 3次下载
    应对多样化数字<b class='flag-5'>接口</b><b class='flag-5'>测试</b>挑战的解决<b class='flag-5'>方案</b>——基于可编程<b class='flag-5'>FPGA</b>的<b class='flag-5'>测试</b>仪器

    多样化数字接口测试挑战的解决方案——基于可编程FPGA测试仪器

    多样化数字接口测试挑战的解决方案——基于可编程FPGA测试仪器
    发表于 10-19 08:45 11次下载
    多样化数字<b class='flag-5'>接口</b><b class='flag-5'>测试</b>挑战的解决<b class='flag-5'>方案</b>——基于可编程<b class='flag-5'>FPGA</b>的<b class='flag-5'>测试</b>仪器

    MDIO接口的基础知识详解

    MDIO接口,是Management Data Input/Output的缩写。MDIO接口包含在IEEE802.3协议中,是专用于以太PHY的管理的串行总线
    发表于 09-29 14:55 4.7w次阅读
    <b class='flag-5'>MDIO</b><b class='flag-5'>接口</b>的基础知识详解

    基于AXI总线的DDR3读写测试

    本文开源一个FPGA项目:基于AXI总线的DDR3读写。之前的一篇文章介绍了DDR3简单用户接口读写方式:《DDR3读写
    的头像 发表于 09-01 16:20 3877次阅读
    基于AXI总线的DDR3<b class='flag-5'>读写</b><b class='flag-5'>测试</b>

    基于FPGA的DDR3读写测试

    本文介绍一个FPGA开源项目:DDR3读写。该工程基于MIG控制器IP核对FPGA DDR3实现读写操作。
    的头像 发表于 09-01 16:23 1381次阅读
    基于<b class='flag-5'>FPGA</b>的DDR3<b class='flag-5'>读写</b><b class='flag-5'>测试</b>