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

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

3天内不再提示

基于FPGA的UDP RGMII千兆以太网设计

CHANBAEK 来源:FPGA Zone 作者:stark 2023-09-06 17:04 次阅读

01概述

本文总结一下前段时间完成的FPGA以太网通信功能。该方案参考了MILIANKE的设计,但在其基础上简化了某些不必要的步骤以及解决了一些由于忽视细节导致的棘手的问题。

02RGMII接口

本设计采用RGMII接口的88E1512芯片。RGMII接口的主要优势在于,它可以同时适用于1000M、100M、10M三种速率,并且接口占用引脚数较少。

RGMII 使用 4bit 数据接口采用上下沿 DDR(Double Data Rate)的方式在一个时钟周期内传输 8bit 数据信号,即上升沿发送或者接收数据的低4位[3:0],下降沿发送或者接收数据的高4位[7:4]。同理,使用 1bit 控制接口采用 DDR 的方式在一个时钟周期内传输 2bit 控制信号。

  • 发送端:tx_clk,tx_d[3:0],tx_ctrl;
  • 接收端:rx_clk,rx_d[3:0],rx_ctrl;

图片

图1 RGMII接口

  • 三种速率模式

MII接口适用于1000M、100M、10M三种传输速率。

当工作于1000M 时,时钟信号 TXC 和 RXC 均为 125MHz,4bit数据信号上下沿值均有效,控制信号上下沿值也均有效。

当工作于 100M时,时钟信号 TXC 和 RXC均为25MHz,4bit数据信号只有上升沿值[3:0]有效,相当于此时数据信号切换为单沿SDR(Single Data Rata)4位输模式。控制信号仍为上下沿有效。

当工作于10M时,时钟信号TXC和RXC均为2.5MHz,数据信号和控制信号的使用和100M速率时完全相同。

03UDP通信方案

该以太网通信方案如图2所示,最上层为用户逻辑模块,用于处理和使用解析后的以太网通信数据;uiudp_stack模块采用MILIANKE提供的协议栈网表文件;FPGA 以太网IP核采用Tri Mode Ethernet Mac;PHY芯片采用88E1512;最后RJ-45接口通过网线与上位机连接。

图片

图2 FPGA UDP以太网通信方案

  • IP核配置

使用千兆通讯,因此将速率设为 1Gbps;

图片

接口参数配置如下:

图片

有关Shared Logic的选择可参考我之前写的文章。

图片

04以太网数据流回环传输方案

如图3所示,以太网数据环路传输方案,是在电脑上通过网络调试助手向FPGA发送任意小于1472字节长度的UDP数据包。由于Tri Mode Ethernet Mac IP核接口数据流为8bits/125M,而uiudp_stack为64bits/15.625M,因此需要在中间插入FIFO缓存模块,进行数据位宽转换以及跨时钟域处理。

图片

图3 以太网数据回环传输方案

05调试遇到问题

修改电脑IP地址、子网掩码,上位机UDP端口号、IP地址,然后测试了软件功能,发现UDP丢包率较高,为30%左右,而且FPGA端接收回路数据没问题,只是发送回路有问题。因此对软件中所有模块进行测试,修改所有可能影响丢包率的代码部分,都没能解决问题。

“排除一切不可能的原因,剩下的即使再不可能,那也是真相”,当软件没有问题,那只能是硬件部分有问题了。于是我考虑这很可能是因为FPGA引脚配置不对。

一开始tx_d引脚I/O电平标准配置为LVCMOS,考虑到RGMII接口为双沿动作,数据传输速率较高,可能LVCMOS无法满足,因此参考了DDR3的设计,改用SSTL电平。编译之后重新做回环测试,UDP丢包率<1/1000,问题解决。

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

    关注

    1602

    文章

    21322

    浏览量

    593213
  • 接口
    +关注

    关注

    33

    文章

    7640

    浏览量

    148496
  • 千兆以太网
    +关注

    关注

    0

    文章

    64

    浏览量

    13809
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33620
  • RGMII
    +关注

    关注

    0

    文章

    22

    浏览量

    12040
