10G Ethernet Subsystem 基于K7芯片的UDP通讯

news2025/1/15 17:18:01

此文章只用于教程开发笔记,不做过多的废话介绍。

IP核的建立

此选项不进行共享时钟逻辑。优点接口少好操作,缺点只可以建立一个IP核。(我有一篇文章介绍了如何进行多个核互联)传送门:FPGA光纤Aurora_8B_10B_fpga aurora的实际带宽-CSDN博客

//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
axi_10g_ethernet_0 your_instance_name (
  .tx_axis_aresetn(tx_axis_aresetn),                // 复位   。 需拉低一段时间 
  .rx_axis_aresetn(rx_axis_aresetn),                // 复位   。 需拉低一段时间 
  .tx_ifg_delay(tx_ifg_delay),                      // input wire [7 : 0] tx_ifg_delay
  .dclk(dclk),                                      // DRP 时钟
  .txp(txp),                                        // 光口
  .txn(txn),                                        // 光口
  .rxp(rxp),                                        // 光口
  .rxn(rxn),                                        // 光口
  .signal_detect(signal_detect),                    // input wire signal_detect
  .tx_fault(tx_fault),                              // 检测光模块 状态信号
  .tx_disable(tx_disable),                          // 连接光模块的控制
  .pcspma_status(pcspma_status),                    // output wire [7 : 0] pcspma_status
  .sim_speedup_control(sim_speedup_control),        // 使用此信号,可缩短计算时间1 用于仿真
  .rxrecclk_out(rxrecclk_out),                      // 时钟
  .s_axi_aclk(s_axi_aclk),                          // input wire s_axi_aclk
  .s_axi_aresetn(s_axi_aresetn),                    // input wire s_axi_aresetn
  .xgmacint(xgmacint),                              // output wire xgmacint
  .areset_datapathclk_out(areset_datapathclk_out),  // output wire areset_datapathclk_out
  .txusrclk_out(txusrclk_out),                      // output wire txusrclk_out
  .txusrclk2_out(txusrclk2_out),                    // output wire txusrclk2_out
  .gttxreset_out(gttxreset_out),                    // output wire gttxreset_out
  .gtrxreset_out(gtrxreset_out),                    // output wire gtrxreset_out
  .txuserrdy_out(txuserrdy_out),                    // output wire txuserrdy_out
  .coreclk_out(coreclk_out),                        // output wire coreclk_out
  .resetdone_out(resetdone_out),                    // output wire resetdone_out
  .reset_counter_done_out(reset_counter_done_out),  // output wire reset_counter_done_out
  .qplllock_out(qplllock_out),                      // output wire qplllock_out
  .qplloutclk_out(qplloutclk_out),                  // output wire qplloutclk_out
  .qplloutrefclk_out(qplloutrefclk_out),            // output wire qplloutrefclk_out
  .refclk_p(refclk_p),                              // input wire refclk_p
  .refclk_n(refclk_n),                              // input wire refclk_n
  .reset(reset),                                    // input wire reset
  .s_axi_araddr(s_axi_araddr),                      // input wire [10 : 0] s_axi_araddr
  .s_axi_arready(s_axi_arready),                    // output wire s_axi_arready
  .s_axi_arvalid(s_axi_arvalid),                    // input wire s_axi_arvalid
  .s_axi_awaddr(s_axi_awaddr),                      // input wire [10 : 0] s_axi_awaddr
  .s_axi_awready(s_axi_awready),                    // output wire s_axi_awready
  .s_axi_awvalid(s_axi_awvalid),                    // input wire s_axi_awvalid
  .s_axi_bready(s_axi_bready),                      // input wire s_axi_bready
  .s_axi_bresp(s_axi_bresp),                        // output wire [1 : 0] s_axi_bresp
  .s_axi_bvalid(s_axi_bvalid),                      // output wire s_axi_bvalid
  .s_axi_rdata(s_axi_rdata),                        // output wire [31 : 0] s_axi_rdata
  .s_axi_rready(s_axi_rready),                      // input wire s_axi_rready
  .s_axi_rresp(s_axi_rresp),                        // output wire [1 : 0] s_axi_rresp
  .s_axi_rvalid(s_axi_rvalid),                      // output wire s_axi_rvalid
  .s_axi_wdata(s_axi_wdata),                        // input wire [31 : 0] s_axi_wdata
  .s_axi_wready(s_axi_wready),                      // output wire s_axi_wready
  .s_axi_wvalid(s_axi_wvalid),                      // input wire s_axi_wvalid
  //axis_tx数据接口   发送
  .s_axis_tx_tdata(s_axis_tx_tdata),                // input wire [63 : 0] s_axis_tx_tdata
  .s_axis_tx_tkeep(s_axis_tx_tkeep),                // input wire [7 : 0] s_axis_tx_tkeep
  .s_axis_tx_tlast(s_axis_tx_tlast),                // input wire s_axis_tx_tlast
  .s_axis_tx_tready(s_axis_tx_tready),              // output wire s_axis_tx_tready
  .s_axis_tx_tuser(s_axis_tx_tuser),                // input wire [0 : 0] s_axis_tx_tuser
  .s_axis_tx_tvalid(s_axis_tx_tvalid),              // input wire s_axis_tx_tvalid
  .s_axis_pause_tdata(s_axis_pause_tdata),          // input wire [15 : 0] s_axis_pause_tdata
  .s_axis_pause_tvalid(s_axis_pause_tvalid),        // input wire s_axis_pause_tvalid
 //axis_rx数据接口    接收
  .m_axis_rx_tdata(m_axis_rx_tdata),                // output wire [63 : 0] m_axis_rx_tdata
  .m_axis_rx_tkeep(m_axis_rx_tkeep),                // output wire [7 : 0] m_axis_rx_tkeep
  .m_axis_rx_tlast(m_axis_rx_tlast),                // output wire m_axis_rx_tlast
  .m_axis_rx_tuser(m_axis_rx_tuser),                // output wire m_axis_rx_tuser
  .m_axis_rx_tvalid(m_axis_rx_tvalid),              // output wire m_axis_rx_tvalid
  .tx_statistics_valid(tx_statistics_valid),        // 数据有效信号
  .tx_statistics_vector(tx_statistics_vector),      // 状态标志信号
  .rx_statistics_valid(rx_statistics_valid),        // 数据有效信号
  .rx_statistics_vector(rx_statistics_vector)       // 状态标志信号
);

