E9—TEMAC IP实现千兆网口UDP传输2023-08-28

news/2024/5/18 12:35:59 标签: fpga开发, UDP, TEMAC, 千兆网口

1.关于IP收费的问题

Tri Mode Ethernet MAC是收费IP,打开IP后,当左下角显示Bought IP license available则IP可用。

2.功能说明

应用搭建的场景是,上位机发送数据,首先发起arp请求,随后下位机给出arp应答响应,上位机get到下位机的mac地址之后,将发送框中的数据打包成udp数据包下发到下位机中,下位机收到udp包,将有效数据保存到fifo中,然后在接收完毕之后,随即发起一次长度与接收长度一致的数据发送操作,在操作无误的情况下,上位机将收到下发的数据。

IP核扮演MAC层的作用,相当于是将AXI_Stream接口接口转换成RGMII接口(或其他物理层接口),起到了衔接用户侧与物理层PHY芯片的作用。上行数据传输时,用户侧按照MAC层的数据帧格式打包成AXI_S接口数据发送给IP核即可;下行数据时,IP核完成数据接收对齐等操作,将MAC层数据帧格式转换成AXI_S接口供用户解析。其时序图如下所示,具体参考PG-051.

与《E1--千兆以太网接口测试应用2022-09-07》相比,把RGMII接口的操作交给了IP核完成,仅此而已。关于原理,开发步骤,调试工具,调试技巧可参看这篇文章,相关链接在文末。

3.IP配置

数据速率支持1G和2.5G,用到的PHY芯片是RTL8211芯片,支持千兆网口,故选择1Gbps;

  1. 物理接口:选择RGMII,这是由硬件决定,具体看使用什么芯片支持哪种接口,当使用GT当作网口通信的phy层时,选择internal。
  2. MAC Speed:Tri speed代表速率可协商,1000Mbps代表千兆网速率,选1000Mbps;
  3. 管理类型:选择AXI-Lite,这里管理包含两种含义,一个是IP核内部寄存器,一个是通过MDIO接口配置phy芯片,通常phy芯片保持默认配置即可,因此可不勾选MDIO接口。

第三页共享逻辑选择in core的方式包含在IP内部,无需手动配置。

下一页是流控选项、帧过滤器选项等高级功能,保持默认配置即可。

4.功能验证

打开网口调试助手,为以太网卡分配固定IP地址192.168.1.102,绑定6001端口,输入对端即FPGA板卡ip地址192.168.1.10,此地址在下位机写死, 当点击发送时,由于此时ARP表中没有192.168.1.10地址的mac地址,因此会自动发出一个ARP的请求,FPGA程序接收后会响应ARP应答,这是在命令提示符中输入arp -a可以查到下位机的mac地址,具备了通信条件。

 

紧接着可以看到,发送的内容被原样返回,说明功能测试成功。E1对应<a class=UDP工程" src="https://img-blog.csdnimg.cn/41fec16baa3742d98dd8032d47019b11.png" /> 

5.注意事项

①例程中端口号是写死的,即上位机端口号为6001,下位机端口号固定为6000但有可能出现6001被其他应用占用的情况,因此实际使用的时候,端口可以改为不固定,即下位机收到哪个端口的信息保存后返回到该端口。

②例程中使能发送模块进行一次发送操作的各个信号源自于接收模块时钟域,这是由于应用场景下这些信号是固定值,但在实际使用时要注意这点。

③用于接收的AXI_Stream接口发送接口的ready信号是要等valid信号拉高它才会被动拉高,只有当ready和valid信号同时拉高,数据才被转发。这一点与标准的AXI接口不同。

④IP核的信号inband_link_status用于输出指示链路连接状态,inband_duplex_status信号用于指示双工的连接状态,这两个信号可用于判断当前硬件电路的连接状态,tx_ifg_delay信号用于指示两个MAC帧之间的间隔,当设置为0的时候,即为以太网要求的最小间隔96。gtx_clk信号为IP核的全局时钟,为125MHz。glbl_rstn为IP全局复位信号,低有效。

⑤当发送数据小于以太网最低字节要求时,会自动补零。前导码和FCS校验字段IP核会自动填写。

6.工程链接

网口调试工具wireshark

网口调试助手netassist

手动ARP应答工程

UDP工程链接

本文对应工程链接

E1--千兆以太网接口测试应用


http://www.niftyadmin.cn/n/4979217.html

相关文章

macos安装zsh

https://www.cnblogs.com/xuLessReigns/p/11005435.html mac下安装autojump brew install autojump 1&#xff0c;安装zsh&#xff0c;执行 sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 2&#xff0c;将zsh设置…

基于HarmonyOS ArkUI实现七夕壁纸轮播

七夕情人节&#xff0c;为了Ta&#xff0c;你打算用什么方式表达爱&#xff1f;是包包、鲜花、美酒、巧克力&#xff0c;还是一封充满爱意的短信&#xff1f;作为程序员&#xff0c;以代码之名&#xff0c;表达爱。本节将演示如何在基于HarmonyOS ArkUI的SwiperController、Ima…

HarmonyOS Codelab 优秀样例——购物应用,体验一次开发多端部署魅力

一. 样例介绍 本篇Codelab基于自适应布局和响应式布局&#xff0c;实现购物应用在手机、折叠屏、平板不同屏幕尺寸设备上按不同设计显示。通过三层工程结构组织代码&#xff0c;实现一次开发&#xff0c;多端部署 。 手机运行效果如图所示&#xff1a; 折叠屏运行效果图&#x…

UDP 广播

一、UDP 通信图解 UDP通信、本地套接字_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/132523536?spm1001.2014.3001.5501 #include <sys/types.h> #include <sys/socket > ssize_t sendto(in…

skywalking agent监控java服务

一、前言 skywalking agent可以监控的服务类型有多种&#xff0c;python、go、java、nodejs服务等都可以监控&#xff0c;现在通过java服务来演示skywalking agent的使用&#xff0c;并且是使用容器的方式实现 二、部署skywalking agent监控 需要注意&#xff0c;skywalking…

C# Windows系统一键关机源代码共享

C# Windows系统一键关机源代码&#xff0c;可移植(复制粘贴)到的自己的项目中 exe可执行文件下载 C# 源码下载 using System; using System.Windows; using System.Windows.Threading;namespace 关机 {/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary&g…

高速公路自动驾驶汽车超车控制方法研究

目录 摘要 ............................................................................................................ I Abstract ...................................................................................................... II 目录 ...............…

编程之道:【性能优化】提升软件效率的原则和方法

在今天的数字化世界中&#xff0c;软件性能对于用户体验和应用程序的成功至关重要。无论是网页加载速度、移动应用的响应时间还是大型服务器的处理能力&#xff0c;性能优化都扮演着关键的角色。本文将介绍性能优化的基本原则和方法&#xff0c;帮助开发人员提升软件效率。 性能…