千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP回环)

文章目录

  • 前言
  • 心得体会
  • 一、UDP GMII 回环测试工程介绍
  • 二、UDP GMII 回环测试工程顶层设计
  • 三、UDP GMII 回环测试工程仿真设计
  • 四、UDP GMII 回环测试工程仿真波形
  • 五、UDP GMII 回环测试工程上板演示


前言

经过前面章节的理论讲解和模块设计,相信大家已经对以太网传输以及如何实现以太网通信有了一定的了解。为了验证前面章节的内容,我们将进行以太网回环案例。通过判断回环数据是否一致,对前面章节内容和设计的模块进行验证。


提示:任何文章不要过度深思!万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」 ;不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人 。怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

心得体会

(1)UDP发送数据,无论是MAC地址,还是IP地址,或者UDP端口,其源端口都为开发板;
(2)在发送数据时不关心源端口(开发板)的MAC地址,还是IP地址,或者UDP端口,只关心目的地址,验证时一定要弄清目的地址的MAC和P地址及UDP端口;

(3)UDP接收数据,无论是MAC地址,还是IP地址,或者UDP端口,其源端口都为计算机;
(4)在接收数据时不关心源端口(计算机)的MAC地址,还是IP地址,或者UDP端口,只关心目的地址,验证时一定要弄清目的地址(开发板)的MAC和IP地址,这里与UDP发送中目的MAC、IP(计算机)是相反的,此处需要注意;

(5)本实验针对千兆网,注意查看电脑是否支持。
————————————————

一、UDP GMII 回环测试工程介绍

为了完成基本的以太网回环测试,我们提供了一个基于 FPGA 的以太网回环测试程序。该程序使用 UDP 协议,接收 PC 发送的 UDP 数据包,提取出其中的数据部分并使用 UDP 协议发回给PC。

例程调用了前面小节中我们设计的 UDP 发送模块以及 UDP 接收模块,UDP 接收模块接收到上位机发来的 UDP 数据包,通过解析目标 MAC_address 来确定是否是发给 FPGA 的数据包。如果是的话,FPGA 会把数据包中的数据以及MAC地址, IP 地址,UDP端口,数据长度等信息输出,再通过发送程序将数据包发送回指定上位机。

千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP接收)
千兆以太网传输层 UDP 协议原理与 FPGA 实现(UDP发送)

二、UDP GMII 回环测试工程顶层设计