顶层接口定义

module 10G_ethernet(
    input  sys_clk_100m      ,//板卡的系统时钟
    input  refclk_n_0        ,//光口时钟
    input  refclk_p_0        ,
    input  rxn_0             ,//光口接收
    input  rxp_0             ,
    output txp_0             ,//光口发送
    output txn_0             ,
    output led               ,//工作状态指示信号
    output tx_dis             //通道开启信号
    );

功能验证

  需要准备工具:10G网卡一个(PCIE接口)、支持10G的光模块两个、光纤线缆一对。

程序下载完成后,10G网卡灯亮起,证明与10G Ethernet Subsystem 核link成功,这时可查看电脑的网络现实状态。

配置好IP地址后,可使用网络传输助手进行通讯。

Des_ip : c0a900010   发送端主机的IP地址  192.168.0.16

Des_mac :   发送端主机的MAC地址 00-1b-21-c2-5b-d6

Des_port :   源端口号  0800   

Eth_type :   长度类型

Src_ip :a9fe6b02 源ip 开发板ip地址 169.254.107.2

Src_mac :源mac地址 开发板mac地址 00-d0-08-00-00-02

Scr_port :目的端口号 与源端口号保持一致即可

Rx_last_in :表示一个数据包的结束

Rx_user_in:0表示接收的数据包坏的 , 1表示接收的数据包好的

Rx_valid_in :数据有效信号

Fifo_en :数据有效信号

Rx_data_in :数据信号

Rx_fifo_data :数据信号

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

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

相关文章

实现vue elmentUI图片本地上传

实现思路 后端代码 //上传头像PostMapping("/uplaod")public String upload(MultipartFile file) { // System.out.println(file"图片上次");//图片校验if (file.isEmpty()) {return "图片上传失败";}//可以自己加一点校验 例如上传的是不…

HBase 的安装与部署

目录 1 启动 zookeeper2 启动 Hadoop3 HBase 的安装与部署4 HBase 高可用 1 启动 zookeeper [huweihadoop101 ~]$ bin/zk_cluster.sh start2 启动 Hadoop [huweihadoop101 ~]$ bin/hdp_cluster.sh start3 HBase 的安装与部署 (1)将 hbase-2.0.5-bin.tar.…

加速大模型落地:火山引擎向量数据库的实践应用

近两年随着大模型技术的快速发展,图片、视频、自然语言等多模态、非结构化数据的查找需求变大,非结构化数据的量级也远大于结构化数据,传统数据库已经无法满足如此多样化数据的处理需求。向量数据库以其海量的数据存储规模、高效的计算查询能…

修改MonkeyDev默认配置适配Xcode15

上一篇文章介绍了升级Xcode15后,适配MonkeyDev的一些操作,具体操作可以查看:Xcode 15 适配 MonkeyDev。 但是每次新建项目都要去修改那些配置,浪费时间和精力,这篇文章主要介绍如何修改MonkeyDev的默认配置,做到一次修改永久生效。 MonkeyDev的默认安装路径是在/opt/Mo…

智能驾驶规划控制理论学习07-规划算法整体框架

一、解耦合策略 1、路径-速度解耦策略概述 路径-速度解耦指的是将车辆的运动分成路径规划和速度规划两部分,对两个部分分别进行研究。 路径规划: 假设环境是“静态的”,将障碍物投射到参考路径上,并规划一条避开它们的路径&…

004-执行上下文事件循环

执行上下文&事件循环 1、执行上下文2、执行上下文类型3、执行上下文的生命周期4、示例说明5、事件循环机制6、宏任务7、微任务8、同步任务、宏任务、微任务9、代码执行顺序 - 示例 💡 Tips:用于说明 浏览器 对 JavaScript 执行顺序,涉及知…