收藏 人收藏

    评论

    相关推荐

    【紫光同创国产FPGA教程】【第二十三章】千兆以太网传输实验

    本实验将实现FPGA芯片和PC之间进行千兆以太网数据通信, 通信协议采用Ethernet UDP通信协议。 FPGA通过
    的头像 发表于 04-07 10:38 1.4w次阅读
    【紫光同创国产<b class='flag-5'>FPGA</b>教程】【第二十三章】<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>传输实验

    基于AlteraFPGA千兆以太网实现方案

    `基于AlteraFPGA千兆以太网实现方案`
    发表于 06-10 11:59

    百兆以太网千兆,要怎么修改程序?

    各位前辈你们好,我是刚开始学习fpga的新人。最近在altera fpga的一个板子上调试口,任务是用千兆以太网实现
    发表于 10-03 09:12

    PC与FPGA以太网通信

    我现在在做FPGA和PC之间的以太网通信,PC和FPGA用交叉线直连,板子上的以太网phy芯片是88e1111,以太网
    发表于 07-05 21:37

    AC6102 开发板千兆以太网UDP传输实验

    本帖最后由 芯航线跑堂 于 2016-12-19 00:20 编辑 AC6102 开发板千兆以太网UDP传输实验 在芯航线AC6102开发板上,设计了一路GMII接口的千兆
    发表于 12-15 15:01

    关于千兆以太网UDP传输漏包的问题

    FPGA千兆以太网发送数据,数据来自AD采集(有60MHz),经FIFO缓存。采用的UDP协议,一帧一帧传输数据,最后通信成功,但是漏包严重,后来发现是因为:AD不停地采集数据,但每一
    发表于 05-15 09:21

    简谈基于FPGA千兆以太网

    ,只是说以太网的速率为千兆,也就是1G。除了千兆,还有百兆,万兆,当然这些都是指的
    发表于 02-03 15:11

    AC6102开发板千兆以太网UDP传输实验分享!

    AC6102 开发板千兆以太网UDP传输实验在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该
    发表于 10-18 02:15

    【工程源码】基于FPGA千兆以太网模块UDP设计实例程序

    192.168.0.2,端口号为500012、点击发送,程序能正常发送数据出去,开发板能够收到数据并将数据原封不动返回给电脑。13、使用过程可能需要关闭防火墙(注意,是防火墙,不是安全软件)二、千兆以太网UDP摄像头图像传输程序
    发表于 02-10 18:14

    分享一款不错的基于Altera FPGA千兆以太网实现方案

    千兆以太网技术是什么基于Altera FPGA千兆以太网实现方案
    发表于 05-08 07:32

    简谈基于FPGA千兆以太网设计

    大侠带来简谈基于FPGA千兆以太网设计,话不多说,上货。今天我们来简单的聊一聊以太网以太网FPGA
    发表于 06-01 18:39

    FPGA如何为以太网千兆以太网解决低功耗问题

    探索新的中档 FPGA 如何为以太网千兆以太网 (GbE) 链路执行桥接功能,同时解决低功耗问题。
    的头像 发表于 05-07 16:54 3419次阅读
    <b class='flag-5'>FPGA</b>如何为<b class='flag-5'>以太网</b>和<b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>解决低功耗问题

    基于FPGAUDP千兆以太网光通信

    本文介绍一个FPGA开源项目:UDP千兆以太网光通信。利用SFP接口,可以通过使用SFP转RJ45模块或者直接使用光纤进行以太网通信。
    的头像 发表于 08-31 11:26 2317次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b><b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>光通信

    基于FPGAUDP万兆光通信测试

    本文开源一个FPGA项目:UDP万兆光通信。该项目实现了万兆光纤以太网数据回环传输功能。Vivado工程代码结构和之前开源的《UDP RGMII
    的头像 发表于 09-01 16:25 865次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b>万兆光通信测试

    基于FPGAUDP RGMII千兆以太网通信方案

    本文介绍一个FPGA开源项目:UDP RGMII千兆以太网通信。该项目在我之前的工作中主要是用于FPGA
    的头像 发表于 09-04 16:49 848次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>UDP</b> <b class='flag-5'>RGMII</b><b class='flag-5'>千兆</b><b class='flag-5'>以太网</b>通信方案