基于FPGA的百兆以太网通信(一)——MDIO配置PHY芯片

这篇具有很好参考价值的文章主要介绍了基于FPGA的百兆以太网通信(一)——MDIO配置PHY芯片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 一、以太网简介

  之前提了个引子,接下来我会分享一下基于FPGA的百兆以太网通信学习过程。第一部分是对于以太网PHY芯片的配置和状态读取。

  一般来说,FPGA以太网通信是需要外接的PHY芯片的,目前的很多FPGA出厂的底板上已经焊好了PHY芯片,所以这一点是比较方便的。PHY芯片的内部有着很复杂的逻辑和构造,我不懂,这里也不说了,感兴趣的兄弟自己查。

  以太网通信需要网线,FPGA以太网通信实际上是FPGA和PHY芯片通信,符合一定的时序和协议,PHY芯片将数据传出和上位机通信。下面给出RTL8201FPHY芯片的管脚图

gpio实现mdio协议与phy芯片通信,fpga开发,学习

 这里的引脚很多,我们目前只关注两个,MDIO和MDC,这两个是配置引脚,用于配置PHY芯片的寄存器,类似于前面说的摄像头,同时也可以读取其中寄存器的数据。

  将FPGA的网口和上位机(如PC)连接后,FPGA的PHY芯片会和上位机进行协商最后形成一个通信速率。假如PHY只支持最高100Mbps通信,而另一端是千兆网口,那么协商速率就是100Mbps。总之会以比较慢的那一段作为标准。当然也可以通过修改寄存器的数据来调整通信速率。比如协商结果是100Mbps,可以改为10Mbps。常用的速率就是100和1000Mbps。

二、实验目标

  PHY芯片内部有两个比较重要的数值,第一个是协商的结果,第二个是连接的状态,下面就展开实验读取PHY芯片内部这两个数据。

三、接口分析

  上面提到的MDC和MDIO,MDC是配置的时钟,可以看做IIC里的SCL,MDIO是双向端口,用于传输数据。结构上MDIO和IIC很像。下面是时序图gpio实现mdio协议与phy芯片通信,fpga开发,学习

   时序上看和SPI很像,MDIO在每一个MDC的上升沿传输数据,下降沿发生数据转换。上图中可以看出协议的格式,如下图所示

gpio实现mdio协议与phy芯片通信,fpga开发,学习

   先发32位的前导码preamble,全为1。接着是开始字段,2'b01。操作码,两位,根据是要写还是要读区分。PHY地址(这里需要解释一下,这个好像只是在连接多个PHY芯片的时候才有,用于区分不同的PHY芯片,如果只有一个,默认5'b0,以上是我个人分析,我也不太懂,我查看的教程都说在原理图上可以看出来,但是也没具体说怎么看)。接着是寄存器地址,在手册上查看。TA转换字段,这个我不太懂,就按照手册上写的,如果是读的话就是2'bz0,写的话就是2'b10,最后是十六位数据,最后又回到初始状态。

  协商结果在第一个寄存器里面

gpio实现mdio协议与phy芯片通信,fpga开发,学习

 第13位的speed就是协商结果。

  连接状态在第二个寄存器里面

gpio实现mdio协议与phy芯片通信,fpga开发,学习

   第二位就是连接状态。

  最后一点就是MDIO跑不了太高的频率,这里我用的是50k的MDC。

四、代码文章来源地址https://www.toymoban.com/news/detail-846118.html

module mdio_ctrl(
            input               wire                    mdc             ,
            input               wire                    start           ,
            input               wire                    sys_rst_n       ,
            input               wire    [31:0]          preamble        ,
            input               wire    [1:0]           st              ,
            input               wire    [1:0]           op              ,
            input               wire    [4:0]           phy_add         ,
            input               wire    [4:0]           reg_add         ,
            input               wire    [1:0]           ta              ,
            output              reg                     speed           ,
            output              reg                     status          ,
            output              reg                     ready           ,
            output              wire                    mdio_en         ,
            inout               wire                    mdio            ,
            output              wire     [7:0]          satate          
);


    reg         [7:0]       curr_state          ;
   