web学习笔记(二十七)PC端网页特效

目录 1.元素偏移量offset 1.1什么是offset 1.2offset系列常用属性 1.3offset总结 1.4offset 与 style 区别 2.元素可视区client 3.元素滚动scroll 4.总结 4.1三大系列总结 4.2 mouseenter 和mouseover的区别 1.元素偏移量offset 1.1什么是offset offset就是偏移量…

TikTok小店如何批量生成/上传产品视频?

有许多Shopee卖家都会遇到这样的问题:明明产品标题、描述优化了,产品主图也认真做了,但是自己的Shopee店铺还是没转化! 可能是忽略了产品视频。 在Shopee官方的交流沙龙中,Shopee官方讲师提及:“有视频的产品比没有视…

Linux(Centos7)安装Docker 教程

目录 1,卸载旧版本2,安装docker软件包3,设置镜像仓库地址4,安装最新版Docker Engine容器5,启动Docker 要安装Docker Engine,您需要CentOS 7或8的维护版本。不支持或未测试存档版本。 1,卸载旧版本 sudo yum remove do…

2023 最新 IntelliJ IDEA 2023.3 详细配置步骤演示:新入职如何快速配置 IntelliJ IDEA?

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

基于UDP实现的网络聊天室

服务器&#xff1a; #include <myhead.h> struct msg {char type;char name[20];char text[1024]; };int main(int argc, const char *argv[]) {if(argc!3){printf("input error\n");printf("./a.out IP地址 端口号\n");return -1;}//1、创建用于通…

企业级Avatar道具解决方案

美摄科技&#xff0c;作为业界领先的多媒体解决方案提供商&#xff0c;近日推出了一款革命性的Avatar道具解决方案&#xff0c;旨在帮助企业打造独特且高度个性化的数字形象&#xff0c;从而提升企业品牌的吸引力和影响力。 这款解决方案的核心在于其先进的单摄像头Avatar生成…

MYSQL使用mysqldump备份、复原数据库

参考 添加链接描述 1. 备份数据库 C:\Windows\system32>mysqldump -uroot -p test student>C:\student.sql Enter password: ****2. 备份多个数据库 mysqldump -u root -p --databases test mysql>C:\testandmysql.sql3. 备份所有数据库 mysqldump -u root -p -…

R实现热图与网络图组合并显示显著性

大家好&#xff0c;我是带我去滑雪&#xff01; 热图和网络图分别展示了数据的不同方面。热图可用于显示变量之间的相关性或模式&#xff0c;而网络图则可用于显示节点之间的连接关系。通过将它们组合在一起&#xff0c;可以更全面地展示数据之间的关系和结构。下面开始代码实战…

数据结构界的终极幻神----树

目录 一.数的概念和分类 种类 二.重点概念 哈希树: 二叉树的线索化 什么是线索化 为什么要线索化 特殊的查找树 完全二叉树 三.手撕完全二叉树(堆) 重点讲解 向上搜索算法 向下搜索算法 一.数的概念和分类 树&#xff08;tree&#xff09;是包含 n(n≥0) [2] 个节…

机器学习笔记 DeepFakes和换脸技术简述

一、简述 人脸检测一直是 2000 年代初的主要研究课题。差不多二十年后,这个问题基本上得到了解决,并且人脸检测在大多数编程语言中都可以作为库使用。甚至换脸技术也不是什么新鲜事,并且已经存在了好些年了。 早在2016年左右就有基于OpenCV进行面部交换的方式了,主要是基于…

安卓玩机工具推荐----高通芯片9008端口读写分区 备份分区 恢复分区 制作线刷包 工具操作解析

上期解析了下adb端口备份分区的有关操作 安卓玩机工具推荐----ADB状态读写分区 备份分区 恢复分区 查看分区号 工具操作解析 在以往的博文中对于高通芯片机型的分区读写已经分享了很多。相关类似博文 安卓备份分区----手动查询安卓系统分区信息 导出系统分区的一些基本操作 …

【C++】C/C++内存管理详解

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 目录 1. 前言2. C/C内存分布3. C语言中动态内存管理方式4. C中动态内存管理4.1 new/delete操作内置类型4.2 new和delete操作自定义类型 5. operator new与operator delete函数5.1 oper…

【MySQL】not in遇上null的坑

今天遇到一个问题&#xff1a; 1、当 in 内的字段包含 null 的时候&#xff0c;正常过滤&#xff1b; 2、当 not in 内的字段包含 null 的时候&#xff0c;不能正常过滤&#xff0c;即使满足条件&#xff0c;最终结果也为 空。 测试如下&#xff1a; select * from emp e;当…

SoundTouch对音频处理(Android)

SoundTouch对音频处理&#xff08;Android&#xff09; SoundTouch介绍 SoundTouch 是一个用于音频处理的开源库&#xff0c;主要用于改变音频的速度、音调和音量等特征。您可以在项目中使用 SoundTouch 库来实现音频处理的功能&#xff0c;比如变速播放、音高变化、混响效果…