在FPGA上快速搭建以太网

在本文中,我们将介绍如何在FPGA上快速搭建以太网 (LWIP )。为此,我们将使用 MicroBlaze 作为主 CPU 运行其应用程序。
LWIP 是使用裸机设计以太网的良好起点,在此基础上我们可以轻松调整软件应用程序以提供更详细的应用程序。LWIP Echo 服务器的使用首先使我们能够确定底层硬件设计是否正确。
此设计的核心是 Vivado IP 中的 AXI Ethernet Lite IP 模块(我在该项目中使用Vivado 2023.1)。AXI Ethernet Lite IP 适用于 10 或 100 Mbps 以太网链路。这提供了一个资源很少的以太网接口,对于我们低成本的设备(例如 Artix 7 FPGA)来说是理想的选择。通过简单的以太网接口,设计人员可以使用以太网对最终应用进行命令和控制。
为了验证这一IP,将使用 Arty A7-35T 板。创建项目后,创建框图,从 IP Designer 的 Board 选项卡添加以下 IP
可以使用 Git Repo 中存储的 TCL 脚本重新创建完整的设计。关键设计点包括使用 DDR 时钟输出为除 AXI Ethernet Lite IP 模块(时钟频率为 100 MHz)之外的所有 AXI 网络提供时钟。
DDR 的系统时钟频率为 100 MHz,参考时钟频率为 200 MHz。DDR 接口运行频率为 324.99 MHz,其接口频率为大多数 AXI 接口频率的 1/4 (81.2475MHz)。
除了 AXI Ethernet Lite IP 之外,我们还需要提供 25MHz 参考时钟来配置以太网 Phy。
Vivado 中的设计如下所示。
有了可用的比特流,从 Vivado 导出XSA,并为 Vitis 中新应用项目导入XSA。
以 MicroBlaze 处理器为目标并选择 LWIP Echo Server 应用程序。
创建项目后,可以构建应用程序和平台。请注意,在 Vitis 2023.1 中编译 LWIP 时,xadaptor.c 文件中存在错误,第 388 行有两个状态声明,分别为 16 位和 32 位变量。如果发生这种情况,请注释掉 16 位声明并重新编译设计。
将 Arty A7 板通过网线连接到 PC 后,可以在 Arty A7 板上下载并运行应用程序。
终端将输出 IP 地址并提供发送到端口 7 的所有命令。
为了能够通过 Telnet 连接到 Arty A7,我们需要首先将主机的 IP 地址配置为与 Arty A7 类似。
主机上的 IP 设置正确后,我们可以打开与 Arty Board 的 Telnet 会话并发送要回显的命令。
最好将终端程序设置为执行本地回显并将 CR/LF 附加到消息中。
然后我们可以输入文本并观看它的回显。
今天的历程差不多就这样,这为我们开发以太网应用提供了一个良好的起点,后续我们就可以开发新的以太网项目。
相关文章:
在FPGA上快速搭建以太网
在本文中,我们将介绍如何在FPGA上快速搭建以太网 (LWIP )。为此,我们将使用 MicroBlaze 作为主 CPU 运行其应用程序。 LWIP 是使用裸机设计以太网的良好起点,在此基础上我们可以轻松调整软件应用程序以提供更详细的应用…...
如何防范 AI 盗取你的密码
现如今,随着人工智能(AI)应用的普及和快速迭代,几乎任何人都可以轻而易举地利用AI进行密码破解之类的攻击。这已经引起了业界的担忧。下面,我将围绕着:密码破解究竟意味着什么,基于AI的密码猜测…...
华清远见第六课程作业day3
类 栈 #include <iostream>using namespace std;class Sta{ private:int *data;int top; public:Sta():data(new int(128)){top-1;cout<<"stack::无参构造:"<<endl;}~Sta(){delete data;cout<<"stack::析构函数:"<<this<…...
Rabbitmq配置定义
RabbitMQ 环境变量 RabbitMQ 的环境变量都是以"RABBITMQ_"开头的,可以在Shell 环境中设置,也可以在配置文件中定义。默认的配置文件如下: ## /etc/rabbitmq/rabbitmq-env.conf 定义配置文件: /va/lib/rabbitmq/ 的目…...
2023年数模国赛时间分配
2023年数模国赛时间分配 写在前面赛前准备第一天(9.7 18:00发布题目)第二天(9.8)第三天(9.9)第四天(9.10 20:00提交)总结 写在前面 国赛马上就要开始啦 今年的比赛时间是9月7日&…...
kubernetes(K8S)笔记
文章目录 大佬博客简介K8SDocker VS DockerDockerK8S简介K8S配合docker相比较单纯使用docker 大佬博客 Kubernetes(通常缩写为K8s)是一个用于自动化容器化应用程序部署、管理和扩展的开源容器编排平台。它的构造非常复杂,由多个核心组件和附加…...
vue 部署到本机IIS 部署 SPA 应用
安装 URL Rewrite Works With: IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10 URL Rewrite : The Official Microsoft IIS Site 目前电脑IIS是6版本的,以下的方法不太合适操作。目前用Nginx部署,够用了。 nginx配置参考: uni-app 前面项目&am…...
面试那些事——Java全栈
今年年初因为个人的精神状态和职业方向辞职休息了一段时间,最近重新找了一份开发的工作,还是在太原,在这里分享一下自己的一些面试经验。 面试,面的是什么 我们要知道,目标的就职地行业的需求是什么,目标的…...
LINUX 文件基本管理
一、文件类型和根目录结构 1、文件类型 可以通过 ls -l 或者 ll来查看文件类型 可以根据显示,查看第一个字符,就表示文件类型。 - 字符:普通文件,类似于Windows的记事本。 d 字符:目录文件,类似于Wind…...
一、认识GitHub项目 —— TinyWebServer
认识GitHub项目 —— TinyWebServer 一、前言 这个项目是Linux下C轻量级Web服务器。几乎是想从事C服务器开发方向的同学的必备初始项目了。属于那种,“烂大街”,但是你又不能不会的项目。 对这个项目笔者打算多分几章讲解,帮助刚用GitHub&a…...
66.C++多态与虚函数
目录 1.什么是多态 2.多态的分类 3.对象转型 3.1 向上转型: 3.2 向下转型: 4.虚函数 1.什么是多态 生活中的多态,是指的客观的事物在人脑中的主观体现。例如,在路上看到⼀只哈士奇,你可以看做是哈士奇…...
【ICer的脚本练习】通过perl脚本来检查仿真log的结果
系列的目录说明请见:ICer的脚本练习专栏介绍与全流程目录_尼德兰的喵的博客-CSDN博客 前言 这是一个非常简单的perl脚本示例,展示一下perl语言“极简”的编码习惯。perl是我脚本入门的语言,一度也是最擅长的,但是因为python的强势现在我基本不写perl了。上一个大的perl脚本…...
创邻科技图数据库课程走进一流高校
《图数据库原理和实践》 正式开课! 最近,浙江大学计算机学院新开了一门名为 《图数据库原理和实践》 的新课程,该课程由创邻科技和浙江大学联合推出,吸引了许多学生踊跃参与! 曾为浙大学子的创邻科技CTO周研博士作为…...
RabbtiMQ的安装与在Springboot中的使用!!!
一、安装Erlang与Rabbitmq 安装教程本教程是在centos8下试验的,其实linux系统的都差不多RabbitMQ官方:Messaging that just works — RabbitMQRabbitMQ是开源AMQP实现,服务器端用Erlang语言编写,Python、Ruby、 NET、Java、JMS、c…...
【可定制、转换时间戳】解析nc文件,并保存为csv文件
解析nc文件,并保存为csv文件 写在最前面解析nc文件(代码汇总放最后面)读取nc文件获取气象文件中所有变量解析时间解析部分代码汇总 写入csv文件 写在最前面 愿称之为:支持私人订制、非常完美的版本 参考: 解析部分参…...
介绍串行和并行两种通信方式
前言 参考文章: 串行和并行- CSDN搜索 并行传输和串行传输的区别_金陵大掌柜的博客-CSDN博客 串行和并行介绍 (1)串行和并行是计算机领域中两个重要的概念。串行是指在计算机中,任务按照顺序一个一个执行,每个任务执行…...
优化爬虫效率:利用HTTP代理进行并发请求
网络爬虫作为一种自动化数据采集工具,广泛应用于数据挖掘、信息监测等领域。然而,随着互联网的发展和网站的增多,单个爬虫往往无法满足大规模数据采集的需求。为了提高爬虫的效率和性能,我们需要寻找优化方法。本文将介绍一种利用…...
关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径
问题 关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径 解决方法: shell 脚本命令:(配置自定义缓存路径 java-Djava.io.tmpdir ) tmp…...
Android HAL - hidl-gen
1.hidl-gen的使用 hidl-gen 编译器会将 .hal 文件编译成一组 .h 和 .cpp 文件,这些 自动生成的文件用于编译客户端 / 服务端实现链接到的共享库,同 时也可以生成 Android.bp 编译文件。 1.1 生成的文件 HIDL 软件包中自动生成的文件会关联到与该软件…...
CGAL 数值类型
文章目录 一、简介二、内置数值类型三、CGAL提供的数值类型四、GMP提供的数值类型五、LEDA提供的数值类型六、CORE提供的数值类型七、区间运算参考资料一、简介 数字类型必须满足一定的语法和语义要求,这样它们才能在CGAL代码中成功使用。一般来说,它们被认为是一个代数结构概…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
