文章目录
前言
经过前面章节的理论讲解和模块设计,相信大家已经对以太网传输以及如何实现以太网通信有了一定的了解。为了验证前面章节的内容,我们将进行以太网回环案例。通过判断回环数据是否一致,对前面章节内容和设计的模块进行验证。
提示:任何文章不要过度深思!万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」 ;不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人 。怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」
心得体会
(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 <