`timescale 1ns / 1ps
//
// Create Date: 2023/09/20 15:54:40
// Module Name: UDP_RX_TX_ip
// Name: 小王在努力... 
// Revision: Vivado 2018.3
// Revision 0.01 - File Created//module UDP_RX_TX_ip(input CLK125M,input reset_n,input GMII_ER,input GMII_DV,input [7:0]GMII_TXD,output      GMII_TX_ER,output      GMII_TX_EN,output      GMII_TX_CLK,output [7:0]GMII_TX_TXD,output      eth_reset_n,output reg [1:0]led);wire tx_done;wire [15:0]udp_data_length;wire [15:0]udp_src;wire [15:0]udp_dest;wire [31:0]src_ip;wire <

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己一天在家没事就爱折腾

来吃馍馍了&#xff0c;看我自己动手做的花卷&#xff0c;味道一定美极了&#xff0c;哈哈&#xff0c;有没有想吃的呀&#xff01;快来我家&#xff0c;我和你一起分享。

三维地下管线建模软件MagicPipe3D V3.1.3发布

经纬管网建模系统MagicPipe3D V3.1.3持续更新&#xff0c;内容如下&#xff1a; &#xff08;1&#xff09;新增管线流向配置&#xff0c;建模生成带流向箭头管道模型&#xff1b; &#xff08;2&#xff09;新增建模完成后可以直接载入3DTiles或obj模型功能&#xff1b; &a…

5.(vue3.x+vite)v-if与v-show区别

前端技术社区总目录(订阅之前请先查看该博客) 1:效果预览 2:v-if与v-show区别 1、v-if会增删DOM元素。 2、v-show比v-if性能更高,因为v-show只能动态的改变样式(display),不需要增删DOM元素。 3、v-if切换时候回实时的销毁和重建内部的事件、钩子函数等,v-show只会…

基于大规模分布式系统的云原生运维实践

在云计算、大数据、人工智能等新兴技术的推动下,众多行业都在经历一场轰轰烈烈的数字化转型大潮。随着容器技术和编排系统的发展、基础设施不断云化、分布式微服务架构不断演进和敏捷、DevOps等开发理念的带动&#xff0c;应用云化已经是不可逆转的趋势&#xff0c;云原生也成为…

Docker 网络访问原理解密

How Container Networking Works: Practical Explanation 这篇文章讲得非常棒&#xff0c;把docker network讲得非常清晰。 分为三个部分&#xff1a; 1&#xff09;docker 内部容器互联。 2&#xff09;docker 容器 访问 外部root 网络空间。 3&#xff09;外部网络空间…

k8s集群安装v1.20.9后-2-改造部署自己的服务k8sApp,增加istio

1.环境准备: K8s集群,已经实现了k8s-app小例子,可以正常访问。(已包含docker) 在此基础上对项目进行改进,实现istio流量切换。 2.安装部署istio 2.1 安装go 官网下载go和istio的安装包,上传到k8s集群虚拟机上(三个机器都安装) [root@node1 ~]# cd /root/Public/i…

Cisdem Video Player for mac(高清视频播放器) v5.6.0中文版

Cisdem Video Player mac是一款功能强大的视频播放器&#xff0c;适用于 macOS 平台。它可用于播放不同格式的视频文件&#xff0c;并具有一些实用的特性和功能。 Cisdem Video Player mac 中文版软件特点 多格式支持&#xff1a;Cisdem Video Player 支持几乎所有常见的视频格…

Git: tag管理

查看 git tag//会查看到仓库内所有的tag,与分支无关添加 附注标签会包含完整的标签信息&#xff0c;可以进行校验&#xff0c;轻量标签是某个特定提交的引用&#xff0c;包含信息较少。一般正式发版时要使用附注标签 git tag -a V1.0.0 -m "My Version V1.0.0"//在…

Kubernetes新增节点

1. K8S节点Hosts及防火墙设置 node3节点进行如下配置&#xff1a; #添加hosts解析&#xff1b; cat >/etc/hosts<<EOF 127.0.0.1 localhost localhost.localdomain 192.168.1.146 master1 192.168.1.147 node3 EOF #临时关闭selinux和防火墙&#xff1b; sed -i /SE…

破解mariadb密码

破解mariadb密码 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.先停止mariadb systemctl stop mariadb.service 2.进单用户模式 mysqld_safe --skip-grant-tables & 3.登录mariadb mysql -uroot #&#xff08;不用密码也能登录&#xff09; 4.切换到mysql …

基于FPGA的视频接口之千兆网口(二链路)

简介 相信网络上对于FPGA驱动网口的开发板、博客、论坛数不胜数,为何博主需要重新手敲一遍呢,而不是做一个文抄君呢!因为目前博主感觉网络上描述的多为应用层上的开发,非从底层开始说明,本博主的思虑还是按照老规矩,按照硬件、底层、应用等关系,使用三~四篇文章,来详细…

SQLite:TIMESTAMP类型使用

SQLite&#xff1a;CURRENT_TIMESTAMP是以GMT时区为准&#xff0c;而不是本地机器的时区 在本文中&#xff0c;我们将介绍SQLite数据库中的一个特性&#xff1a;CURRENT_TIMESTAMP。在SQLite中&#xff0c;我们可以使用CURRENT_TIMESTAMP函数来获取当前时间戳。然而&#xff0…

php函数

1. strstr() 返回a在b中的第一个位置 2.substr() 截取字符串 3.PHP字符串函数parse_str(将字符串解析成多个变量)-CSDN博客 4.explode() 字符串分割为数组 5.trim&#xff08;&#xff09; 1.去除字符串两边的 空白字符 2.去除指定字符 6.extract()函数从数组里…

解决 Centos 安装 Python 3.10 的报错: Could not import runpy module

操作环境&#xff1a;CentOS 7、Gcc 4.8.5、Python 3.10.0 系统上已经有 2.x&#xff0c;3.6 版本的 Python 了&#xff0c;但是还是想装一个 3.10 的。因为刚写的脚本文件是较高版本的&#xff0c;在 3.6 上无法正常运行&#xff0c;Python 语法不是很了解&#xff0c;只能从…

分享一份关于 Rust 编程的学习指南

Rust是一种现代的系统级编程语言&#xff0c;以其注重内存安全、性能和并发性而闻名。学习Rust可以是一段有回报的旅程&#xff0c;为您打开构建强大高效应用的机会。无论您是经验丰富的开发者还是完全的初学者&#xff0c;本指南将通过精选的资源和技巧帮助您踏上Rust编程之旅…

华为李鹏:加速5G商业正循环,拥抱更繁荣的5.5G(5G-A)

2023年10月10日&#xff0c;在华为主办的第十四届全球移动宽带论坛上&#xff0c;华为高级副总裁、运营商BG总裁李鹏面向来自全球的运营商和产业伙伴&#xff0c;提出抓住网络需求和趋势的力量——“面向后天的业务&#xff0c;积极规划明天的网络&#xff0c;加速5G商业正循环…

【Qt之QTableWidget和QTreeWidget】树悬停、选择样式及表格表头和首行间隔线

QTableWidget设置表头与首行间隔线 win10 实例化QTableWidget后&#xff0c;表格表头和首行中间无间隔线&#xff0c;以下是通过样式表进行设置&#xff1a; // 设置横向表格头的间隔线&#xff0c;可设置四个方向的间隔线,不需要间隔线的可以设置为0px// border-left:0px sol…

redis数据类型——stream

Redis Stream&#xff08;Redis流&#xff09;是Redis数据库的一种数据结构&#xff0c;用于实时数据流的处理。它是在Redis 5.0版本中引入的&#xff0c;用于解决消息队列和日志处理等实时数据流场景的需求。Redis Stream提供了一种非常灵活和高效的方式来处理时间序列数据&am…

https和http的区别及安全性

首先进行提问&#xff1a;https是加密传输&#xff0c;那么它安全吗&#xff1f; 简单的回顾&#xff1a; HTTPS和HTTP都是网络协议&#xff0c;也就是规定数据如何在互联网中传输的规则。它们的主要区别在于安全性。 HTTP&#xff08;Hypertext Transfer Protocol&#xff…

使用pendulum包对时间数据进行加、减操作 add()和subtract()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 使用pendulum包 对时间数据进行加、减操作 add()和subtract() 选择题 请问dt.add(years5)的结果是&#xff1a; import pendulum as pdl print("【执行】dtpdl.datetime(2023,10,1)&qu…