到了这里,关于基于FPGA的百兆以太网通信(一)——MDIO配置PHY芯片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 千兆以太网(二)——MDIO接口协议

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

    2024年01月20日
    浏览(21)
  • FPGA - 以太网UDP通信(一)

    ​以太网是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。 ​ 以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一

    2024年04月18日
    浏览(22)
  • FPGA优质开源项目 – UDP万兆光纤以太网通信

    本文开源一个FPGA项目:UDP万兆光通信。该项目实现了万兆光纤以太网数据回环传输功能。Vivado工程代码结构和之前开源的《UDP RGMII千兆以太网》类似,只不过万兆以太网是调用了Xilinx的10G Ethernet Subsystem IP核实现。 下面围绕该IP核的使用、用户接口,以及数据传输方案展开介

    2024年02月10日
    浏览(15)
  • FPGA通过以太网与PC机通信的完整方案

    FPGA(可编程逻辑门阵列)是一种灵活且高度可定制的芯片,可以用于实现各种数字电路。在许多应用中,FPGA与PC机之间的通信是至关重要的。本文将提供一个完整的方案,介绍如何使用FPGA通过以太网与PC机进行通信,并附带相应的源代码。 硬件准备 首先,我们需要准备以下

    2024年04月14日
    浏览(16)
  • FPGA平台以太网学习:MAC与PHY间通信

    1、PHY(物理层):   MII/GMI/RMII/RGMII/SGMIII(介质独立接口子层),PLS/PCS(物理编码子层),PMA(物理介质连接子层),PMD(物理介质相关子层),AN(自动协商),MDI(媒介相关接口)。 2、PLS/PCS(物理编码子层):   (PLS)对 MAC 给的信息进行传递,只在IMb/s、10Mb/s 的应

    2024年02月04日
    浏览(16)
  • RK3588平台开发系列讲解(以太网篇)MDIO底层驱动

    平台 内核版本 安卓版本 RK3588 Linux 5.10 Android 12 沉淀、分享、成长,让自己和他人都能有所收获!😄 mdio bus是mdio管里phy寄存器的总线,此总线非设备驱动模型之总线。mdiobus在内核中用mii_bus结构体描述,mii_bus定义如下: 目录:linux/phy.h

    2024年02月08日
    浏览(31)
  • 基于FPGA的以太网相关文章导航

      首先需要了解以太网的一些接口协议标准,常见的MII、GMII、RGMII时序,便于后续开发。     【必读】从MII到RGMII,一文了解以太网PHY芯片不同传输接口信号时序!   介绍一款比较老的以太网PHY芯片88E1518,具有RGMII接口,分析该芯片的原理图和内部寄存器的配置方式

    2024年04月14日
    浏览(13)
  • 千兆/百兆车载以太网转换器 罗森伯格H-MTD 泰科MATEnet接口

    重庆汇迪能电子设备有限公司 www.hdn-vdo.com #车载以太网转换器 车载以太网转换器是将车载以太网转换为标准以太网的一种协议转换器。将方便的支持用户将两线的车载以太网转换为RJ45接口的网线接入到电脑。 为千兆和百兆可切换双速车载以太网转换器。采用车载以太网普遍

    2024年02月07日
    浏览(18)
  • 基于UDP协议的千兆以太网传输(FPGA)

    @[TOC]基于UDP协议的千兆以太网传输(FPGA) UDP协议是一种基于无连接协议,即发送端发送数据无需确认接收端是否存在;接收端收到数据后也无需给发送端反馈是否收到,所以UDP在数据发送过程中允许丢失一两包数据。用于对丢包不严格的场合,比如视频流,偶有一两帧的丢

    2024年02月12日
    浏览(36)
  • 基于FPGA的以太网传输图片通过HDMI显示(含源码)

      在此之前,已经讲解过HDMI、UDP、DDR3等模块的使用,前文在使用HDMI显示图片时,由于没有讲解DDR3,使用FPGA内部的RAM存储图像数据,因为FPGA片上RAM的资源有限,导致最终显示放大的图片失真严重。   本文通过DDR3存储整张图片的数据,然后通过HDMI在显示器上进行显示,

    2024年03月27日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包