万兆以太网MAC设计(12)万兆UDP协议栈上板与主机网卡通信

2024-04-30 12:44

本文主要是介绍万兆以太网MAC设计(12)万兆UDP协议栈上板与主机网卡通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、设置IP以及MAC
  • 二、上板效果
    • 2.1、板卡与主机数据回环测试
    • 2.2、板卡满带宽发送数据

一、设置IP以及MAC

顶层模块设置源MAC地址

module XC7Z100_Top#(parameter       P_SRC_MAC = 48'h01_02_03_04_05_06,parameter       P_DST_MAC = 48'hff_ff_ff_ff_ff_ff
)(input           i_sys_clk_p     ,input           i_sys_clk_n     ,input           i_gt_refclk_p   ,input           i_gt_refclk_n   ,input           i_gt_rxp        ,input           i_gt_rxn        ,output          o_gt_txp        ,output          o_gt_txn        ,output          o_tx_disable
);

在UDP协议栈当中设置IP地址和UDP端口。

然后数据进行回环测试和板卡满带宽发数据,主机向板卡发送数据然后板卡向主机返回相同的数据。

UDP_10G_Stack#(.P_SRC_MAC        (P_SRC_MAC                    ),.P_DST_MAC        (P_DST_MAC                    ),.P_SRC_IP_ADDR    ({8'd192,8'd168,8'd100,8'd100} ),.P_DST_IP_ADDR    ({8'd192,8'd168,8'd100,8'd90}),.P_SRC_UDP_PORT   (16'h8080                     ),.P_DST_UDP_PORT   (16'h8080                     ))UDP_10G_Stack_u0(.i_xgmii_clk                (w_xgmii_clk        ),.i_xgmii_rst                (w_xgmii_rst || (!w_block_sync)),.i_xgmii_rxd                (w_xgmii_rxd        ),.i_xgmii_rxc                (w_xgmii_rxc        ),.o_xgmii_txd                (w_xgmii_txd        ),.o_xgmii_txc                (w_xgmii_txc        ),.i_dynamic_src_mac          (48'd0),.i_dynamic_src_mac_valid    (0),.i_dynamic_dst_mac          (48'd0),.i_dynamic_dst_mac_valid    (0),.i_dymanic_src_port         (0),.i_dymanic_src_port_valid   (0),.i_dymanic_dst_port         (0),.i_dymanic_dst_port_valid   (0),.i_dynamic_src_ip           (0),.i_dynamic_src_ip_valid     (0),.i_dynamic_dst_ip           (0),.i_dynamic_dst_ip_valid     (0),.i_arp_active               (0),.i_arp_active_dst_ip        (0),/****user data****/.m_axis_user_data           (wm_axis_user_data  ),.m_axis_user_user           (wm_axis_user_user  ),.m_axis_user_keep           (wm_axis_user_keep  ),.m_axis_user_last           (wm_axis_user_last  ),.m_axis_user_valid          (wm_axis_user_valid ),.s_axis_user_data           (wm_axis_user_data  ),.s_axis_user_user           (wm_axis_user_user  ),.s_axis_user_keep           (wm_axis_user_keep  ),.s_axis_user_last           (wm_axis_user_last  ),.s_axis_user_valid          (wm_axis_user_valid ),.s_axis_user_ready          ( ) 
);

二、上板效果

2.1、板卡与主机数据回环测试

通过网口调试助手发送数据,可以看到数据正确被回环。
在这里插入图片描述
通过wireshark可以看到发送数据过程,首先是主机发送一个ARP请求,然后板卡会返回ARP回复包,然后主机即可获取板卡的MAC地址信息,我们设置的正是01020040506,接下来主机向板卡发送数据,板卡接收到数据后返回给主机,一发一收全部正常。
在这里插入图片描述

2.2、板卡满带宽发送数据

带宽满速率下9.7G左右,可以减少一些打拍逻辑,可以提升一定的速率。
在这里插入图片描述

这篇关于万兆以太网MAC设计(12)万兆UDP协议栈上板与主机网卡通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948893

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