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

news/2024/5/18 13:16:47 标签: 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.niftyadmin.cn/n/5079908.html

相关文章

Layui合计自定义列

需求&#xff1a;第四列通过计算&#xff1a;27除以220 正常的汇总&#xff0c;增加这个属性就行 特殊的列&#xff0c;需要特殊处理 获取合计行&#xff1a;$(".layui-table-total div.layui-table-cell"); 获取某列的值&#xff1a;$($(".layui-table-total …

电脑屏幕怎么录制?5 个最佳免费录屏软件

您是否想使用网络摄像头录制优酷视频、抖音直播或在线课程等项目&#xff0c;但完全不知道如何开始&#xff1f; 不用担心。有很多软件选项可以帮助您。虽然每一款都有不同的功能&#xff0c;但它们都能够录制网络摄像头并输出精美的高质量视频。 以下是我们精选的最佳作品。…

增强基于Cortex-M3的MCU以处理480 Mbps高速USB

通用串行总线&#xff08;USB&#xff09;完全取代了PC上的UART&#xff0c;PS2和IEEE-1284并行接口&#xff0c;现在已在嵌入式开发应用程序中得到广泛认可。嵌入式开发系统使用的大多数I / O设备&#xff08;键盘&#xff0c;扫描仪&#xff0c;鼠标&#xff09;都是基于USB的…

OpenCV实现答题卡自动打分!

目录 1&#xff0c;主要原理以及函数介绍 全部代码&#xff0c;以 2 &#xff0c; 实现过程 3&#xff0c;结果展示 1&#xff0c;主要原理以及函数介绍 ap argparse.ArgumentParser() 创建一个ArgumentParser对象&#xff0c;并将其赋值给变量ap。这个对象可以接受我们的脚…

死锁,死锁避免

死锁是指两个或多个进程或线程&#xff0c;彼此持有对方所需要的资源&#xff0c;导致彼此等待对方释放资源而无法继续执行的状态。在Java中&#xff0c;死锁通常是由于多线程并发执行时&#xff0c;线程之间互相等待获取对方持有的锁或资源而产生的。 为了避免死锁&#xff0…

安卓apk安装包应用APP报毒下载安装风险提示,多个可能性和多个可能性的排查解决方案

啊哈同学们&#xff0c;遥遥领先最近已经贯彻耳朵了吧&#xff01;但是很多同学们私聊我有一定概率都再说遥遥领先会出现包体报毒不能让应用下载&#xff0c;那作为加班写代码的我能忍&#xff1f;我先去科技了一下&#xff08;那就肯定是搜索&#xff09;原来是这样呀&#xf…

STM32使用HAL库驱动TA6932数码管驱动芯片

TA6932介绍 8段16位&#xff0c;支持共阴共阳LED数码管。 2、STM32CUBEMX配置引脚 推挽配置即可。 3、头文件 /******************************************************************************************** * TA6932&#xff1a;8段16位数码管驱动 *******************…

【Oralce】导出所有表名、表注释、创建时间、最后修改时间、主键

SELECTa.table_name AS 表名,b.comments AS 表备注,c.created AS 创建时间,c.last_ddl_time AS 最后修改时间,(SELECTwmsys.wm_concat ( cu.COLUMN_NAME ) FROMuser_cons_columns cu,user_constraints au WHEREcu.constraint_name au.constraint_name AND au.constraint_type …